Windows应用程序-文本显示

来源:互联网 发布:java 断点续传 框架 编辑:程序博客网 时间:2024/06/05 20:13

居中显示一幅春联,字体不限,黄色 RGB(255,255,0)

MFC文本显示

#include<windows.h>#include<stdlib.h>#include<string.h>long WINAPI WndProc(HWND hWnd, UINT iMessage, UINT wParam, LONG lParam);BOOL InitWindowsClass(HINSTANCE hInstance);BOOL InitWindows(HINSTANCE hInstance, int nCmdShow);HWND hWndMain;//主函数int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){MSG Message;if (!InitWindowsClass(hInstance))return FALSE;if (!InitWindows(hInstance, nCmdShow))return FALSE;while (GetMessage(&Message, 0, 0, 0)) //消息循环{TranslateMessage(&Message);DispatchMessage(&Message);}return Message.wParam;}long WINAPI WndProc(HWND hWnd, UINT iMessage, UINT wParam, LONG lParam){static long nYChar;int pointx, pointy; int i, j;HDC hDC;       // 定义指向设备环境的句柄HFONT DuiLian_Font;         // 定义字体句柄HBRUSH hBrush;              // 定义只指向画刷的句柄HPEN hPen;                  // 定义指向画笔的句柄TEXTMETRIC tm;// 存放字体各种属性的结构体变量PAINTSTRUCT PtStr; // 指向包含绘图信息的结构体变量static char hengpi[] = { "迎春接福" };static char *duilian[2] = { { "春到百花香满地" },{ "时来万事喜临门" } };switch (iMessage)      //处理消息{case WM_CREATE:// 窗口创建return 0;case WM_PAINT: // 处理重画消息hDC = BeginPaint(hWnd, &PtStr); // 开始绘图// 绘制对联背景hPen = CreatePen(PS_INSIDEFRAME, 3, RGB(255, 0, 0)); //红色实线 hBrush = CreateSolidBrush(RGB(255, 0, 0)); // 绿色水平阴影画刷SelectObject(hDC, hBrush); // 选择画刷SelectObject(hDC, hPen); // 选择画笔Rectangle(hDC, 100, 30, 300, 80); // 绘制横批背景Rectangle(hDC, 100, 100, 150, 395); // 绘制上联背景Rectangle(hDC, 250, 100, 300, 395); // 绘制下联背景// 输出对联内容DuiLian_Font = CreateFont( // 创建自定义字体40,                    // 字体的高度0,                        // 由系统根据高宽比选取字体最佳宽度值0,                    // 文本的倾斜度为0,表示水平0,                    // 字体的倾斜度为0FW_HEAVY,                       // 字体的粗度,FW_HEAVY为最粗0,                    // 非斜体字0,                    // 无下划线0,                    // 无删除线ANSI_CHARSET,                // 表示所用的字符集为ANSI_CHARSETOUT_DEFAULT_PRECIS,        // 输出精度为缺省精度CLIP_DEFAULT_PRECIS,            // 剪裁精度为缺省精度DEFAULT_QUALITY,        // 输出质量为缺省值DEFAULT_PITCH | FF_DONTCARE,    // 字间距和字体系列使用缺省值"粗体字");                 //字体名称SetTextColor(hDC, RGB(255, 255, 0)); // 设置字体颜色为黄色SetBkMode(hDC, TRANSPARENT); // 设置字体背景为透明SelectObject(hDC, DuiLian_Font); // 载入字体到当前设备环境GetTextMetrics(hDC, &tm); // 获取字体信息nYChar = tm.tmHeight + tm.tmExternalLeading;// 字符高度SetTextCharacterExtra(hDC, 12); // 设置字符横向间距TextOut(hDC, 110, 35, hengpi, strlen(hengpi));//用当前字体输出文本for (i = 2; i > 0; i--){for (j = 0; j < 7; j++)// 输出文本{pointx = 105 + (i - 1)*150;pointy = 105 + j*nYChar;TextOut(hDC, pointx, pointy, duilian[2 - i] + j * 2, 2);}}EndPaint(hWnd, &PtStr); return 0; // 结束绘图case WM_DESTROY: // 结束应用程序PostQuitMessage(0);return 0;default:return(DefWindowProc(hWnd, iMessage, wParam, lParam));}}BOOL InitWindows(HINSTANCE hInstance, int nCmdShow) // 初始化窗口{HWND hWnd;hWnd = CreateWindow("WinFill", "文本显示", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL); // 生成窗口if (!hWnd)return FALSE;hWndMain = hWnd;ShowWindow(hWnd, nCmdShow);//显示窗口UpdateWindow(hWnd);return TRUE;}BOOL InitWindowsClass(HINSTANCE hInstance)//定义窗口类{WNDCLASS WndClass;WndClass.cbClsExtra = 0;WndClass.cbWndExtra = 0;WndClass.hbrBackground = (HBRUSH)(GetStockObject(WHITE_BRUSH));WndClass.hCursor = LoadCursor(NULL, IDC_ARROW);WndClass.hIcon = LoadIcon(NULL, "END");WndClass.hInstance = hInstance;WndClass.lpfnWndProc = WndProc;WndClass.lpszClassName = "WinFill";WndClass.lpszMenuName = NULL;WndClass.style = CS_HREDRAW | CS_VREDRAW;return RegisterClass(&WndClass);}
阅读全文
0 0
原创粉丝点击