Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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;

}

Geschrieben

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

Geschrieben

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;

}

}

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...