📄 13-2.txt
字号:
/* 范例:13-2 */
/* 以下程序代码将范例13-1的WindowProc( )改写 */
long CALLBACK WindowProc(HWND hWnd, UINT message,
WPARAM wParam, LPARAM lParam)
{
HDC hDC; // Display context handle
PAINTSTRUCT PaintSt; // 定义绘图区域的结构
RECT aRect; // 工作矩形区域
switch(message) // 处理信息
{
case WM_PAINT: // 重绘窗口时
hDC = BeginPaint(hWnd, &PaintSt); // 准备开始重绘
// 获得工作区左上角
GetClientRect(hWnd, &aRect);
SetBkMode(hDC, TRANSPARENT); // 设定文字背景模式
// 在窗口工作区绘出文字
DrawText(
hDC, // 设备内容代码
"按鼠标左键改标题!!", // 绘出的文字
-1, // 指向以'\0'结尾字符串
&aRect, // 绘文字的矩形区域
DT_SINGLELINE| // 文字格式 - 单行
DT_CENTER| // - 线中间
DT_VCENTER // - 线在矩形中央
);
EndPaint(hWnd, &PaintSt); // 窗口重绘结束
return 0;
case WM_DESTROY: // 窗口被关闭
PostQuitMessage(0);
return 0;
case WM_LBUTTONDOWN: // 鼠标左键,改Title+白矩形
// 设定窗口标题行(title)文字
SetWindowText(hWnd, (LPSTR)"Change Title!");
//=========画一个白色填满的矩形=========
HBRUSH hbr, hbrOld;
hDC = GetDC(hWnd); // 获得DC
// 建立并获得白色笔刷(Brush)
hbr = (HBRUSH)GetStockObject(WHITE_BRUSH);
hbrOld = (HBRUSH)SelectObject(hDC, hbr);
// 画矩形
Rectangle(hDC, 10, 10, 100, 100);
// 选择旧笔刷(还原笔刷)
SelectObject(hDC, hbrOld);
DeleteObject(hbr);
//======================================
return 0;
case WM_RBUTTONDOWN: // 鼠标右键,画红色矩形框
//=========画一个红色外框的矩形=========
HPEN hpen, hpenOld;
hDC = GetDC(hWnd); // 获得DC
// 建立并获得画笔(Pen)
hpen = CreatePen(PS_SOLID, 6, RGB(255, 0, 0));
hpenOld = (HPEN)SelectObject(hDC, hpen);
// 画矩形
Rectangle(hDC, 10, 10, 100, 100);
// 选择旧画笔(还原画笔)
SelectObject(hDC, hpenOld);
DeleteObject(hpen);
//======================================
return 0;
default: // 不处理的信息,交给系统自行处理
return DefWindowProc(hWnd, message, wParam, lParam);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -