#include <windows.h>
//視窗過程聲明
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdline, int nCmdShow)
{
const char* szWindowName = "第一個 Windows 應用程式"; //視窗標題
const char* szClassName = "WindowClass"; //視窗類別名
//建立一個 WNDCLASSEX 結構體變數, 為其設定成員的值
WNDCLASSEX wndclass;
wndclass.cbSize = sizeof(WNDCLASSEX); //結構大小
wndclass.style = CS_HREDRAW | CS_VREDRAW; //水平重畫,豎直重畫
wndclass.lpfnWndProc = (WNDPROC)WndProc; //視窗過程
wndclass.cbClsExtra = 0; //沒有額外的類記憶體
wndclass.cbWndExtra = 0; //沒有額外的視窗記憶體
wndclass.hInstance = hInstance; //執行個體控制代碼
wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION); //程式表徵圖
wndclass.hCursor = LoadCursor(NULL, IDC_CROSS); //滑鼠樣式
wndclass.hbrBackground = (HBRUSH)::GetStockObject(WHITE_BRUSH); //背景白色
wndclass.lpszMenuName = NULL; //沒有菜單名
wndclass.lpszClassName = szClassName; //視窗類別名
wndclass.hIconSm = NULL; //沒有類的小表徵圖
//註冊 WNDCLASSEX 結構體
::RegisterClassEx(&wndclass);
//建立主視窗
HWND hWnd = ::CreateWindowEx(
0, //dwExstyle, 擴充樣式
szClassName, //lpClassName, 類名
szWindowName, //lpWindowName, 標題
WS_OVERLAPPEDWINDOW, //dwStyle, 視窗風格
CW_USEDEFAULT, //X, 初始 X 座標
CW_USEDEFAULT, //Y, 初始 Y 座標
CW_USEDEFAULT, //nWidth, 寬度
CW_USEDEFAULT, //nHeight, 高度
NULL, //hWndParent, 父視窗控制代碼
NULL, //hMenu, 菜單控制代碼
hInstance, //hInstance, 程式執行個體控制代碼
NULL); //lpparam, 使用者資料
if(hWnd == NULL)
{
::MessageBox(NULL, "建立視窗出錯!", "error", MB_OK);
return FALSE;
}
//顯示視窗
::ShowWindow(hWnd, nCmdShow);
//重新整理視窗
::UpdateWindow(hWnd);
//訊息迴圈
MSG msg;
while(::GetMessage(&msg, NULL, 0, 0))
{
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}
return msg.wParam;
}
//視窗過程函數
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
const char* szHello = "Hello World";
switch(message)
{
//重繪視窗
case WM_PAINT:
HDC hdc;
PAINTSTRUCT ps;
hdc = ::BeginPaint(hWnd, &ps);
::TextOut(hdc, 10, 10, szHello, strlen(szHello));
::EndPaint(hWnd, &ps);
break;
//銷毀視窗
case WM_DESTROY:
::PostQuitMessage(0);
break;
}
//交給系統做預設處理
return ::DefWindowProc(hWnd, message, wParam, lParam);
}