谢谢马兄! 非常关注如何成功地替换消息。如果不是处于子类化状态,这些消息是可以达到要求,不知道为什么当处于子类化状态,这些消息就失灵了?[em06][em06]
If uMsg = WM_NCLBUTTONUP And wParam = HTMAXBUTTON Then '如果用户在非客户区左键单击了窗体系统菜单的“最大化”按钮
这句代码并不能实现要求,而是要将 WM_NCLBUTTONUP 改成WM_NCLBUTTONDOWN 才行。
另外,对于子类化的应用,最关键的是了解 windows 的消息机制,而且还要了解某一消息的两个附加消息 wParam 、 lParam 。就 WM_NCLBUTTONDOWN 这个消息而言,其 wParam 的值不同,所发送的消息也是不同的(如下所示),这些消息我是通过 Debug.Print "hWnd=" & hwnd, "Msg=" & uMsg, "wP=" & wParam, "lP=" & lParam 来获得的,上网也很难找到很具体附加消息(wParam 、 lParam)的意思。
If uMsg = WM_NCLBUTTONDOWN And wParam = 20 Then '如果用户在非客户区左键单击了窗体系统菜单的“关闭”按钮
If uMsg = WM_NCLBUTTONDOWN And wParam = HTMINBUTTON Then '如果用户在非客户区左键单击了窗体系统菜单的“最小化”按钮
If uMsg = WM_NCLBUTTONDOWN And wParam = HTMAXBUTTON Then '如果用户在非客户区左键单击了窗体系统菜单的“最大化”按钮
If uMsg = WM_NCLBUTTONDOWN And wParam = HTCAPTION Then '如果用户在非客户区左键单击了标题栏
马兄正在编写中的子类化应用的专题文章中,请您能着重剖析一些常用的消息及其两个附加消息的意思。我只找到了windows 消息大全,找不到 附加消息(wParam 、 lParam)的意思。
[此贴子已经被作者于2005-11-11 11:19:12编辑过] |