以下是完成输出文字的代码部分
#include <Windows.h> // windows程序所依赖的头文件 #pragma comment(lib,"winmm.lib") #define WINDOW_WIDTH 800 // 窗口宽度 #define WINDOW_HEIGHT 600 // 窗口高度 #define WINDOW_TITLE L"第三讲:windows标准输出字符与图形" // 窗口标题名称 HDC g_hdc = NULL; // 定义全局设备环境句柄 BOOL InitRes(HWND hwnd); // 资源初始化 VOID PaintFunc(HWND hwnd); // 绘图函数 BOOL CleaupFunc(HWND hwnd); // 释放资源 LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam); // 窗口过程函数 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) { // 一、设计完整窗口类型 WNDCLASSEX windclass = { 0 }; windclass.cbSize = sizeof(WNDCLASSEX); // 设计结构体的字节数大小 windclass.style = CS_HREDRAW | CS_VREDRAW; // 窗口样式 windclass.lpfnWndProc = WndProc; // 指向窗口过程函数的指针 windclass.cbClsExtra = 0; // 窗口类的附加内存 windclass.cbWndExtra = 0; // 窗口的附加内存 windclass.hInstance = hInstance; // 指定包含窗口过程的程序实例句柄 windclass.hIcon = (HICON)::LoadImage(NULL,L"icon.ico",IMAGE_ICON,0,0,LR_DEFAULTSIZE|LR_LOADFROMFILE); // 窗口标题图标 windclass.hCursor = LoadCursor(NULL, IDC_ARROW); // 指定窗口类的光标句柄 windclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); // 指定白色画刷句柄 windclass.lpszMenuName = NULL; // 窗口菜单 windclass.lpszClassName = L"CharGraphicDemo"; // 指定窗口类的名称 // 二、注册窗口类 if (!RegisterClassEx(&windclass)) return -1; // 三、创建窗口 HWND hwnd = CreateWindow(L"CharGraphicDemo", WINDOW_TITLE, WS_OVERLAPPEDWINDOW, METRICS_USEDEFAULT, METRICS_USEDEFAULT, WINDOW_WIDTH, WINDOW_HEIGHT, NULL, NULL, hInstance, NULL); // 四、显示 更新窗口 MoveWindow(hwnd, 380, 100,WINDOW_WIDTH,WINDOW_HEIGHT,true); // 移动窗口 ShowWindow(hwnd, nShowCmd); UpdateWindow(hwnd); // 初始化资源 if (!InitRes(hwnd)) { MessageBox(hwnd, L"资源初始化失败!", L"提示", 0); return FALSE; } // 添加背景音乐 mciSendString(L"Open ./Music/轻音乐-天气预报背景音乐.mp3 alias music", 0, 0, 0); mciSendString(L"play music repeat", 0, 0, 0); // 五、消息循环过程 MSG msg = { 0 }; while (msg.message != WM_QUIT) { if (PeekMessage(&msg, 0, 0, 0, PM_REMOVE)) { TranslateMessage(&msg); DispatchMessage(&msg); } } // 六、窗口类的注销 UnregisterClass(L"CharGraphicDemo", windclass.hInstance); // 程序结束 注销类 return 0; } LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { PAINTSTRUCT ps; // 定义记录变量 switch (message) { case WM_PAINT: // 客户区重绘消息 g_hdc = BeginPaint(hwnd, &ps); InitRes(hwnd); EndPaint(hwnd, &ps); ValidateRect(hwnd, NULL); // 更新客户区的显示 break; case WM_DESTROY: // 若是窗口销毁消息 PostQuitMessage(0); // 向系统表明有线程终止请求,用来响应WM_DESTROY消息 break; default: // 如果上面所有case条件都不符合,则执行该语句 return DefWindowProc(hwnd, message, wParam, lParam); // 调用缺少窗口过程 } return 0; } BOOL InitRes(HWND hwnd) // 资源初始化 { g_hdc = GetDC(hwnd); // 获取设备环境句柄 PaintFunc(hwnd); ReleaseDC(hwnd, g_hdc); // 释放设备环境句柄 return TRUE; } VOID PaintFunc(HWND hwnd) // 绘图函数 { HFONT hFont = CreateFont(30, 0, 0, 0, 0, 0, 0, 0, GB2312_CHARSET, 0, 0, 0, 0, L"微软雅黑"); // 创建字体 SelectObject(g_hdc, hFont); // 将字体迁入设备环境句柄 SetBkMode(g_hdc, TRANSPARENT); // 文字背景色为透明 // 定义三段文字字符串 wchar_t textFirst[] = L"星星之为,可以燎原;数风流人物还看今朝;"; wchar_t textsecond[] = L"与天奋斗,其乐无穷!与地奋斗,其乐无穷!与人奋斗,其乐无穷!"; wchar_t textthird[] = L"----------毛主席"; SetTextColor(g_hdc, RGB(50, 255, 50)); TextOut(g_hdc, 30, 150, textFirst, wcslen(textFirst)); SetTextColor(g_hdc, RGB(50, 50, 255)); TextOut(g_hdc, 30, 200, textsecond, wcslen(textsecond)); SetTextColor(g_hdc, RGB(50, 150, 50)); TextOut(g_hdc, 500, 250, textthird, wcslen(textthird)); DeleteObject(hFont); // 释放字体对象 } BOOL CleaupFunc(HWND hwnd) // 释放资源 { // 留给大家自己完成 return TRUE; }