29. september 2004 - 00:04Der er
9 kommentarer og 1 løsning
DialogBox problem
Hej.. Jeg har siddet og rodet med mine dialoger, og er stødt ind i et problem.
Først lidt info jeg koder ANSI C win32 API, min WinMain ser ud som følger:
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { return DialogBox(hInstance, MAKEINTRESOURCE(IDD_DlgMain), NULL, DlgMain); }
Problemet består så i at jeg ikke kan anvende keyboardet i forbindelse med dialogen.. Den er modal(DialogBox) og jeg kan se den reagere på de specielle taster(ALT, ENTER osv), men den reagere overhovedt ikke på andre taster fx a,b,3,2 osv.
Kan man fange keyboard inputtet på en eller anden måde... Jeg kunne specielt godt tænke mig at få adgang til piltasterne, gerne gennem en WM_KEYDOWN eller en af de andre...
Det er ikke ret let at fange alle tastetryk med en almindelig dialog box.
Message loop'en i DialogBox(...) synes at den skal bestemme hvilke taste tryk du skal have adgang til.
Man kunne prøve at udskifte WinProc for dialogboxen ved at kalde GetWindowLong, og derved få fat i beskederne inden den almindelige winproc får fat i dem.
Hej igen, jeg faldt lige over noget der måske kunne bruges:
"The system supports many different types of hooks; each type provides access to a different aspect of its message-handling mechanism. For example, an application can use the WH_MOUSE Hook to monitor the message traffic for mouse messages."
Det ser ud til at det sammen skulle kunne lade sig gøre med keyboardet... Jeg vil lige kigge på det igen imorgen..
ok.. Jeg sad og snakkede med en på IRC i #C.. Han foreslog GetAsyncKeyState();
Lurer også lidt på om CreateDialogParam(Er vist mere som et normalt vindue) kan bruges istedet for DialogBox, men nu skal jeg vist have lidt søvn.. Kigger på dem imorgen..
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.