2010-12-30 4 views
0

Ich habe ein Fenster mit meiner registrierten Klasse erstellt namens CLS1Mein WM_KEYDOWN funktioniert nicht, wenn meine MultiLineEdit Kontrolle im Fokus ist

invoke CreateWindow,addr CLS1,addr title,WS_OVERLAPPED, 
10,10,300,300,NULL,NULL,hInstance,NULL 
mov hwnd,ax 

ich habe ein MLE auf meinem Fenster wie folgt aus:

invoke CreateWindow,addr clsed,NULL,WS_CHILD or WS_VISIBLE or ES_MULTILINE 
or ES_AUTOVSCROLL or WS_BORDER or WS_TABSTOP,10,10,280,250,hwnd,123,hInstance,NULL 

und meine Nachrichtenschleife:

.while TRUE 
    invoke GetMessage,addr msg,NULL,0,0 
    .break .if (ax == 0) 
    invoke IsDialogMessage, hwnd,addr msg 
    .if (!ax) 
    invoke TranslateMessage,addr msg 
    invoke DispatchMessage,addr msg 
    .endif 
.endw 

In meinem WndProc möchte ich (für Test), dass eine WM_KEYDOWN-Nachricht eine Message Box funktioniert und zeigen, w Dann drücke ich den Buchstaben "A". Also, ich habe es versucht:

.if (message == WM_KEYDOWN) 
    .if (wParam == 41h)  ;41h = A or a 
     invoke MessageBox,NULL,addr keypress,addr title,48 
    .endif 

Aber es funktioniert einfach nicht!

Wenn jemand eine Lösung hat ... bitte helfen Sie mir.

Leider mein Englisch ... ich bin nicht amerikanisch (lol)

Antwort

0

Schreibst du für 16-Bit-Windows? Wenn nicht, überprüft 16-Bit-Rückgabewerte und unter Verwendung von 16-Bit-Griffe ist nicht gut:

mov hwnd,ax 
.break .if (ax == 0) 
.if (!ax) 

Verwendung EAX und die Dinge werden wahrscheinlich besser gehen.

+0

vielleicht ... aber ich schreibe auf 16-Bit-Windows ... ich brauche Axt und DX? –

+0

Hm, OK. Dann habe ich Angst, ich kann dir nicht helfen. –

Verwandte Themen