Enter in Edit-Feld abfangen



  • hi,

    ich weiß, dass das bestimmt schon tausend mal gefragt wurde, aber ich kriegs einfach nicht gebacken:

    Ich habe ein Edit-Feld und will, sofern Enter gedrück wird, dass etwas geschieht.

    Allerdings ist mein Problem, dass ich keine WM_CHAR nachrichten erhalte. Ich wollte in der WndProc einfach WM_CHAR abfangen, sofern es von meinem Edit kommt, allerdings erhalte ich diese nachricht nicht.

    Also hab ich mal das Edit-Fenster gesubclassed...und es kommt auch kein WM_CHAR. Woran kann das denn liegen?

    MfG, Herr-Vorragend



  • Wie wärs, wenn du WM_KEYDOWN abfängst?



  • das ging vorhin auch nicht. aber jetzt hab ich solange rumgemacht, bis es geht, ich glaub ich hab bei SetWindowLong irgendwas vermasselt.



  • Bei mir hats folgendermaßen funktioniert:

    PrevWndProcEdit = SetWindowLongPtr (hwndEdit, GWLP_WNDPROC,(LONG_PTR) EditWndProc);
    
    LRESULT CALLBACK EditWndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
    	switch (message)
    	{
    	case WM_KEYDOWN:
    		switch(wParam){
    			case VK_RETURN:
    			SendMessage(hWnd,WM_COMMAND,ID_SENDEN,NULL);
    			break;
    		}
    		break;  
    
    	}
    
    	return CallWindowProc ((WNDPROC) PrevWndProcEdit, hwnd, message, wParam, lParam);
    }
    

    wobei ID_SENDEN zu einem Button gehört
    dort wird dann alles weiter verarbeitet


Anmelden zum Antworten