我在 Windows 平台上使用 C++/MFC 进行编码(使用 MS VS2008。)我有这个设置为只读的编辑控件(基本上是一个文本框)。控件显示一些基本信息。我想在我的应用程序中添加一个“复活节彩蛋”,即当用户 Ctrl+Shift 单击此编辑控件时,它必须显示一些附加信息。问题是如何使用 MFC/本机 WinAPI 捕获这样的点击事件?
问问题
1067 次
2 回答
1
最直接的方法是使用SetWindowLong
和捕获WM_LBUTTONDOWN
事件对编辑控件进行子类化。然后,您需要调用GetAsyncKeyState
或等效检查特定键是否被按下,并显示消息。
于 2012-04-18T01:30:17.157 回答
0
无需进行子类化。抓住WM_PARENTNOTIFY
case WM_PARENTNOTIFY: {
if (LOWORD(wParam) == WM_LBUTTONDOWN)
printf("x: %i, y: %i\n", LOWORD(lParam), HIWORD(lParam));
}
break;
默认情况下,对话框中的子窗口具有WS_EX_NOPARENTNOTIFY
样式,因此不会通知父窗口。您应该删除此样式。
case WM_INITDIALOG: {
HWND hChildWnd = GetDlgItem(hWnd, IDC_CHILD);
LONG style = GetWindowLong(hChildWnd, GWL_EXSTYLE);
style &= ~WS_EX_NOPARENTNOTIFY;
SetWindowLong(hChildWnd, GWL_EXSTYLE, style);
...
PS我希望还不算太晚:D
于 2020-08-01T18:12:23.920 回答