none
《windows程序设计》中的代码在vs2010下的编译错误 RRS feed

  • 问题

  • 就是这段经典的代码:

    #include <windows.h>
           

    LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
           

    int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
           
                       PSTR szCmdLine, int iCmdShow)
           
    {
           
        static TCHAR szAppName[] = TEXT ("HelloWin") ;
           
        HWND   hwnd ;
           
        MSG    msg ;
           
        WNDCLASS wndclass ;
           

       wndclass.style        = CS_HREDRAW | CS_VREDRAW ;
           
       wndclass.lpfnWndProc  = WndProc ;
           
        wndclass.cbClsExtra   = 0 ;
           
        wndclass.cbWndExtra   = 0 ;
           
        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!"),
           
                                      szAppName, MB_ICONERROR) ;
           
                return 0 ;
           
        }
           
        hwnd = CreateWindow( szAppName,      // window class name
           
                       TEXT ("The Hello Program"),   // window caption
           
                       WS_OVERLAPPEDWINDOW,  // window style
           
                       CW_USEDEFAULT,// initial x position
           
                       CW_USEDEFAULT,// initial y position
           
                       CW_USEDEFAULT,// initial x size
           
                       CW_USEDEFAULT,// initial y size
           
                       NULL,                 // parent window handle
           
                   NULL,            // window menu handle
           
                   hInstance,   // program instance handle
           
                   NULL) ;      // creation parameters
           
      
           
        ShowWindow (hwnd, iCmdShow) ;
           
        UpdateWindow (hwnd) ;
           
      
           
        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 ;
           
        RECT          rect ;
           
      
           
        switch (message)
           
        {
           
        case WM_CREATE:
           
        PlaySound (TEXT ("hellowin.wav"), NULL, SND_FILENAME | SND_ASYNC) ;
           
                return 0 ;
           

        case   WM_PAINT:
           
                hdc = BeginPaint (hwnd, &ps) ;
           
           
           
                GetClientRect (hwnd, &rect) ;
           
           
           
                DrawText (hdc, TEXT ("Hello, Windows 98!"), -1, &rect,
           
                       DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;
           
                     EndPaint (hwnd, &ps) ;
           
                       return 0 ;
           
           
           
        case   WM_DESTROY:
           
                PostQuitMessage (0) ;
           
                return 0 ;
           
        }
           
      return DefWindowProc (hwnd, message, wParam, lParam) ;
           
    }

    vs2010给出的错误提示:

    1>hello.obj : error LNK2019: 无法解析的外部符号 __imp__PlaySoundW@12,该符号在函数 _WndProc@16 中被引用
    1>D:\VsApplication\ProgWin\Debug\ProgWin.exe : fatal error LNK1120: 1 个无法解析的外部命令

    求教,这个怎么解决啊

    2011年8月7日 14:55

答案

  • #pragma comment(lib, "Winmm.lib")
    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.
    2011年8月7日 15:36
    版主

全部回复