16,472
社区成员
发帖
与我相关
我的任务
分享
case
WM_LBUTTONUP:
if (bDown) {
SendMessage(GetParent(hWnd), WM_COMMAND, MAKEWPARAM(GetDlgCtrlID(hWnd), BN_CLICKED), (LPARAM)hWnd);
bDown = FALSE;
return 0;
}
明白了,这正是你说的:
鼠标左键点击按钮,发出的信息首先是WM_LBUTTONDOWN,然后WM_LBUTTONUP才向父窗口发WM_COMMAND
那么我们需要再写一个函数,响应WM_COMMAND消息了。
不过,如果功能不复杂,不发送WM_COMMAND和另写函数响应,直接在这里写代码处理,可以吧?
case WM_LBUTTONDBLCLK:
case WM_LBUTTONDOWN:
bDown = TRUE;
return 0;
case WM_LBUTTONUP:
if (bDown)
{
SendMessage(GetParent(hWnd), WM_COMMAND, MAKEWPARAM(GetDlgCtrlID(hWnd), BN_CLICKED), (LPARAM)hWnd);
bDown = FALSE;
return 0;
}
break;
case WM_KEYUP:
if(wParam==VK_SPACE)
{
SendMessage(GetParent(hWnd), WM_COMMAND, MAKEWPARAM(GetDlgCtrlID(hWnd), BN_CLICKED), (LPARAM)hWnd);
return 0;
}
break;