win32中有鼠标单击这一消息么??? 我想让当鼠标左键单击(按下并弹起)一个按钮时,执行某个事件,若鼠标左键只是按下,不执行任何事情.除了使用bool变量,有什么办法?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 按钮本身具备这个能力。响应其Click事件。对话框程序资源编辑模式下直接双击按钮IDE自动给你创建响应函数。 我的标题是win32下。.不是MFC 都不行.看来只能在 WM_LBUTTONDOWN和WM_LBUTTONUP中设两个全局布尔变量来解决了 WM_COMMAND WM_COMMAND & WM_SYSCOMMAND 对于菜单、加速键来说,点击后Windows会都会向它们所属的窗体发送WM_COMMAND消息。除了菜单、加速键,一些子窗体也会引发这些消息。例如对话框中的按钮或者工具栏中按钮(控件发通知消息给父窗体)。WM_COMMAND消息中有两个参数,wparam、lparam,定义如下: wParam 高两个字节 通知码 wParam 低两字节 命令ID lParam 发送命令消息的子窗体句柄。 对于菜单和加速键来说,lParam为0,只有控件此项才非0。命令ID也就是资源脚本中定义的菜单项的命令ID或者加速键的命令ID;菜单的通知码为0;加速键的通知码为1。 对于Windows菜单中菜单项和加速键,点击后,Windows会向所属的窗体发送WM_SYSCOMMAND,而不是WM_COMMAND消息。注意,WINDOWS菜单是系统菜单,也就是在标题栏点击鼠标左键的时候弹出的菜单。我们可以捕获WM_CREATE消息,加入自己的操作:GetSysMenu获取系统菜单句柄,然后对系统菜单进行操作,并且捕获添加菜单项(根据菜单命令ID)ID对应的WM_SYSCOMMAND消息进行处理。修改系统默认的菜单行为。例如:#define IDM_SELMENU 0x4444else if ( uMsg == WM_CREATE) { HMENU hMenu = GetSystemMenu(hWnd,0); AppendMenu(hMenu,0,IDM_SELMENU,"Show Hello"); return DefWindowProc(hWnd,uMsg,wParam,lParam); } else if ( uMsg == WM_SYSCOMMAND) // { if ( wParam << 16 >> 16 == 0x4444 ) { MessageBox(NULL,"SysMenu:Show Hello MenuItem", "sysmenu info",MB_OK); return 0; } return DefWindowProc(hWnd,uMsg,wParam,lParam); } 对于WM_SYSCOMMAND中如果是系统菜单的消息,我们没哟修改的,必须要交给DefWindowProc来处理,并且将返回值返回给Windows,不然你会发现不能拖动窗体、改变大小、最大最小化操作等。因为你如果不交给DefWindowProc处理,相当于屏蔽了SC_RESTORE SC_MOVE SC_MAXIMIZE SC_MINIMIZE SC_CLOSE等等操作了。这些命令都是通过Windows投递WM_SYSCOMMAND 消息,在DefWindowProc中进行处理的。 没有这样的消息。如果不考虑鼠标按下到释放的时间,或者说是不是双击的话,只需要处理WM_LBUTTONUP消息就可以了。 如何在mfc中调用ComponentArt Data Visualization??? 如何让自己的程序能够连接自己写的服务器? 这类变量应该放在哪合适? 如何获得数据集的行数 使用HWND的奇怪问题 问题出错 关于工具栏显示的菜鸟问题 如何调整CListCtrl中每个item所占的长度以至全部内容可见? 关于数学运算的问题? 在VC中如何将缓存清零? 数据挖掘EM算法 MFC Document-View的文件关联
对话框程序资源编辑模式下直接双击按钮IDE自动给你创建响应函数。
我的标题是win32下。.不是MFC
WM_COMMAND & WM_SYSCOMMAND
对于菜单、加速键来说,点击后Windows会都会向它们所属的窗体发送WM_COMMAND消息。除了菜单、加速键,一些子窗体也会引发这些消息。例如对话框中的按钮或者工具栏中按钮(控件发通知消息给父窗体)。WM_COMMAND消息中有两个参数,wparam、lparam,定义如下: wParam 高两个字节 通知码 wParam 低两字节 命令ID lParam 发送命令消息的子窗体句柄。 对于菜单和加速键来说,lParam为0,只有控件此项才非0。命令ID也就是资源脚本中定义的菜单项的命令ID或者加速键的命令ID;菜单的通知码为0;加速键的通知码为1。 对于Windows菜单中菜单项和加速键,点击后,Windows会向所属的窗体发送WM_SYSCOMMAND,而不是WM_COMMAND消息。注意,WINDOWS菜单是系统菜单,也就是在标题栏点击鼠标左键的时候弹出的菜单。我们可以捕获WM_CREATE消息,加入自己的操作:GetSysMenu获取系统菜单句柄,然后对系统菜单进行操作,并且捕获添加菜单项(根据菜单命令ID)ID对应的WM_SYSCOMMAND消息进行处理。修改系统默认的菜单行为。例如:#define IDM_SELMENU 0x4444else if ( uMsg == WM_CREATE) { HMENU hMenu = GetSystemMenu(hWnd,0); AppendMenu(hMenu,0,IDM_SELMENU,"Show Hello"); return DefWindowProc(hWnd,uMsg,wParam,lParam); } else if ( uMsg == WM_SYSCOMMAND) // { if ( wParam << 16 >> 16 == 0x4444 ) { MessageBox(NULL,"SysMenu:Show Hello MenuItem", "sysmenu info",MB_OK); return 0; } return DefWindowProc(hWnd,uMsg,wParam,lParam); } 对于WM_SYSCOMMAND中如果是系统菜单的消息,我们没哟修改的,必须要交给DefWindowProc来处理,并且将返回值返回给Windows,不然你会发现不能拖动窗体、改变大小、最大最小化操作等。因为你如果不交给DefWindowProc处理,相当于屏蔽了SC_RESTORE SC_MOVE SC_MAXIMIZE SC_MINIMIZE SC_CLOSE等等操作了。这些命令都是通过Windows投递WM_SYSCOMMAND 消息,在DefWindowProc中进行处理的。
如果不考虑鼠标按下到释放的时间,或者说是不是双击的话,只需要处理WM_LBUTTONUP消息就可以了。