問題如標題
程序如下:#include<windows.h>
#include<stdlib.h>
#include<string.h>LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam);
BOOL InitWindowsClass(HINSTANCE hInstance); 
BOOL InitWindows(HINSTANCE hInstance,int nCmdShow);
HWND hWndMain;  int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance ,LPSTR lpCmdLine ,int nCmdShow)
{
MSG Message;
if(!InitWindowsClass(hInstance))
return FALSE;
if(!InitWindows(hInstance,nCmdShow))
return FALSE;
while(GetMessage(&Message,0,0,0))
{
TranslateMessage(&Message);
DispatchMessage(&Message);
}
return Message.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
HDC hDC;
         HBRUSH hBrush;
HPEN hPen;
PAINTSTRUCT ps;
POINT points[6]={{200,212},{170,227},{170,250},{230,250},{230,227},{200,212}}; switch(iMessage)
{
case WM_PAINT:
hDC=BeginPaint(hWnd,&ps);
        
hPen=(HPEN)GetStockObject(NULL_PEN);
SelectObject(hDC,hPen); 
hBrush=(HBRUSH)GetStockObject(BLACK_BRUSH);
SelectObject(hDC,hBrush); 
 
LineTo(hDC,50,50); 
DeleteObject(hPen);
hPen=CreatePen(PS_SOLID,2,RGB(255,0,0)); 
        SelectObject(hDC,hPen); 
LineTo(hDC,150,50) ;  
    LineTo(hDC,100,137);
        LineTo(hDC,50,50);  

Polyline(hDC,points,6);
Arc(hDC,50,300,100,350,0,0,0,0);
Pie(hDC,100,300,150,350,112,123,150,180); 
Rectangle(hDC,50,300,100,350);
RoundRect(hDC,100,300,200,350,20,20); DeleteObject(hBrush);
EndPaint(hWnd,&ps); case WM_DESTROY:
PostQuitMessage(0);
return 0; default:
return (DefWindowProc(hWnd,iMessage,wParam,lParam));
}
}
BOOL InitWindowsClass(HINSTANCE  hInstance)
{
WNDCLASS wndclass;
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wndclass.lpfnWndProc=WndProc;
wndclass.lpszClassName="WinFill";
wndclass.lpszMenuName=NULL;
wndclass.style=CS_HREDRAW|CS_VREDRAW;
wndclass.hInstance=hInstance; return RegisterClass(&wndclass);
}
BOOL InitWindows(HINSTANCE hInstance,int nCmdShow)
{
HWND hWnd;
hWnd=CreateWindow("WinFill","yeah",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,0,CW_USEDEFAULT,0,NULL,NULL,hInstance,NULL);
    if(!hWnd)
   return FALSE;
hWndMain=hWnd;
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
return TRUE;
}是什么問題呢?

解决方案 »

  1.   

    case WM_DESTROY:
    PostQuitMessage(0);
    return 0;
    去掉就行了,在vc6可以运行,测试了.
      

  2.   

    在case WM_DESTROY:上面加break;就行了
      

  3.   

    你将编译生成的exe文件,通过“运行”来执行看看
      

  4.   

    TO: fanqing(火影忍者+20%)   可以运行了~~这条“退出”消息出叻什么问题?TO yangzhipeng3993(Y.P.大鸟) 
       iamltq(A.QIANG) 
       我试叻一下,还是和原来一样!一闪而过!PostQuitMessage(0)出叻什么问题?
      

  5.   

    其实不删除也可以,在他上面加return 0;可能是因为上面WM_PAINT消息执行后由于没有return0,被迫继续执行直到能返回为止,所以下面的PostQuitMessage(0);也执行了.
      

  6.   

    你在case WM_PAINT最后设置个Sleep几秒看看。或者设置一个等待输入的函数,如果没有输入就停在那里...
      

  7.   

    在case WM_DESTROY:前添加break;
      

  8.   

    问题解决叻!fanqing(火影忍者+20%) 说的是对的。出错是在WM_PAINT最后没有 return 0。谢谢!谢谢各位~