使用VisualStudio 新建一个Windows应用程序(1)

时间:2024-04-13 14:20:39

1、打开VisualStudio 2019,选择“创建新项目”

使用VisualStudio 2019新建一个Windows应用程序(1)

2、进入“创建新项目”界面,选择“Windows桌面应用向导”,点击“下一步” 

使用VisualStudio 2019新建一个Windows应用程序(1)

3、配置新项目:为新项目输入项目名称。指定项目存放文件的位置

使用VisualStudio 2019新建一个Windows应用程序(1)

 4、点击“创建”

使用VisualStudio 2019新建一个Windows应用程序(1)
5、选择希望创建的新项目的类型,在本例中,选择“桌面应用程序”,"空项目"

使用VisualStudio 2019新建一个Windows应用程序(1)
6、添加第一个源文件:鼠标右键点击“源文件”,选择“添加”->“新建项”

使用VisualStudio 2019新建一个Windows应用程序(1)
7、选择新建项类型为“C++文件(.cpp)”,输入源文件的名称myTest.cpp,点击“添加”

8、将以下代码拷贝到myTest.cpp之中:
#include<windows.h>

//定义回调函数,处理窗口消息的函数
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
    //定义一个静态变量用于保存应用程序的名称,数据类型是TCHAR数组
    static    TCHAR    szAppName[] = TEXT("CreateWin32_Form  Sample!");

    //定义一个窗口句柄变量
    HWND            hwnd;
    
    //定义一个消息变量
    MSG                msg;

    //定义一个窗口类,实例名称wndclass
    WNDCLASS        wndclass;


    //为窗口类的属性赋值
    
    //窗口类的风格属性
    wndclass.style = CS_HREDRAW | CS_VREDRAW;

    //窗口类的消息处理函数,将消息传递给WndProc函数进行处理
    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 = CreateSolidBrush(RGB(0, 100, 100));
    wndclass.lpszMenuName = NULL;
    wndclass.lpszClassName = szAppName;

    //注册窗口类
    if (!RegisterClass(&wndclass))        
    {
        MessageBox(NULL, TEXT("注册失败!"), szAppName, MB_ICONERROR);
        return 0;
    }

    //为窗体添加WS_EX_LAYERED属性,该属性使窗体支持透明
    hwnd = CreateWindowEx(WS_EX_LAYERED, szAppName, TEXT("我的第一个窗口例程"),
        WS_POPUP | WS_VISIBLE, 200, 200, 800, 600, NULL, NULL, hInstance, NULL);
    BYTE byteAlpha = 180;

    // 设置WS_EX_LAYERED属性,该属性使窗体支持透明
    SetLayeredWindowAttributes(hwnd, NULL, byteAlpha, LWA_ALPHA); 

    // 显示窗口
    ShowWindow(hwnd, iCmdShow);

    // 更新窗口
    UpdateWindow(hwnd);

    // 启动消息处理机制
    while (GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

    // 退出窗口,返回消息到Windows
    return msg.wParam;
}

// 消息处理回调函数原型
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    int result;
    switch (message)
    {
    case WM_LBUTTONDOWN:
    {
        //鼠标左键的响应函数,启动拖动事件
        SendMessage(hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0);
        break;
    }
    case WM_KEYDOWN:
        switch (wParam) 
        {
        case VK_ESCAPE:
            // Escape键的操作响应
            result = MessageBox(hwnd, "确定退出吗?", "退出!", 
                MB_YESNO | MB_ICONQUESTION);
            if (result == IDYES)
                PostQuitMessage(0);
            return 0;
        default:
            return 0;
        }
    case WM_DESTROY:
        // 退出程序的消息处理
        PostQuitMessage(0);
        return 0;
    }

    // 未定义的消息交给系统的默认函数进行处理
    return DefWindowProc(hwnd, message, wParam, lParam);
}

9、编译代码,系统提示“发生生成错误”,在输出栏看到以下消息输出

使用VisualStudio 2019新建一个Windows应用程序(1)

提示在myTest.cpp的90行发生无法将参数2从"const char [12]"转换为“LPCWSTR”,这是因为VisualStudio2019默认的字符集为UNICODE。


10、鼠标右键点击项目名称,选择“属性”->“配置属性”->“高级”->“高级属性”->“字符集”,将字符集属性修改为“使用使用多字节字符集”

使用VisualStudio 2019新建一个Windows应用程序(1)

11、重新编译并运行,代码可以正常运行了。

VS2019界面的改变可能会有点不习惯,不过核心的内容只是换了个新的面孔出现了。希望能够在使用中逐渐熟悉他的这些变化。