调用SetWindowPos会产生“无效的窗口句柄”

时间:2017-05-10 08:12:03

标签: winapi assembly x86 masm masm32

我手上有太多时间,决定在MASM32中写一个简单的程序,没有充分的理由。但是,我无法让我的SetWindowPos调用WinApi工作。这是相关的代码位:

invoke GetForegroundWindow
mov ecx,eax
invoke GetWindowLong, ecx, GWL_EXSTYLE
AND eax,WS_EX_TOPMOST   ; check if window-
.if eax==0              ; is already on top
    mov edx,HWND_TOPMOST; nope, make it on top
.else
    mov edx,HWND_NOTOPMOST; yes, make it not on top
.endif
push ecx    ; window handle
push edx    ; placement handle
push edi    ; edi=0, someone told me this is faster
push edi
push edi
push edi
push 0043h  ; SWP_SHOWWINDOW | SWP_NOSIZE | SWP_NOMOVE
call SetWindowPos
cmp eax,0
jne mLoop1  ; jump to message loop
invoke HandleError, addr appname ; make message box with error message
; ^^^^^^^^ this shows "Invalid Window Handle"
jmp mLoop1  ; jump to message loop

我确信我错过了很明显的东西,但由于我对装配的了解有限,我不知道是什么。

0 个答案:

没有答案