计算机法真的很快,我2年前的电脑现在就已经不怎么行了,连一个杀毒软件都算大型。。。虽然 Charles Petzold说,鼠标不是必需的。不过现在看来,没有鼠标的电脑是没有办法想象的。可能一个程序不知此键盘没有什么人会抱怨,不过不支持鼠标就是天大的罪过了。毕竟,鼠标的出现让电脑易用性大幅度提高,而计算机的普及才是真正推动计算机发展的动力吧。。。。不然MONEY哪里来呀。。
所以,在事实上,检测鼠标是否存在的意义并不是很大,不过既然有这个函数,那就记录把:





除了检测外,还可以制定鼠标的图标,在建立窗口的时候可以指定:

显示区域鼠标消息
和其他的消息相同,鼠标消息也是从消息循环中取得的,它们的消息有:
键 |
按下 |
释放 |
按下(双键) |
左 |
WM_LBUTTONDOWN |
WM_LBUTTONUP |
WM_LBUTTONDBLCLK |
中 |
WM_MBUTTONDOWN |
WM_MBUTTONUP |
WM_MBUTTONDBLCLK |
右 |
WM_RBUTTONDOWN |
WM_RBUTTONUP |
WM_RBUTTONDBLCLK |
使用方法也和其他的相同,其中,鼠标的坐标由lParam传递


同时,可以通过位与(这个。。。我没学好,忘记叫什么了)的方式获得是否在点击的同时按下了SHIFT等按键:
MK_LBUTTON |
按下左键 |
MK_MBUTTON |
按下中键 |
MK_RBUTTON |
按下右键 |
MK_SHIFT |
按下Shift键 |
MK_CONTROL |
按下Ctrl键 |
例如,如果收到了WM_LBUTTONDOWN消息,而且值
wparam & MK_SHIFT
是TRUE(非0),您就知道当左键按下时也按下了Shift键。
处理双键的时候,需要在窗口样式中指定支持:

既然知道了具体的怎么实现,那么就写一个例子吧,书上的例子除了用到了鼠标消息外还有其他的一些知识。我比较懒,就直接写了个单单关于鼠标消息的例子了:)
其他部分都是自动生成的,就贴出消息处理那部分好了,主要要提前定义变量就是了。















