VK_RETURN Problem



  • LRESULT CALLBACK IPEditProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
     switch(message)
    	{
    		case WM_KEYDOWN:
    			switch(wParam)
    			{
    				case VK_RETURN:
    					MessageBox(0,"Return","Return",MB_OK);
    					break;
    
    				case VK_SHIFT:
    					MessageBox(0,"Shift","Shift",MB_OK);
    					break;
    			}
    	}
    
    return CallWindowProc ((WNDPROC) PrevWndProcEdit, hwnd, message, wParam, lParam);
    }
    

    So habe ich meine Proc geschrieben.

    Wenn ich Shift druecke kommt auf die MsgBox.
    Bei Return jedoch nicht ! Warum das ??



  • WM_KEYDOWN

    Return Values

    An application should return zero if it processes this message.



  • Was soll ich dann benutzten damit ich Enter/Return Taste abfangen kann ?



  • Nee, du sollst deine bearbeitete Teil-Nachricht WM_KEYDOWN (wParam == VK_RETURN) mit return (0L); abschließen.

    Alternativ: WM_CHAR



  • LRESULT CALLBACK IPEditProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
     switch(message)
    	{
    		case WM_KEYDOWN:
    			switch(wParam)
    			{
    				case VK_SHIFT:
    					MessageBox(0,"Shift","Shift",MB_OK);
    					break;
    
    				case VK_RETURN:
    					MessageBox(0,"Enter","Enter",MB_OK);
    					break;
    			}
    			return (0);
    	}
    
    return CallWindowProc ((WNDPROC) PrevWndProcEdit, hwnd, message, wParam, lParam);
    }
    

    Funktioniert immer noch nicht. Es ist uebrigens die Proc von dem hier :

    hEdit_IPAddress = CreateWindowEx(NULL,"EDIT","",WS_CHILD|WS_BORDER|WS_VISIBLE|ES_WANTRETURN,padding_left + 90,8,100,20,hWnd,NULL,GetModuleHandle(NULL),NULL);
    

    Vielleich da noch was zu beachten ? Komisch denn VK_SHIFT funktioniert ja einwandfrei



  • Windows schickt dir VK_RETURN nicht, weil es diese Taste selbst bearbeitet z.B. um eine Taste im Fenster zu "betätigen".



  • Hab als Style einfach

    ES_MULTILINE
    

    gemacht , nun funktioniert es !



  • Nee sollte aber eher so aussehen:

    case WM_KEYDOWN:
                switch(wParam)
                {
                    case VK_SHIFT:
                        MessageBox(0,"Shift","Shift",MB_OK);
                        return (0);
    
                    case VK_RETURN:
                        MessageBox(0,"Enter","Enter",MB_OK);
                        return (0);
                }
                break;
    

Anmelden zum Antworten