C++窗口代码

下面是我抄的书上的代码,编译都能通过,但执行没有结果。请高手帮忙解决一下!#include<windows.h>LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam){ HDC hdc; HBRUSH hbrush; HPEN hpen; PAINTSTRUCT ptstr; switch(iMessage) { case WM_PAINT: hdc=BeginPaint(hWnd,&ptstr); SetMapMode(hdc,MM_ANISOTROPIC); hpen=(HPEN)GetStockObject(BLACK_PEN); SelectObject(hdc,hpen); hbrush=(HBRUSH)GetStockObject(DKGRAY_BRUSH); SelectObject(hdc,hbrush); RoundRect(hdc,50,50,100,150,15,15); hbrush=(HBRUSH)GetStockObject(HOLLOW_BRUSH); SelectObject(hdc,hbrush); Pie(hdc,250,50,300,100,250,50,300,50); EndPaint(hWnd,&ptstr); return 0; case WM_DESTROY: PostQuitMessage(0); return 0; default: return(DefWindowProc(hWnd,iMessage,wParam,lParam)); }}BOOL InitWindows(HINSTANCE hInstance,int nCmdShow){ HWND hwnd; hwnd=CreateWindow( "WinFill", "我的一个实例", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL,); if(!hwnd) return false; ShowWindow(hwnd,nCmdShow); UpdateWindow(hwnd); return true;}BOOL InitWindowClass(HINSTANCE hInstance){ WNDCLASS wndclass; wndclass.cbClsExtra=0; wndclass.cbWndExtra=0; wndclass.hbrBackground=(HBRUSH)(GetStockObject(WHITE_BRUSH)); wndclass.hCursor=LoadIcon(NULL,"END"); wndclass.hInstance=hInstance; wndclass.lpfnWndProc=WndProc; wndclass.lpszClassName="WinFill"; wndclass.lpszMenuName=NULL; wndclass.style=CS_HREDRAW|CS_VREDRAW; return RegisterClass(&wndclass);}int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow){ MSG Message; if(!InitWindowClass(hInstance)) return false; if(!InitWindows(hInstance,nCmdShow)) return false; while(GetMessage(&Message,0,0,0)) { TranslateMessage(&Message); DispatchMessage(&Message); } return Message.wParam;}
2026年09月23日 10:40
有2个网友回答
网友(1):

RegisterClass(&wndclass);这一步失败
你在仔细检查一下
hwnd=CreateWindow(
"WinFill",
"我的一个实例",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
0,
CW_USEDEFAULT,
0,
NULL,
NULL,
hInstance,
NULL,);这一句 最后就多了一个逗号,其他的我没看!
如果编译通过,你可以通过单步调试,来看看是哪一步出错了,然后再仔细对照书上的代码,改正

网友(2):

嗯,是RegisterClass失败了
wndclass结构你填错了
10个你填了9个
抄书抄错行了
wndclass.hCursor=LoadIcon(NULL,"END");
改为
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndclass.hIcon=LoadIcon(NULL,"END");