Tastendruck erkennen



  • Hallo Leute,

    ich habe hier im Forum mal nach *Taste* gesucht und keine Beiträge gefunden. Also ohne schimpfen bitte wenn es das schon gibt.

    Ich habe MFC eine Anwendung, welche ein TabControl mit mehereren Tabs vom Typ CDialog enthält. In einem dieser Tabs (der auch nicht unbedingt immer da ist) möchte ich jetzt z.B. die Tasten Pfeil rechts und links oder auch andere Tastendrücke auswerten. Ich hab schon einiges probiert aber nichts funktioniert :).
    Hier was ich probiert habe:

    OnChar,OnKeyUp/Down. Die hier werden offensichtlich nicht an Dialogklassen weitergeleitet.

    WM_HOTKEY habe ich versucht als ON_NOTIFY und auch als ON_NOTIFY_REFLECT einzubinden.
    Allerdings geht das auch nicht.
    WM_GETDLGCODE wird auch nicht in ON_NOTIFY undn ON_NOTIFY_REFLECT aufgerufen.


  • Mod

    Tastatureingaben werden nur an das Fenster gesendet, dass den Focus hat?

    Hat Dein Tab-Ctrl den Focus?
    Wenn nicht solltest u dir PreTranslateMessage ansehen. Dort kann man Tastatureingaben auch über mehrere Fenster hinweg bearbeiten/abfangen.

    Was bitte hattest Du mit WM_GETDLGCODE und WM_HOTKEY vor?



  • Hatte ich im Internet gefunden, dass es wohl damit auch irgendwie geht. Ich schau mal nach PreTranslateMessage



  • Funktioniert ausgezeichnet:

    für alle die auch daran verzweifeln hier mein CODE:

    Im Header natürlich den Funktionsforward einfügen

    Code:

    BOOL CTabAblaufprogramme::PreTranslateMessage(MSG *pMsg)
    {
    	if( pMsg->message == WM_KEYDOWN )	
    	{
    		if(pMsg->wParam == VK_LEFT)
    		{
    			::TranslateMessage(pMsg);
    			::DispatchMessage(pMsg);
    			return TRUE;		    	// DO NOT process further
    		}
    		if(pMsg->wParam == VK_RIGHT)
    		{
    			::TranslateMessage(pMsg);
    			::DispatchMessage(pMsg);
    			return TRUE;		    	// DO NOT process further
    		}
    
    	} 	
    	return CDialog::PreTranslateMessage(pMsg); // Je nach Klasse in der man sich befindet kann hier auch mal ein CEdit z.B. stehen.
    }
    

  • Mod

    Für mich stellt sich die Frage warum Du keine property sheets und property pages benutzt sondern selber mit einem tab control rumbastelst.


Anmelden zum Antworten