vc++ 中 如果用户单击一个按钮程序收到一个WM_COMMAND消息 请问怎么判断用户是单击还是双击?怎样判断是按下还是放开?
解决方案 »
- MFC图像裁剪
- 一个关于MFC中的edit控件的问题
- 工程exe文件异常关闭怎么回事,Temp提示如下
- 请问有人遇到过这样的情况么?在mfc中嵌入matlab绘图窗口成功,但是无法刷新。。。
- windows文件目录系统的组织结构是怎样的,同级文件之间是怎样联系的,上下级目录文件之间的关系又是怎样确定的呢
- win32下用socket写的一个udp服务器,为什么会1%左右的客户端隔段时间后就会连不上呢
- 请问从远程服务器上查询回来的ADO格式的XML如果转换成EXCEL?
- 初级问题: 局部类中为什么不能有静态数据成员。谁能告诉我原因阿?
- 有没有同时输入时间和日期的控件
- 怎么收到用户按过button
- 为什么我用Invalidate()函数之后,屏幕狂闪个不停?
- ActiveX Control Test Container是怎么做的啊?
怎么是WM_COMMAND消息阿??如果要获得单击还是双击?怎样判断是按下还是放开?这些消息可以派生一个按钮类,响应这些消息阿
不过有必要判断么,WM_COMMAND一般是放开后发送的
没有包含这些信息
if(lParam != 0) //控件的Notify
{
HWND btn = (HWND)lParam;
int id = wParam & 0xffff;
int code = wParam >> 16;
//if(id != 按钮的id)return;
if(code == BN_CLICKED)
{
TRACE("Button clicked\n");
}
else if(code == BN_DOUBLECLICKED)
{
TRACE("Button dblclk\n");
}
}
The high-order word specifies the notification code if the message is from a control. 高16位是控件的通知代码,wParam右移16位,判断即可。如楼上所示
按钮通知码标识符
值
BN_CLICKED
0
BN_PAINT
1
BN_HILITE or BN_PUSHED
2
BN_UNHILITE or BN_UNPUSHED
3
BN_DISABLE
4
BN_DOUBLECLICKED or BN_DBLCLK
5
BN_SETFOCUS
6
BN_KILLFOCUS
7