#include <windows.h>
#include <stdio.h>
HINSTANCE hInst;
HWND hWndMain;
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInst,PSTR lpszCmdLine,int nCmdShow)
{
MSG msg;
WNDCLASS wnd;
wnd.style=CS_HREDRAW|CS_VREDRAW;
wnd.cbClsExtra=0;
wnd.cbClsExtra=0;
wnd.hbrBackground=(HBRUSH)::GetStockObject(WHITE_BRUSH);
wnd.hCursor=::LoadCursor(NULL,IDC_ARROW);
wnd.hIcon=::LoadIcon(NULL,IDI_APPLICATION);
wnd.hInstance=hInstance;
wnd.lpfnWndProc=WndProc;
wnd.lpszClassName=NULL;
if(!RegisterClass(&wnd))
{
return false;
}
hWndMain = CreateWindow("generic","简单的窗口演示程序",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
CW_USEDEFAULT,NULL,NULL,hInstance,NULL);
ShowWindow(hWndMain,nCmdShow);
UpdateWindow(hWndMain);
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}LRESULT CALLBACK WndProc (HWND hwnd,UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
char *hello = "这是一个windows程序";
char Buffer[256];
int x,y;
switch(message)
{
case WM_PAINT:
hdc = BeginPaint(hwnd,&ps);
TextOut(hdc,20,10,hello,lstrlen(hello));
EndPaint(hwnd,&ps);
break;
case WM_CHAR:
hdc = GetDC(hwnd);
sprintf(Buffer," ");
TextOut(hdc,0,0,Buffer,strlen(Buffer));
sprintf(Buffer,"%c",wParam);
TextOut(hdc,0,0,Buffer,strlen(Buffer));
ReleaseDC(hwnd,hdc);
break;
case WM_LBUTTONDOWN:
hdc = GetDC(hwnd);
x=LOWORD(lParam);
y=HIWORD(lParam);
Ellipse(hdc,x-10,y-10,x+10,y+10);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return(DefWindowProc(hwnd,message,wParam,lParam));
}
return 0;
}
牛人来解决下这个基础问题

解决方案 »

  1.   

    wnd.lpszClassName=NULL;
    ============
    窗口类名为NULL,当然不行了。
      

  2.   

    应该是
    if(!RegisterClass(&wnd))
    {
    return false;
    }
    这里的RegisterClass没有成功,所以退出了。 
      

  3.   

    不是这句话有问题,而是RegisterClass没有成功,至于为什么没有成功就不知道了,你用GetLastError看一下出错的原因吧。
      

  4.   

    刚学vc   不知道怎么用GetLastError  说下吧
      

  5.   

    是不是win7上不兼容vc6.0啊
      

  6.   

    你上面的代码除了wnd.lpszClassName=NULL;应该改为wnd.lpszClassName="generic";外没有什么其实问题的。
      

  7.   

    WNDCLASS wnd;
    wnd.style=CS_HREDRAW|CS_VREDRAW;
    wnd.cbClsExtra=0;
    wnd.cbWndExtra = 0;                                      //add
    wnd.hbrBackground=(HBRUSH)::GetStockObject(WHITE_BRUSH);
    wnd.hCursor=::LoadCursor(NULL,IDC_ARROW);
    wnd.hIcon=::LoadIcon(NULL,IDI_APPLICATION);
    wnd.hInstance=hInstance;
    wnd.lpfnWndProc=WndProc;
    wnd.lpszClassName="generic";                   //改为创建的类名
    wnd.lpszMenuName = NULL;                      //add
      

  8.   

    楼上的  按照你的改了以后  依旧没有窗体弹出
    是不是win7弹不出啊