我抄书上写的程序,可是在窗口后用2000任务管理器发现进程仍然存活,而且PostQuitMessage(0)也执行到了,谁来给我解疑啊
#include "stdafx.h"
#include "windows.h"TCHAR clsname[]="myclass";
HINSTANCE hinst;LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);int WINAPI WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
  // TODO: Place code here.
hinst=hInstance;
WNDCLASS wc;
wc.style=CS_HREDRAW|CS_VREDRAW;
wc.lpfnWndProc=(WNDPROC)WndProc;
wc.lpszClassName=clsname;
wc.cbClsExtra=0;
wc.cbWndExtra=0;
wc.hInstance=hInstance;
wc.hIcon=NULL;
wc.hCursor=NULL;
wc.lpszMenuName=NULL;
wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
RegisterClass(&wc);
HWND hwnd=CreateWindow(clsname,"this is my window",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,0,CW_USEDEFAULT,0,NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,nCmdShow);
UpdateWindow(hwnd);
MSG msg;
while(::GetMessage(&msg,hwnd,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
switch(message)
{
case WM_DESTROY:
::PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,message,wParam,lParam);
}
return 0;
}

解决方案 »

  1.   

    GetMessage(&msg,hwnd,0,0)
    应为GetMessage(&msg,NULL,0,0)
      

  2.   

    看不出是那里的错误,可以自己调试一下,
    先运行到case wm_destroy:....处,再运行到getmessage处,
    看是否返回?.......
    不知道是不是应该用getmessage(&msg, NULL, 0, 0)?
      

  3.   

    case WM_DESTROY:
    ::ExitProcess(0);
    break;
      

  4.   

    关注,我有个程序ALT-F4后在2000里也挂着,再执行就报打不开文档。
      

  5.   

    case WM_DESTROY:
         PostMessage( hWnd, WM_QUIT, 0, 0 );
         break;...MSG msg;
    while( GetMessage( &msg, NULL, 0, 0 ) ) 
    {
    TranslateMessage( &msg );
    DispatchMessage( &msg );
    }
      

  6.   

    ypos(叶开) 
    真牛!
    我看了半天,眼都看花了,也不懂。
    以后要多请教了。