K
Ich will mal noch die entsprechenden Quelltexthäppchen schreiben:
Hier leite ich die Klasse ab:
class MyCWnd : public CWnd
{
public:
MyCWnd();
virtual ~MyCWnd();
afx_msg void OnKeyUp (UINT nChar, UINT nRepCnt,UINT nFlags);
};
Das ist das überladen der OnKeyUp-Funktion:
void MyCWnd::OnKeyUp (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;
}
}
}
und hier starte ich meinen Listener-Thread:
MyCWnd* pWnd = new MyCWnd;
pWnd->Attach(hwnd);
mythread = AfxBeginThread(
KeyListener,
pWnd,
THREAD_PRIORITY_NORMAL,
0,
0,
NULL);
der bisher nur so aussieht:
static UINT KeyListener(LPVOID Pparam) {
MyCWnd *cwnd = (MyCWnd*) Pparam;
while (cwnd) {
Sleep(0);
}
return 0;
}
Ist das so ok? Was fehlt noch, damit er auch listened?
Kox