2017-04-08 146 views
-1

我想学习如何创建一个Windows应用程序,但在编写代码时出现此错误。MSDN应用教程创建一个Windows应用程序

szWindowClass undefined

下面是本教程的网站。

https://msdn.microsoft.com/en-us/library/bb384843.aspx?f=255&MSPPError=-2147217396

这里是

#include <Windows.h> 
#include <tchar.h> 


//winMain function 
//function starting point 
int CALLBACK WinMain(_In_ HINSTANCE hInstance, 
    _In_ HINSTANCE hPrevInstance, 
    _In_ LPSTR  lpCmdLine, 
    _In_ int  nCmdShow 
) 
{ 
    //handles messages 
    LRESULT CALLBACK winproc(
     _In_ HWND hwnd, 
     _In_ UINT uMsg, 
     _In_ WPARAM wParam, 
     _In_ LPARAM lParam 
    ); 

    WNDCLASSEX wcex; 

    wcex.cbSize = sizeof(WNDCLASSEX); 
    wcex.style = CS_HREDRAW | CS_VREDRAW; 
    wcex.lpfnWndProc = winproc; 
    wcex.cbClsExtra = 0; 
    wcex.cbWndExtra = 0; 
    wcex.hInstance = hInstance; 
    wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_APPLICATION)); 
    wcex.hCursor = LoadCursor(NULL, IDC_ARROW); 
    wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); 
    wcex.lpszMenuName = NULL; 
    wcex.lpszClassName = szWindowClass; 
    wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_APPLICATION)); 

    if (!RegisterClassEx(&wcex)) 
    { 
     MessageBox(NULL, 
      _T("Call to RegisterClassEx failed"), 
      _T("Win32 guided tour"), 
      NULL); 

     return 1; 
    } 

    static TCHAR szWindowClass[] = _T("win_proj1_test"); 
    static TCHAR szTitle[] = _T("Win32 Guided Tour Application"); 

    // The parameters to CreateWindow explained: 
    // szWindowClass: the name of the application 
    // szTitle: the text that appears in the title bar 
    // WS_OVERLAPPEDWINDOW: the type of window to create 
    // CW_USEDEFAULT, CW_USEDEFAULT: initial position (x, y) 
    // 500, 100: initial size (width, length) 
    // NULL: the parent of this window 
    // NULL: this application does not have a menu bar 
    // hInstance: the first parameter from WinMain 
    // NULL: not used in this application 
    HWND hWnd = CreateWindow(
     szWindowClass, 
     szTitle, 
     WS_OVERLAPPEDWINDOW, 
     CW_USEDEFAULT, CW_USEDEFAULT, 
     500, 100, 
     NULL, 
     NULL, 
     hInstance, 
     NULL 
    ); 
    if (!hWnd) 
    { 
     MessageBox(NULL, 
      _T("Call to CreateWindow failed!"), 
      _T("Win32 Guided Tour"), 
      NULL); 

     return 1; 
    } 

    // The parameters to ShowWindow explained: 
    // hWnd: the value returned from CreateWindow 
    // nCmdShow: the fourth parameter from WinMain 
    ShowWindow(hWnd, 
     nCmdShow); 
    UpdateWindow(hWnd); 

    MSG msg; 
    while (GetMessage(&msg, NULL, 0, 0)) 
    { 
     TranslateMessage(&msg); 
     DispatchMessage(&msg); 
    } 

    return (int)msg.wParam; 

} 

回答

1

您szWindowClass的定义之前调用CreateWindow的代码:

HWND hWnd = CreateWindow(
    szWindowClass, 

移动这一行:

static TCHAR szWindowClass[] = _T("win_proj1_test"); 

到文件的最顶端。在WinMain之上。