обнаружить ввод в элементе управления редактирования - PullRequest
3 голосов
/ 21 апреля 2011

Редактировать: Неважно!приведенный ниже код не работает, но когда я копирую и вставляю его с веб-сайта, он работает нормально.

Я попробовал, что этот сайт сказал мне, но это не сработало.Во всяком случае, вероятно, делает что-то довольно Nooby.

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);
    }
}

Ответы [ 2 ]

1 голос
/ 13 августа 2013

Вы можете обработать WM_COMMAND, проверьте lparam для HWND вашего элемента управления и посмотрите, не является ли HIWORD вашего wparam командой фокусировки.

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

edit: Убедитесь, что вы проверили, если wparamIDOK (что означает, что пользователь нажал ввод).

0 голосов
/ 21 апреля 2011

Уведомление отправляется родителю редактирования. Вы, вероятно, слушаете уведомление в окне управления редактированием proc.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...