標籤:
#include<windows.h>
#include<tchar.h>
#define TIME 5
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
WNDCLASS clock;
static TCHAR* szAppName = TEXT("定時喚醒程式");
HWND hwnd = NULL;
MSG msg;
clock.style = CS_HREDRAW | CS_VREDRAW;
clock.lpfnWndProc = WndProc;
clock.cbClsExtra = 0;
clock.cbWndExtra = 0;
clock.hInstance = hInstance;
clock.hIcon = LoadIcon(hInstance, IDI_APPLICATION);
clock.hCursor = LoadCursor(NULL, IDC_ARROW);
clock.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
clock.lpszMenuName = NULL;
clock.lpszClassName = szAppName;
if (!RegisterClass(&clock))
{
MessageBox(NULL, TEXT("這個程式只能在Win32下運行!"), TEXT("錯誤!!!"), MB_ICONERROR);
return 0;
}
hwnd = CreateWindow(szAppName,
TEXT("休息休息!"),
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
400,
100,
NULL,
NULL,
hInstance,
NULL);
ShowWindow(hwnd, iCmdShow);
UpdateWindow(hwnd);
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
RECT rect;
TCHAR words[1024];
switch (message)
{
case WM_CREATE:
SetTimer(hwnd, 1, 1000 * 60 * TIME, NULL);
break;
case WM_PAINT:
hdc = BeginPaint(hwnd, &ps);
GetClientRect(hwnd, &rect);
DrawText(hdc, TEXT("該喝水了!——DrawText( );"), -1, &rect, DT_SINGLELINE | DT_VCENTER | DT_CENTER);
TextOut(hdc, 0, 0, words, wsprintf(words, TEXT("該喝水了!——TextOut();")));
EndPaint(hwnd, &ps);
return 0;
case WM_TIMER:
ShowWindow(hwnd, SW_SHOWNORMAL);
break;
case WM_DESTROY:
KillTimer(hwnd, 1);
PostQuitMessage(0);
break;
}
return DefWindowProc(hwnd, message, wParam, lParam);
}
程式使用的函數:
SetTimer(hwnd, 1, 3000, NULL); —一個計時器函數
1——計時器編號
3000——時間,以毫秒為單位
KillTimer(hwnd, 1); ——移除計時器, 一般與SetTimer 成對使用
1——計時器編號
RECT結構 ——rect這個對象是用來儲存成對出現的參數, 比如矩形的坐上角座標、寬度和高度
left——指定矩形框左上方的 x 座標
top——……………………y 座標
right——指定矩形框右下角的 x 座標
bottom——……………………y 座標
GetClientRect(hwnd, lpRect); ——將視窗的客戶區的座標寫入 RECT 的結構中
lpRect——指向 RECT 結構的指標中
DrawText(hac, lpString, nCount, lpRect, uFormat); ——輸出字元函數
lpString——字串指標
nCount——字串長度, 如果為 -1 則自動計算 ‘\0‘ 之前的字串長度
uFormat——設定字元輸出在視窗的樣式
DT_CENTER:指定文本水平置中顯示。
DT_SINGLELINE:單行顯示文本,斷行符號和分行符號都不斷行。
DT_VCENTER:指定文本垂直置中顯示。該標記只在單行文本輸出時有效,所以它必須與DT_SINGLELINE結合使用
TextOut(hdc, x, y, lpString, nCount); ——輸出字元函數
x——開始繪製文字的左上方距視窗左邊的距離
y——……………………右上方…………
ShowWindow(hwnd, nCmdShow); ——視窗顯示設定
nCmdShow——指定視窗如何顯示
SW_SHOW:在視窗原來的位置以原來的尺寸啟用和顯示視窗
SW_HIDE:隱藏視窗並啟用其他視窗
SW_RESTORE:啟用並顯示視窗。如果視窗最小化或最大化,則系統將視窗恢複到原來的尺寸和位置
…………
…………
FlashWindow(hwnd, TRUE); ——視窗圖表閃動函數
TRUE——TRUE指即使視窗處於啟用狀態也閃動視窗圖表,
FALSE 指只有視窗處於未啟用狀態才閃動圖表
建立一個簡單的計時器