1

我在 C++ Visual Studio 中创建简单窗口时遇到问题。我开始了一个新的“空项目”,只创建了一个.cpp文件。当我尝试运行该程序时,我收到此错误:

Unable to start program C:\...\Project1.exe. The system cannot find the file specified. 

为什么会这样?我正在使用视觉工作室 2010。

这是我的代码:

#include <windows.h>

// Function prototypes.
LRESULT CALLBACK WndProc( HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam );
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR szCmdLine, int iCmdShow );


int WINAPI WinMain( HINSTANCE hInstance,    
                    HINSTANCE hPrevInstance,
                    LPSTR szCmdLine,        
                    int iCmdShow )          


    #pragma region part 1 - STARTUP STUFF

    WNDCLASS wc;
    wc.cbClsExtra = 0;  
    wc.cbWndExtra = 0; 
    wc.hbrBackground = (HBRUSH)GetStockObject( WHITE_BRUSH );   
    wc.hCursor = LoadCursor( NULL, IDC_ARROW );            
    wc.hIcon = LoadIcon( NULL, IDI_APPLICATION );        
    wc.hInstance = hInstance;          
    wc.lpfnWndProc = WndProc;           
    wc.lpszClassName = TEXT("Philip");  
    wc.lpszMenuName = 0;    // no menu - ignore
    wc.style = CS_HREDRAW | CS_VREDRAW; // Redraw the window

    RegisterClass( &wc );  
    HWND hwnd = CreateWindow(
        TEXT("Philip"),         

        TEXT("window's title!"),// appears in title of window

        WS_OVERLAPPEDWINDOW,    
        10, 10,                 
        200, 200,               
        NULL, NULL,             
        hInstance, NULL );      


    ShowWindow(hwnd, iCmdShow );
    UpdateWindow(hwnd);
    #pragma endregion

    #pragma region part 2 - ENTER A LOOP TO CONTINUALLY KEEP CHECKING WITH WIN O/S FOR USER INTERACTION

    MSG msg;

    while( GetMessage( &msg, NULL, 0, 0 ) )
    {


        TranslateMessage( &msg );   

        DispatchMessage( &msg );  


    }
    #pragma endregion

    return msg.wParam;    // return from WinMain
}

LRESULT CALLBACK WndProc(   HWND hwnd,      // "handle" to the window that this message is for
                            UINT message,   // TYPE of message (e.g. WM_PAINT is a message asking to paint the window)
                            WPARAM wparam,  // information about the actual message
                            LPARAM lparam ) // MORE info about the message
{


    switch( message )
    {
    case WM_CREATE:
        // upon creation, let the speaker beep at 50Hz, for 10ms.
        Beep( 50, 10 );
        return 0;
        break;

    case WM_PAINT:
        {

            HDC hdc;
            PAINTSTRUCT ps;
            hdc = BeginPaint( hwnd, &ps );

            // draw a circle and a 2 squares
            Ellipse( hdc, 20, 20, 160, 160 );
            Rectangle( hdc, 50, 50, 90, 90 );
            Rectangle( hdc, 100, 50, 140, 90 );

            EndPaint( hwnd, &ps );
        }
        return 0;
        break;

    case WM_DESTROY:
        PostQuitMessage( 0 ) ;
        return 0;
        break;


    }
    return DefWindowProc( hwnd, message, wparam, lparam );
}
4

1 回答 1

1

如果您想创建一个窗口,那么您的项目类型是Windows Form Application(见上图)。

解决方案是将多个项目组合在一起的抽象概念。例如,您可能希望Windows Form Application使用 a 的功能Class Library

在此处输入图像描述

于 2013-08-09T09:40:37.977 回答