为什么在处理处理WM_CLOSE时调用DestroyWindow无法真正关闭窗口呢?点关闭后,窗口时消失了,但是进程还在,而且占用很高的cpu.

.386
.model flat,stdcall
option casemap:none

include windows.inc
include kernel32.inc
includelib kernel32.lib
include user32.inc
includelib user32.lib
include gdi32.inc
includelib gdi32.lib

WinMain proto :dword,:dword,:dword,:dword

.data
szClassName db 'TestClose',0
szAppName db 'CloseWindow',0

.data?
hInstance dd ?
hWinMain dd ?
CommandLine dd ?

.code
start:
    invoke GetModuleHandle,NULL
    mov hInstance,eax
    invoke GetCommandLine
    mov CommandLine,eax
    invoke WinMain,hInstance,NULL,CommandLine,SW_SHOWNORMAL
    invoke ExitProcess,NULL

WinMain proc uses edi esi ebx,hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:dword,CmdShow:Dword
    local wc:WNDCLASSEX
    local msg:MSG

    mov wc.cbSize,sizeof WNDCLASSEX
    mov wc.style,CS_HREDRAW or CS_VREDRAW
    mov wc.cbClsExtra,NULL
    mov wc.cbWndExtra,NULL
    mov wc.lpfnWndProc,offset WndProc
    mov wc.lpszClassName,offset szClassName
    mov wc.lpszMenuName,NULL
    mov eax,hInstance
    mov wc.hInstance,eax
    invoke GetStockObject,WHITE_BRUSH
    mov wc.hbrBackground,eax
    invoke LoadIcon,NULL,IDI_APPLICATION
    mov wc.hIcon,eax
    mov wc.hIconSm,eax
    invoke LoadCursor,NULL,IDC_ARROW
    mov wc.hCursor,eax
    invoke RegisterClassEx,addr wc
    invoke CreateWindowEx,NULL,offset szClassName,offset szAppName,WS_OVERLAPPEDWINDOW,\
        CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,\
        hInst,NULL
    mov hWinMain,eax
    invoke ShowWindow,hWinMain,CmdShow
    invoke UpdateWindow,hWinMain

    .while TRUE
        invoke GetMessage,addr msg,hWinMain,NULL,NULL
        .break .if eax==0
        invoke TranslateMessage,addr msg
        invoke DispatchMessage,addr msg
    .endw
    mov eax,msg.wParam
    ret
WinMain endp

WndProc proc uses edi esi ebx,hWnd:HWND,uMsg:UINT,wParam:dword,lParam:dword
    
    .if uMsg==WM_DESTROY        
        invoke PostQuitMessage,NULL
    .elseif uMsg==WM_CLOSE        
            invoke DestroyWindow,hWnd
    .else   
    
        invoke DefWindowProc,hWnd,uMsg,wParam,lParam
        ret
    .endif

    
    xor eax,eax
    ret
WndProc endp
end start