全球旧事资料 分类
执行特定操作的基本方法例如当用户点击一个按钮移动鼠标或是向文本框中键入文字时一条消息就会被发送给你的窗体r
所有发送的消息都有四个参数一个窗口句柄hw
d一个消息编号msg还有两个32位长度Lo
g的参数r
hw
d即要接受消息的一个窗口的句柄msg即消息的标识符编号该标识符是指引发消息的动作类型如移动鼠标另外两个参数是该消息的附加参数例如当鼠标移动时光标的当前位置r
但是当消息发送给你时你为什么看不到呢就象有人在偷你的信一样请先别恼火让我告诉你r
小偷其实是VisualBasic但它并没有偷走你的信而是在阅读了之后挑出重要的以一种好的方式告诉你这种方式就是你代码中的事件Eve
tr
这样当用户在你的窗体上移动鼠标时Wi
dows会发送一条WM_MOUSEMOVE消息给你的窗口VB得到这条消息以及它的参数并运行你在事件MouseMove中的代码同时VB会把这条消息的第二个32位数它包含了xy坐标单位为像素Pixel每个位16位转换为两个单精度数单位为缇Twipr
现在如果你需要光标坐标的像素表示然而VB已经把它转换成了缇因此你需要重新把它转换为以像素为单位在这里Wi
dows给了你所需要的但VB好意地进行了转换而使你不得不重新转换你可能会问我难道不能自己接收消息吗答案是肯定的你可以使用一种叫做子类处理Subclass的方法但你除非必须否则最好不要使用因为这与VB的安全程序设计有一点点的违背注子类处理确实有很大的风险但如果使用得当是很有用处的不过有一点一定要注意即千万不要使用VB的断点调试功能这可能会导致VB崩溃r
需要补充说明的是你可以发送消息给你自己的窗口或其他的窗口只需调用Se
dMessage或PostMessageSe
dMessage会使接受到消息的窗口立刻处理消息而PostMessage是把消息发送到一个称为消息队列的队列中去等候处理它将会在该消息处理完后返回例如有些延迟你必须制定接受消息的窗口的句柄欲发送消息的编号所有的消息的编号均为常量你可以通过APITextViewer查得以及两个32位的参数r
在VB中用API实现多媒体主要是调用Wi
dows的mmsystemdll库。以下为调用API的声明这些代码放在程序的声明部分中:r
1 播放CD和AVI所需要的声明。r
  DeclareFu
ctio
mciSe
dStri
gLib
好听全球资料 返回顶部