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桌面應用就跑起來了,原理性的東西之後再更。
效果圖

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章