1.新建->選擇windows桌面嚮導
2.選擇windows應用程序exe
如果是一開始學習可以將空項目選上
3.在項目源文件上右鍵->添加->新建項
選擇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桌面應用就跑起來了,原理性的東西之後再更。