簡單程式:擊鍵文字改色
先來看程序運行效果:
擊鍵後變成如下效果:
文件 | 新建 | Win32 Application | 工程 “擊鍵變色” | An empty project | 完成 | 確定,
文件 | 新建 | C++ Source File | 文件 “main”,然後將如下代碼貼到main.cpp文件中,再編譯 | 構建 “擊鍵變色”即可。
下面是代碼:
/// main.cpp /
///
#include <windows.h>
//被用作窗口類名被註冊
LPCTSTR lpszAppName = TEXT("MyApp");
//窗口標題
LPCTSTR lpszTitle = TEXT("My Application");
//窗口處理函數
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
//主函數,程式入口處
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
//消息結構聲明
MSG msg;
//窗口句柄
HWND hWnd;
//窗口類聲明及填充
WNDCLASS wc;
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = (WNDPROC)WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
wc.lpszMenuName = lpszAppName;
wc.lpszClassName = lpszAppName;
//窗口類註冊
if(!RegisterClass(&wc))
return(FALSE);
//以窗口類“wc”為參數新建一標題為“My Application”之窗口
hWnd = CreateWindow(lpszAppName, lpszTitle, WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,0, CW_USEDEFAULT, 0, NULL,
NULL, hInstance, NULL);
if(!hWnd)
return(FALSE);
//顯示此窗口
ShowWindow(hWnd, nCmdShow);
//更新此窗口
UpdateWindow(hWnd);
//進入消息循環
while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return(msg.wParam);
}
//窗口處理函數
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
//矩形結構
RECT rect;
//顯示設備句柄
HDC hdc;
PAINTSTRUCT ps;
//三原色變量
static int uRed = 0,uGreen = 0,uBlue = 0;
//消息處理
switch(uMsg)
{
//窗口重繪
case WM_PAINT :
hdc = BeginPaint(hWnd, &ps);
GetClientRect(hWnd, &rect);
SetTextColor(hdc, RGB(uRed, uGreen, uBlue));
DrawText(hdc, TEXT("你好!"), -1, &rect,
DT_SINGLELINE | DT_CENTER | DT_VCENTER);
EndPaint(hWnd, &ps);
break;
//鍵盤如有鍵按下
case WM_KEYDOWN :
//調色
uRed = rand() % 255;
uGreen = rand() % 255;
uBlue = rand() % 255;
//強制重繪
InvalidateRect(hWnd, NULL, TRUE);
break;
//窗口銷毀
case WM_DESTROY :
PostQuitMessage(0);
break;
//默認消息處理
default :
return DefWindowProc(hWnd, uMsg, wParam, lParam);
}
return(0);
}
eof ///