📄 13-1.txt
字号:
/* 范例:13-1 */
#include <windows.h>
#include <vcl.h>
long CALLBACK WindowProc(HWND hWnd, UINT message, \
WPARAM wParam, LPARAM lParam);
int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE \
hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
WNDCLASS WindowClass; // 建立WNDCLASS结构变量
static char szAppName[] = "OFWin"; // 定义 window class 名称
HWND hWnd; // 窗口代码(HWND结构变量hWnd)
MSG msg; // 信息结构(MSG结构变量msg)
if(!hPrevInstance)
{
// 若窗口改变大小时,重绘窗口
WindowClass.style = CS_HREDRAW | CS_VREDRAW;
// 定义处理信息的窗口程序(Window procedure)
WindowClass.lpfnWndProc = WindowProc;
WindowClass.cbClsExtra = 0; // 类结构中所保留的额外空间
WindowClass.cbWndExtra = 0; // 窗口结构中所保留的额外空间
WindowClass.hInstance = hInstance; // 应用程序代码
// 设定应用程序默认Icon
WindowClass.hIcon = LoadIcon(0, IDI_APPLICATION);
// 将窗口光标设成标准箭头
WindowClass.hCursor = LoadCursor(0, IDC_ARROW);
// 设定背景画刷(brush)颜色为灰色笔刷
WindowClass.hbrBackground = \
static_cast<HBRUSH>(GetStockObject(GRAY_BRUSH));
// 指定到class menu的资源名称,此处未使用菜单,
// 因此无相对应资源名称
WindowClass.lpszMenuName = 0;
WindowClass.lpszClassName = szAppName; // 设定结构名称
RegisterClass(&WindowClass); // 注册此window class
}
// 建立窗口
hWnd = CreateWindow(
szAppName, // 已注册的window class名称
"A Basic Window the Hard Way", // 窗口标题
WS_OVERLAPPEDWINDOW, // 设定窗口为重叠显示
CW_USEDEFAULT, // 窗口在screen左上角x位置
CW_USEDEFAULT, // 窗口在screen左上角y位置
CW_USEDEFAULT, // 窗口水平大小
CW_USEDEFAULT, // 窗口垂直大小
0, // 表示无父窗口
0, // 没有Menu
hInstance, // 程序的代码
0 // 建立参数指针
);
ShowWindow(hWnd, nCmdShow); // 显示窗口
UpdateWindow(hWnd); // 使文本工作区被着色
// 信息循环
while(GetMessage(&msg, 0, 0, 0) == TRUE) // 获得所有信息
{
TranslateMessage(&msg); // 转换虚拟键信息成为字符信息
DispatchMessage(&msg); // 分配信息
}
return msg.wParam; // 返回Windows系统
}
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); // 弹出WM_QUIT信息
return 0;
default: // 不处理的信息,交给系统自行处理
return DefWindowProc(hWnd, message, wParam, lParam);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -