C++ 使用C+;在编辑/文本框控件上捕获特殊的单击事件+/WinAPI/MFC

C++ 使用C+;在编辑/文本框控件上捕获特殊的单击事件+/WinAPI/MFC,c++,winapi,textbox,C++,Winapi,Textbox,我在Windows平台上用C++/MFC编码(使用MS VS2008)。我有一个设置为只读的编辑控件(基本上是一个文本框)。该控件显示一些基本信息。我想在我的应用程序中添加一个“复活节彩蛋”,即当用户Ctrl+Shift单击此编辑控件时,它必须显示一些其他信息。问题是如何使用MFC/本机WinAPI捕获此类单击事件?最直接的方法是使用和捕获事件对编辑控件进行子类化。然后,您需要调用或等效程序来检查是否按下了特定键,并显示消息。无需进行子类化。接住 默认情况下,对话框中的子窗口具有WS\u EX\

我在Windows平台上用C++/MFC编码(使用MS VS2008)。我有一个设置为只读的编辑控件(基本上是一个文本框)。该控件显示一些基本信息。我想在我的应用程序中添加一个“复活节彩蛋”,即当用户Ctrl+Shift单击此编辑控件时,它必须显示一些其他信息。问题是如何使用MFC/本机WinAPI捕获此类单击事件?

最直接的方法是使用和捕获事件对编辑控件进行子类化。然后,您需要调用或等效程序来检查是否按下了特定键,并显示消息。

无需进行子类化。接住

默认情况下,对话框中的子窗口具有
WS\u EX\u 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);
    ...

顺便说一句,我希望不会太晚:不客气!顺便说一句,我忘了说您可以捕获
WM_LBUTTONDOWN
事件并仍然检查键状态。如果您阅读了本文的参数部分,它说您可以简单地读取
wParam
的值来获取密钥状态。
case WM_INITDIALOG: {
    HWND hChildWnd = GetDlgItem(hWnd, IDC_CHILD);
    LONG style = GetWindowLong(hChildWnd, GWL_EXSTYLE);
    style &= ~WS_EX_NOPARENTNOTIFY;
    SetWindowLong(hChildWnd, GWL_EXSTYLE, style);
    ...