2010-12-30 6 views
0

내가 이렇게 내 방 창문에 MLE이 CLS1내 WM_KEYDOWN이 작동하지 않습니다

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

라는 이름의 내 등록 된 클래스를 사용하여 만든 창했습니다 :

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 

내 메시지 루프 내의 WndProc에서

.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 

내가 (테스트) 원하는 WM_KEYDOWN 메시지가 승 메시지 박스를 작동 보여줄 것을 암탉 나는 편지 'A'를 누릅니다. 그래서 나는 이것을 시도했다 :

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

그러나 그것은 단지 작동하지 않는다!

누군가 해결책이 있다면 ... 저를 도와주세요. 미국 (LOL)

답변

0

당신은 16 비트 Windows 용 쓰는거야 나의 영어

죄송합니다 ... 난?

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

사용 EAX 것들을 아마 더 나은 갈 것입니다 :하지 않으면 16 비트 반환 값을 확인하고 처리하는 16 비트를 사용하는 것은 좋지 않습니다.

+0

어쩌면 ...하지만 16 비트 창에 쓰고 있는데 ... 도끼와 DX를 사용해야합니까? –

+0

흠, 확인. 그럼 내가 너를 도울 수 없어. –

관련 문제