wndclass.style = CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc = WndProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = DLGWINDOWEXTRA;
wndclass.hInstance = hInstance;
wndclass.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_UNLIMITED));
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName = NULL;
wndclass.lpszClassName = szAppName;
if(!RegisterClass(&wndclass))
{
MessageBox(NULL, TEXT("This Program requires Windows NT 4.0 and Above"),
szAppName, MB_ICONERROR);
return 0;
}
hwndChild = CreateWindow(szAppName,
TEXT(szAppName),
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hIns,
NULL);

if(!hwndChild)
{
MessageBox(NULL, TEXT("Wrong!"),
szAppName, MB_ICONERROR);
}
就是不成功!

解决方案 »

  1.   

    wndclass.style = CS_HREDRAW | CS_VREDRAW;
    wndclass.lpfnWndProc = WndProc;
    wndclass.cbClsExtra = 0;
    wndclass.cbWndExtra = DLGWINDOWEXTRA;
    wndclass.hInstance = hInstance;
    wndclass.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_UNLIMITED));
    wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
    wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    wndclass.lpszMenuName = NULL;
    wndclass.lpszClassName = szAppName;
    if(!RegisterClass(&wndclass))
    {
    MessageBox(NULL, TEXT("This Program requires Windows NT 4.0 and Above"),zAppName, MB_ICONERROR);
    return 0;
    }
    hwndChild = CreateWindow(szAppName, TEXT(szAppName), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);
    if(!hwndChild)
    {
    MessageBox(NULL, TEXT("Wrong!"),szAppName, MB_ICONERROR);
    }
    编译是通过的,但是就是每次创建都失败,运行这个
    MessageBox(NULL, TEXT("Wrong!"),szAppName, MB_ICONERROR);
      

  2.   

    以下是我的测试程序,能够创建成功。
    #include <windows.h>
    LRESULT CALLBACK WndProc(HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam)
    {
      switch (Msg)
      {
      case WM_CLOSE:
        PostQuitMessage(0);
        break;
      case WM_DESTROY:
        PostQuitMessage(0);
        break;
      default:
        return DefWindowProc(hwnd, Msg, wParam, lParam);
      }
      return 0;
    }
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
    {
      TCHAR szAppName[] = "MyWindow";
      WNDCLASS wndclass;
      MSG msg;
      HWND hwndChild;
      wndclass.style = CS_HREDRAW | CS_VREDRAW;
      wndclass.lpfnWndProc = WndProc;
      wndclass.cbClsExtra = 0;
      wndclass.cbWndExtra = DLGWINDOWEXTRA;
      wndclass.hInstance = hInstance;
      wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION); // 没有你的图标,所以把这里改了
      wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
      wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
      wndclass.lpszMenuName = NULL;
      wndclass.lpszClassName = szAppName;
      if(!RegisterClass(&wndclass))
      {
        MessageBox(NULL, TEXT("This Program requires Windows NT 4.0 and Above"), szAppName, MB_ICONERROR);
        return 0;
      }
      hwndChild = CreateWindow(szAppName, TEXT(szAppName), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);
      if(!hwndChild)
      {
        MessageBox(NULL, TEXT("Wrong!"),szAppName, MB_ICONERROR);
      }
      ShowWindow(hwndChild, SW_SHOW);
      UpdateWindow(hwndChild);
      while (GetMessage(&msg, NULL, 0, 0))
      {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
      }
      return 0;
    }
      

  3.   

    首先确定你的窗口回调函数写好了
    其次确定你在WM_CREATE:
    中的操作都是正确的,跟踪调试代码,得出错误的位置