Visual Studio2017新建win32桌面程序

1.新建->选择windows桌面向导

选择windows桌面向导

2.选择windows应用程序exe

windows应用程序exe

如果是一开始学习可以将空项目选上

3.在项目源文件上右键->添加->新建项

选择cpp文件,然后修改文件名称

选择cpp文件,然后修改文件名称,点击添加。

4.之后添加如下源代码,调试即可

#include <Windows.h>

// 必须要进行前导声明  
LRESULT CALLBACK WindowProc(
    _In_  HWND hwnd,
    _In_  UINT uMsg,
    _In_  WPARAM wParam,
    _In_  LPARAM lParam
);

int CALLBACK WinMain(
    _In_  HINSTANCE hInstance,
    _In_  HINSTANCE hPrevInstance,
    _In_  LPSTR lpCmdLine,
    _In_  int nCmdShow
)
{
    // 类名  
    WCHAR* cls_Name = L"My Class";
    // 设计窗口类  
    WNDCLASS wc = { sizeof(WNDCLASS) };
    wc.hbrBackground = (HBRUSH)COLOR_WINDOW;
    wc.lpfnWndProc = WindowProc;
    wc.lpszClassName = cls_Name;
    wc.hInstance = hInstance;
    wc.style = CS_HREDRAW | CS_VREDRAW;

    // 注册窗口类  
    RegisterClass(&wc);

    // 创建窗口
    HWND hwnd = CreateWindow(
        cls_Name,           //类名,要和刚才注册的一致  
        L"我的应用程序",          //窗口标题文字  
        WS_OVERLAPPEDWINDOW,        //窗口外观样式  
        38,             //窗口相对于父级的X坐标  
        20,             //窗口相对于父级的Y坐标  
        480,                //窗口的宽度  
        250,                //窗口的高度  
        NULL,               //没有父窗口,为NULL  
        NULL,               //没有菜单,为NULL  
        hInstance,          //当前应用程序的实例句柄  
        NULL);              //没有附加数据,为NULL  
    if (hwnd == NULL)                //检查窗口是否创建成功  
        return 0;

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

    // 更新窗口  
    UpdateWindow(hwnd);

    // 消息循环  
    MSG msg;
    while (GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return 0;
}

// 在WinMain后实现  
LRESULT CALLBACK WindowProc(
    _In_  HWND hwnd,
    _In_  UINT uMsg,
    _In_  WPARAM wParam,
    _In_  LPARAM lParam
)
{
    switch (uMsg)
    {
    case WM_DESTROY:
    {
        PostQuitMessage(0);
        return 0;
    }
    case WM_PAINT:
    {
        PAINTSTRUCT ps;
        BeginPaint(hwnd, &ps);
        // 设置hdc颜色
        SetTextColor(ps.hdc, RGB(10, 0, 255));//设置文本颜色  
        DrawText(ps.hdc, L"朋友,你好。", wcslen(L"朋友,你好。"), &(ps.rcPaint), DT_CENTER);
        // 用于设置每个字符间隔的数组  
        int arr1[2] = { 45,0 };
        int arr2[3] = { 35, 40, 0 };
        int arr3[2] = { 32, 0 };
        POLYTEXT polys[] = { { 2,2, wcslen(L"大家"),L"大家",ETO_CLIPPED,ps.rcPaint,&arr1[0] },
        { 2,25,wcslen(L"新年好"),L"新年好",ETO_CLIPPED,ps.rcPaint,&arr2[0] },
        { 30,60,wcslen(L"快乐\0"),L"快乐\0",ETO_CLIPPED,ps.rcPaint,&arr3[0] }
        };
        PolyTextOut(ps.hdc, &polys[0], 3);
        // 填充图形  
        // 创建画刷  
        HBRUSH hb = CreateSolidBrush(RGB(0, 255, 0));
        // 画刷选择到当前DC中  
        HBRUSH orgBrs = (HBRUSH)SelectObject(ps.hdc, hb);
        // 填充图形  
        Ellipse(ps.hdc, 135, 35, 202, 170);
        // 选回原先的画刷  
        SelectObject(ps.hdc, orgBrs);
        DeleteObject(hb); //清理对
        EndPaint(hwnd, &ps);
    }
    default:
        break;
    }
    return DefWindowProc(hwnd, uMsg, wParam, lParam);
}

这样一个简单的win32桌面应用就跑起来了,原理性的东西之后再更。
效果图

  • 9
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值