Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 检测编辑控件中的键入_C++_Windows_Winapi_Api - Fatal编程技术网

C++ 检测编辑控件中的键入

C++ 检测编辑控件中的键入,c++,windows,winapi,api,C++,Windows,Winapi,Api,编辑:无需担心!下面的代码不起作用,但当我从网站上复制并粘贴它时,效果很好 我尝试了网站告诉我的,但没有成功。不管怎么说,可能是在做一些很无聊的事情 int editid = 5654; HWND edit; //int WINAPI wWinMain WNDCLASS wc; wc.lpfnWndProc = WindowProc; wc.lpszClassName = L"class name"; HWND hwnd = CreateWindowEx( 0,

编辑:无需担心!下面的代码不起作用,但当我从网站上复制并粘贴它时,效果很好

我尝试了网站告诉我的,但没有成功。不管怎么说,可能是在做一些很无聊的事情

int editid = 5654;
HWND edit;

//int WINAPI wWinMain
WNDCLASS wc;
wc.lpfnWndProc = WindowProc;
wc.lpszClassName = L"class name";




    HWND hwnd = CreateWindowEx(
    0,
    L"Class name",
    L"Copy N Paste",
    WS_OVERLAPPEDWINDOW | WS_THICKFRAME | WS_VISIBLE,
    CW_USEDEFAULT, 10,
    885, 484,
    NULL,
    NULL,
    hInstance,
    NULL
    );



edit = CreateWindowEx(
    0,
    L"EDIT",
    NULL,
    WS_CHILD | WS_VISIBLE |  ES_LEFT,
    20, 12,
    480, 22,
    hwnd,
    (HMENU)editid,
    hInstance,
    NULL
);

// LRESULT CALLBACK WindowProc
switch(uMsg) {
case WM_COMMAND:
    if(HIWORD(wParam) == EN_CHANGE && LOWORD(wParam)==editid) { // this is
        //supposed to detect a change event in the edit control
        MessageBox(0, L"Doesnt Work!", L"failure", 0);
    }
}

通知将发送到编辑的父级。您可能正在编辑控件的窗口进程中侦听通知。

您可以处理WM_命令,检查lparam中控件的HWND,并查看wparam的HIWORD是否不是focus命令

case WM_COMMAND:
    if((HWND)lparam == hwndmycontrol) {
        if(HIWORD(wparam) != EN_SETFOCUS && HIWORD(wparam) != EN_KILLFOCUS) {
            //triggered on keypress
        }        
    }

编辑:确保检查wparam是否为IDOK(这意味着用户按enter键)。

您可以发布应用程序中的代码吗?示例代码对您有用吗?顺便说一句,使用SetWindowLongPtr而不是SetWindowLong。它将帮助您开发32/64位不可知软件。还有,你在花括号里放了什么,它告诉你把代码放在哪里?网站上的例子很好用。我知道,当我完全从网站上复制和粘贴它时,效果很好。可能是switch语句。