c ++ - detekterer skrivning i en redigeringskontrol

Indlæg af Hanne Mølgaard Plasc

Problem



 Glem det! Koden nedenfor virker ikke, men når jeg kopierer og indsætter den fra hjemmesiden, virker det fint.


Jeg forsøgte hvad denne hjemmeside fortalte mig, men det virkede ikke. Anywhay, sandsynligvis gør noget smukt nooby. [3]


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

Bedste reference


Du kan håndtere WM\_COMMAND, tjek lparam for HWND for din kontrol og se, om WIREORDEN i din wparam ikke er en fokuskommando.


case WM\_COMMAND:
    if((HWND)lparam == hwndmycontrol) {
        if(HIWORD(wparam) != EN\_SETFOCUS && HIWORD(wparam) != EN\_KILLFOCUS) {
            //triggered on keypress
        }        
    }


rediger: Sørg for at kontrollere, om wparam er IDOK (hvilket betyder at brugeren trykker på enter).

Andre referencer 1


Meddelelsen sendes til moderselskabet for redigeringen. Du lytter sandsynligvis til meddelelsen i vinduet redigeringskontrol s.