Probleme mit Message Maps
-
nee, hab clean und rebuild all gemacht, aber kommt das Gleiche...
-
Nenn doch mal Deine Funktion anders.
Beim Macro ON_WM_KEYDOWN schreibt MSDN, dass die Funktionafx_msg void OnKeyDown( UINT, UINT, UINT );
heissen sollte.
-
Done, ändert aber leider auch nichts.
-
Insgesamt sieht es jetzt so aus:
Header-Datei:
class MyCWnd : public CWnd { public: MyCWnd(); virtual ~MyCWnd(); protected: afx_msg void OnKeyDown (UINT nChar, UINT nRepCnt,UINT nFlags); DECLARE_MESSAGE_MAP() };
CPP-Datei:
void MyCWnd::OnKeyDown (UINT nChar, UINT nRepCnt,UINT nFlags) { unsigned long *volume_pointer; unsigned long volume; unsigned long new_volume; char wavName[] = "\\windows\\Default.wav"; CString csName = CString (wavName); volume_pointer = &volume; waveOutGetVolume(HWAVEOUT WAVE_MAPPER, volume_pointer); switch (nChar){ case 38: { if (volume+0x2000 > 0xFFFF) new_volume = 0xFFFF; else new_volume = volume+0x2000; waveOutSetVolume(HWAVEOUT WAVE_MAPPER,new_volume); PlaySound(csName, NULL, SND_SYNC | SND_FILENAME); break; } case 40: { if (volume < 0x2000) new_volume = 0x0000; else new_volume = volume-0x2000; waveOutSetVolume(HWAVEOUT WAVE_MAPPER,new_volume); PlaySound(csName, NULL, SND_SYNC | SND_FILENAME); break; } } } BEGIN_MESSAGE_MAP(MyCWnd,CWnd) ON_WM_KEYDOWN() END_MESSAGE_MAP()
Aber es geht immer noch nicht!
Jetzt müsste doch alles hinhauen, die Message ON_WM_KEYDOWN ist registriert,
ich hab die entsprechende Funktion OnKeyDown überschrieben, warum wird sie nicht aufgerufen??Kox
-
Wird sie nicht aufgerufen oder bekommst Du noch die Fehlermeldung?
-
Wird nicht aufgerufen, Fehlermeldungen gibts keine.
Kox
-
Ich musste mal rechte und linke Maustaste bei einem CStatic abfangen. Da musste ich die Eigenschaft "Notify" (sorry, hab' nur die englische Fassung) setzen.
Im Resourceskript steht dann hinter der Resource SS_NOTIFY.
Ohne wurde die Funktion einfach nicht aufgerufen.
Weiss nicht, ob's damit zu tun hat, aber schau mal, ob Dir das weiterhilft.
-
Nee, das ist laut MSDN wirklich nur für Mouseklicks zu verwenden...
Kox
-
Hast du mal mit Spy++ oder einem ähnlichen Tool geprüft, ob dein Fenster überhaupt WM_KEYDOWN-Nachrichten bekommt?
-
Hallo,
ich habe jetzt CESpy probiert (ist ein PPC-Programm),
das Fenster wird auch angezeigt, aber der Menüauswahlpunkt
"Messages" ist ausgegraut. Und das nicht nur bei meinem,
sondern bei allen Fenstern, die dort aufgelistet sind...
Heißt das, es kommt nischt nirgendwo an?Kox