Protokollieren von Benutzereingaben

tutorobsch

Grünschnabel
Hallo zusammen,

kann mir jemand bei Folgendem einen guten Rat geben?

Wenn ein Knopf in meiner Anwendung gedrückt wurde
muss ich den Beschriftungstext in einem Logfile mitprotokollieren.

An folgende Lösungen habe ich gedacht:

1. Die Methode
BOOL CMyDialog::OnCommand(WPARAM wParam, LPARAM lParam)
des übergeordneten Fensters zu verwenden,

doch wie komme ich an den Text heran?

Gibt es evtl. eine bessere Lösung?
 
Mit OnCommand geht das sicher nicht, dort kommen keine Zeichen an.

Du müstest mit SetWindowsHookEx(WH_KEYBOARD,....) eine
Callback Funktion bei deinem Hauptfenster einhängen.
 
Ich habe doch noch einen Weg gefunden, s.u.

Was ich allerdings nicht verstehe, warum ich pMyWnd nicht mit dynamic cast
in einen CButton* umwandeln kann. Hat dazu jemand eine Idee?

HWND buttonHandle = reinterpret_cast<HWND>(lParam);

int textLen = ::GetWindowTextLength(buttonHandle);
CWnd* pMyWnd = FromHandle(buttonHandle);

CButton* button = dynamic_cast<CButton*>(pMyWnd);
CString buttonText;
::GetWindowText(
buttonHandle,
buttonText.GetBuffer(textLen),
textLen+1
);
buttonText.ReleaseBuffer();
 
Zurück