TinTin Geschrieben 13. November 2002 Geschrieben 13. November 2002 Hi, ich hab einen kleinen dialog in arbeit, der das drücken der F-Tasten überwachen soll. hab im msdn ein beispiel gefunden, das projekt wir auch ohne probleme erstellt aber das programm reagiert nicht auf die F-fasten. wo kann das problem liegen auszuge der .h und .cpp habe ich angefügt. TinTin /////////////////////////// // .h class CFkeytestDlg : public CDialog { // Konstruktion public: CFkeytestDlg(CWnd* pParent = NULL); // Standard-Konstruktor // Dialogfelddaten //{{AFX_DATA(CFkeytestDlg) enum { IDD = IDD_FKEYTEST_DIALOG }; CEdit m_ctlEdit1; CString m_strEdit1; //}}AFX_DATA // Vom Klassenassistenten generierte Überladungen virtueller Funktionen //{{AFX_VIRTUAL(CFkeytestDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV-Unterstützung //}}AFX_VIRTUAL // Implementierung protected: HICON m_hIcon; // Generierte Message-Map-Funktionen //{{AFX_MSG(CFkeytestDlg) virtual BOOL OnInitDialog(); afx_msg void OnSysCommand(UINT nID, LPARAM lParam); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags); //}}AFX_MSG DECLARE_MESSAGE_MAP() }; ///////////////////////////////////////////// // .cpp BEGIN_MESSAGE_MAP(CFkeytestDlg, CDialog) //{{AFX_MSG_MAP(CFkeytestDlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_WM_KEYDOWN() //}}AFX_MSG_MAP END_MESSAGE_MAP() void CFkeytestDlg::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) { switch (nChar) { case VK_F2: AfxMessageBox("F2 taste gedrueckt"); break; case VK_F3: AfxMessageBox("F3 taste gedrueckt"); break; default: break; } Zitieren
vinc Geschrieben 13. November 2002 Geschrieben 13. November 2002 schau dir mal in der kb den folgenden Artikel an: HOWTO: How to Trap WM_KEYDOWN Messages in a CDialog (Q117563) da steht im wesentlichen drin, dass die "normale" tastaturabfrage nicht funktioniert und eine methode wie es doch geht. hab das mal so ausprobiert und man bekommt zumindest die rückmeldung, dass eine taste gedrückt wurde (TRACE...) ich habe allerdings noch nicht herausgefunden wie der zugehörige tasen-code ermittelt werden kann. onkeydown funktioniert nach dieser operation nämlich immer noch nicht (wahrscheinlich wird es das nie). Vielleicht weiß ja jemand wie es auf dieser grundlage weiter geht :marine Zitieren
vinc Geschrieben 13. November 2002 Geschrieben 13. November 2002 und schon wieder ich :OD die funktion ProcessMessageFilter () aus o.g. kb-howto nachfolgend ändern dann dürtfe es gehen: if (lpMsg->message == WM_KEYDOWN) { TRACE("Got WM_KEYDOWN\n"); switch (lpMsg -> wParam) { case VK_F2: AfxMessageBox("F2 taste gedrueckt"); break; case VK_F3: AfxMessageBox("F3 taste gedrueckt"); break; default: break; } } Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.