Visual FoxPro 包含 HWND ActiveX 控件 (Foxhwnd.ocx),可以将该控件添加到应用程序中并与之一起发布。需要利用 Visual FoxPro 的 OLE 容器控件来将ActiveX 控件添加到应用程序的表单中。
HWND ActiveX 控件提供了一个窗口,其他的 ActiveX 控件(例如 Microsoft Multimedia ActiveX 控件)可在其中显示图象。与 Visual FoxPro 的 Image 控件不同,HWND ActiveX 控件可以用来显示图标和 Windows 元文件。
下表列出了在 HWND ActiveX 控件中可用的属性、事件和方法程序。
属性、事件或方法程序 | 说明 |
Appearance 属性 | 指定 HWND 控件的显示方式。在设计和运行时刻均可用。
Appearance 属性可以有以下取值: 0 - 平面(默认值)。 1 - 三维。 |
BackColor 属性 | 指定 HWND 控件的背景色。在设计和运行时刻均可用。
BackColor 属性的值是一个代表颜色的数字。有关 BackColor 属性可取颜色数值的详细内容,请参阅 Visual FoxPro 帮助的“BackColor 和 ForeColor 属性”主题。 |
BorderStyle 属性 | 指定 HWND 控件的边框样式。在设计和运行时刻均可用。
BorderStyle 属性可以有如下取值: 0 - 无边框(默认值)。 1 – 单线边框。 |
Picture 属性 | 指定 HWND 控件中所显示图象的图片对象引用。在设计和运行时刻均可用。
使用LOADPICTURE( ) 函数生成一个位图、图标或 Windows 元文件对象。 |
HWnd 属性 | 包含 HWND 控件窗口的句柄。在运行时刻只读。 |
Click 事件 | 当鼠标指针位于 HWND 控件上时,如果用户按下再释放鼠标左键,则本事件发生。 |
DblClick 事件 | 当鼠标指针位于 HWND 控件上时,如果用户快速地连续两次按下再释放鼠标左键,则本事件发生。 |
KeyDown 事件 | 当焦点位于 HWND 控件时,如果用户按下一个键,则本事件发生。传递给KeyDown 事件的参数是 Keycode 和 shift。
Keycode 包含用于识别所按下键的数值。有关特殊键和组合键代码的列表,请参阅 INKEY( ) 函数。 如果 Shift 键、Ctrl 键或 Alt 键被按下,则参数 Shift 中相应的位被置位。该参数的值是各位值之和:位 0 对应 Shift 键,位 1 对应 Ctrl 键,位 2 对应 Alt 键。这些位分别相当于值 1、2 和 4。该参数指出了这三个键的状态。对该参数中三个位的部分置位、全部置位或不置位,分别表示部分、全部或没有按下这些键。例如,如果 CTRL 和 ALT 键都被按下,则 shift 的值为 6。 |
KeyPress 事件 | 当焦点位于 HWND 控件时,如果用户按下再释放一个键,则本事件发生。传递给 KeyPress 事件的参数是 keyascii。
Keyascii 包含的数值指出哪个键被按下再释放。要获得特殊键和组合键代码的列表,请参阅 INKEY( ) 函数。 |
KeyUp 事件 | 当焦点位于 HWND 控件时,如果用户释放一个键,则本事件发生。
传递给 KeyUp 事件的参数是 keycode 和 shift。 Keycode 包含的数值指出了哪个键被释放。有关特殊键和组合键代码的列表,请参阅 INKEY( ) 函数。 如果 Shift 键、Ctrl 键或 Alt 键被按下,则参数 Shift 中相应的位被置位。该参数的值是各位值之和:位 0 对应 Shift 键,位 1 对应 Ctrl 键,位 2 对应 Alt 键。这些位分别相当于值 1、2 和 4。该参数指出了这三个键的状态。对该参数中三个位的部分置位、全部置位或不置位,分别表示部分、全部或没有按下这些键。例如,如果 CTRL 和 ALT 键都被按下,则 shift 的值为 6。 |
MouseDown 事件 | 当鼠标指针位于 HWND 控件上时,如果用户按下鼠标的一个键,则本事件发生。
传递给 MouseDown 事件的四个参数是 button,shift,x 和 y。 Button 包含的数值指出触发本事件时按下的是哪个鼠标键:1(左键),2(右键)或 4(中键)。 Shift 包含的数值指示了当由 Button 参数指出的鼠标键被按下时,Ctrl 键、Alt 键 和 Shift 键的状态。 如果 Shift 键、Ctrl 键或 Alt 键被按下,则参数 Shift 中相应的位被置位。该参数的值是各位值之和:位 0 对应 Shift 键,位 1 对应 Ctrl 键,位 2 对应 Alt 键。这些位分别相当于值 1、2和 4。该参数指出了这三个键的状态。对该参数中三个位的部分置位、全部置位或不置位,分别表示部分、全部或没有按下这些键。例如,如果 CTRL 和 ALT 键都被按下,则 shift 的值为 6。 x,y 包含了鼠标指针当前在表单中的水平位置 (x) 和垂直位置 (y)。这两个坐标总是根据表单的指定坐标系,以及由 ScaleMode 属性设置所指定的度量单位来表示。 |
MouseMove 事件 | 当鼠标指针位于 HWND 控件上时,如果用户移动了鼠标,则本事件发生。当鼠标指针在 HWND 控件上移动时,将不断触发 MouseMove 事件。
传递给 MouseMove 事件的四个参数是 button、shift、x 和 y。 Button 包含的数值以和的方式指出了鼠标各个键的状态:1(左键)、2(右键)或 4(中键)。 如果 Shift 键、Ctrl 键或 Alt 键被按下,则参数 Shift 中相应的位被置位。该参数的值是各位值之和:位 0 对应 Shift 键,位 1 对应 Ctrl 键,位 2 对应 Alt 键。这些位分别相当于值 1、2 和 4。该参数指出了这三个键的状态。对该参数中三个位的部分置位、全部置位或不置位,分别表示部分、全部或没有按下这些键。例如,如果 CTRL 和 ALT 键都被按下,则 shift 的值为 6。 x,y 包含了鼠标指针当前在表单中的水平位置 (x) 和垂直位置 (y)。这两个坐标总是根据表单的指定坐标系,以及由 ScaleMode 属性设置所指定的度量单位来表示。 |
MouseUp 事件 | 当鼠标指针位于 HWND 控件上时,如果用户释放鼠标的键,则本事件发生。
传递给 MouseMove 事件的四个参数是 button、shift、x 和 y。 Button 包含的数值以和的方式指出了鼠标各个键的状态:1(左键)、2(右键)或 4(中键)。 Shift 包含的数值指出当由 Button 声明的鼠标键被释放时 CTRL、ALT 和 SHIFT 三键的状态。 如果 Shift 键、Ctrl 键或 Alt 键被按下,则参数 Shift 中相应的位被置位。该参数的值是各位值之和:位 0 对应 Shift 键,位 1 对应 Ctrl 键,位 2 对应 Alt 键。这些位分别相当于值 1、2和 4。该参数指出了这三个键的状态。对该参数中三个位的部分置位、全部置位或不置位,分别表示部分、全部或没有按下这些键。例如,如果 CTRL 和 ALT 键都被按下,则 shift 的值为 6。 x,y 包含了鼠标指针当前在表单中的水平位置 (x) 和垂直位置 (y)。这两个坐标总是根据表单的指定坐标系,以及由 ScaleMode 属性设置所指定的度量单位来表示。 |
Paint 事件 | 当需要重绘 HWND 控件时,本事件发生。通常在 Paint 事件的代码中执行的是RestoreDisplay 方法程序。 |
RestoreDisplay 方法程序 | 还原由 SaveDisplay 方法程序保存到内存中的图象。 |
SaveDisplay 方法程序 | 将当前显示的图象保存到内存中。
请注意,在执行 SaveDisplay 方法程序时如果一个 AlwaysOnTop 属性设置为真(.T.)的工具条或表单覆盖在 HWND 控件上时,则该工具条或表单的图象将与 HWND 控件的图象一同被保存。 |
有关在应用程序中添加 ActiveX 控件的详细内容,请参阅《程序员指南》的第十六章“添加 OLE”。