回 帖 发 新 帖 刷新版面

主题:为什么不显示出窗口呢>>>>>>>>

下面的程序,在VC++中运行下。为什么不出现窗口呢》帮忙看看错那了。

谢谢各位了。新手刚学!!!!!!!


#include <windows.h>
#include <windowsx.h>
LRESULT CALLBACK WinProc(HWND hwnd,
                         UINT msg,
                         WPARAM wparam,
                         LPARAM lparam)
{
   switch (msg)   //msg中保存的就是正要处理的消息
   {
      case WM_DESTROY:      //这是我们自行处理的第一个消息
      {
          PostQuitMessage(0);   //发出一个WM_QUIT消息
          return 0;             //然后直接返回。
       }break;
  default:break;
  }
   return DefWindowProc(hwnd, msg, wparam, lparam);
}

int WINAPI WinMain(HINSTANCE hinstance,
                 HINSTANCE hprevinstance,
                 LPSTR lpcmdline,
                 int nCmdShow)
{
       HWND hWnd;
       MSG msg;
       WNDCLASSEX wndclass;  
     wndclass.cbSize = sizeof(WNDCLASSEX);
     wndclass.cbClsExtra=0;
     wndclass.cbWndExtra =0;
     wndclass.lpfnWndProc = WinProc;
     wndclass.style = CS_VREDRAW | CS_HREDRAW | CS_OWNDC | CS_DBLCLKS;
     wndclass.hInstance = hinstance;
     wndclass.hCursor =LoadCursor(NULL, IDC_ARROW);
     wndclass.hIcon = LoadIcon(NULL,IDI_APPLICATION); 
     
     wndclass.lpszMenuName = NULL;
     wndclass.hbrBackground =(HBRUSH) GetStockObject(BLACK_BRUSH);
     wndclass.lpszClassName ="WINCLASS1";
   //
    hWnd=CreateWindowEx(NULL,"WINCLASS1",
                "这是我的第一个窗口",
                WS_OVERLAPPEDWINDOW|WS_VISIBLE ,
                CW_USEDEFAULT, 0,
                400,400,
                NULL,
                NULL,
                hinstance,
                NULL );
    if (!hWnd)
        return 0;
    ShowWindow(hWnd, nCmdShow);
    UpdateWindow(hWnd);
    while(GetMessage(&msg, NULL, 0, 0)) 
    {       
      TranslateMessage(&msg);    
      DispatchMessage(&msg); 
    }  
  return 0;    
}

回复列表 (共4个回复)

沙发

窗口类还没有注册
注册了也不能显示是因为wndclass 还在一项值没有填写,你自己查查看

板凳

怎么注册呀?

是不是用:
if(!RegisterClassEx(&wndclass))
    {
        MessageBeep(0);
        return FALSE;
    }


可以加上了,还是那样子呀!!!!!!!!!

3 楼

自己按照向导创建的写一个.

4 楼

首先你必须保证所建的工程是ANSI字符集而不是UNICODE字符集  , 然后在wndclass初始化的地方加上wndclass.hIconSm = NULL;  还有就是上面朋友所说的wndclass需要注册了 ; 你所写的注册代码没有错误

我来回复

您尚未登录,请登录后再回复。点此登录或注册