1. #include <windows.h>
  2. #include "res/resource.h"
  3. LRESULT CALLBACK WinProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
  4. BOOL InitApp(HINSTANCE hInstance, LPCSTR szClassName);
  5. BOOL InitInstance(HINSTANCE hInstance, LPCSTR szClassName, int nCmdShow);
  6. int WINAPI WinMain(
  7. IN HINSTANCE hInstance,
  8. IN HINSTANCE hPrevInstance,
  9. IN LPSTR lpCmdLine,
  10. IN int nShowCmd
  11. )
  12. {
  13. MSG msg;
  14. char szClassName[] = "FontFace";  //窗口名
  15. //注册窗口类
  16. if(!InitApp(hInstance, szClassName))
  17. return 0;
  18. //初始化窗口
  19. if( !InitInstance(hInstance, szClassName, nShowCmd) )
  20. return 0;
  21. while(GetMessage(&msg, NULL, NULL, NULL))
  22. {
  23. TranslateMessage(&msg);  //消息解释
  24. DispatchMessage(&msg);   //消息传送
  25. }
  26. return (int)msg.wParam;
  27. }
  28. LRESULT CALLBACK WinProc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
  29. {
  30. PAINTSTRUCT ps;
  31. HDC hdc;
  32. HFONT hFont, hOldFont;
  33. RECT rect;
  34. char *str = "徐国先";
  35. int width;
  36. int height;
  37. switch( uMsg )
  38. {
  39. case WM_PAINT:
  40. hdc = BeginPaint(hwnd, &ps);
  41. GetClientRect(hwnd, &rect);
  42. width = (rect.right-20)/(int)strlen(str);
  43. height = rect.bottom-20;
  44. hFont = CreateFont(
  45. height,      //字体的逻辑高度
  46. width,       //逻辑平均字符宽度
  47. 0,           //与水平线的角度
  48. 0,           //基线方位角度
  49. FW_REGULAR,  //字形:常规
  50. FALSE,       //字形:斜体
  51. FALSE,       //字形:下划线
  52. FALSE,       //字形:粗体
  53. GB2312_CHARSET,          //字符集
  54. OUT_DEFAULT_PRECIS,      //输出精度
  55. CLIP_DEFAULT_PRECIS,     //剪截精度
  56. PROOF_QUALITY,           //输出品质
  57. FIXED_PITCH | FF_MODERN, //倾斜度
  58. "隶书"                   //字体
  59. );
  60. hOldFont = (HFONT)SelectObject(hdc, hFont);       //选择字体
  61. SetTextColor(hdc, 0xC0C0C0);
  62. TextOut(hdc, 10, 10, str, (int)strlen(str));
  63. SelectObject(hdc, hOldFont);                      //选择旧字体
  64. DeleteObject(hFont);                              //删除新字体
  65. EndPaint(hwnd, &ps);
  66. break;
  67. case WM_DESTROY:
  68. PostQuitMessage(0);
  69. break;
  70. default:
  71. return DefWindowProc(hwnd, uMsg, wParam, lParam);
  72. }
  73. return 0;
  74. }
  75. BOOL InitApp(HINSTANCE hInstance, LPCSTR szClassName)
  76. {
  77. WNDCLASS wndClass;
  78. ZeroMemory(&wndClass, sizeof(wndClass));
  79. wndClass.style          = CS_VREDRAW|CS_HREDRAW;
  80. wndClass.cbClsExtra     = 0;
  81. wndClass.cbWndExtra     = 0;
  82. wndClass.hInstance      = hInstance;
  83. wndClass.hCursor        = LoadCursor(hInstance, IDC_ARROW);
  84. wndClass.hIcon          = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_TEST));
  85. wndClass.hbrBackground  = (HBRUSH)GetStockObject(COLOR_BTNFACE);
  86. wndClass.lpfnWndProc    = (WNDPROC)WinProc;
  87. wndClass.lpszClassName  = (LPCSTR)szClassName;
  88. wndClass.lpszMenuName   = NULL;
  89. return RegisterClass(&wndClass);
  90. }
  91. BOOL InitInstance(HINSTANCE hInstance, LPCSTR szClassName, int nCmdShow)
  92. {
  93. HWND hwnd;
  94. hwnd = CreateWindow(
  95. szClassName,
  96. "Sdk 字体变换",
  97. WS_OVERLAPPEDWINDOW,
  98. CW_USEDEFAULT, CW_USEDEFAULT,
  99. 400, 300,
  100. NULL,
  101. NULL,
  102. hInstance,
  103. NULL
  104. );
  105. //
  106. if (!hwnd) return FALSE;
  107. ShowWindow(hwnd, nCmdShow);
  108. UpdateWindow(hwnd);
  109. return TRUE;
  110. }

该代码参考网上学习代码

win32 字体变换与窗口同大同小的更多相关文章

  1. win32程序之子窗口编程

    win32程序之子窗口编程 一丶简介.什么是子窗口 在前边我们已经讲解了窗口的本质.以及如何注册窗口类跟创建窗口. 还讲了消息循环. 那么有很多窗口其实Windows已经帮我们创建出来了.我们直接使用 ...

  2. Win32 程序开发:窗口类结构体 WNDCLASS 和 WNDCLASSEX

    一.窗口类结构体简介 窗口类结构体包含了窗口的各种参数信息.比如:窗口的图标.菜单栏.背景颜色.窗口的消息处理等等. 窗口类结构体有两个:WNDCLASS(早期版本) 和 WNDCLASSEX(新版本 ...

  3. C# 控制台程序(命令行程序)设置字体颜色,窗口宽高,光标行数

    控制台程序(命令行程序)设置窗口宽度高度,如下代码: Console.WriteLine(Console.WindowHeight); Console.WriteLine(Console.Buffer ...

  4. win32手动创建windows窗口的,小记

    摘抄自文档,其中的函数需要以后花时间看 向 WinMain 添加功能 首先,在 WinMain 函数内部创建 WNDCLASSEX 类型的窗口类结构. 此结构包含有关窗口的信息,如应用程序图标.窗口的 ...

  5. cmd窗口关闭 -----window小技巧!

    前沿 平时开发的时候经常用到windows  的命令行工具来启动程序  或是 查看本地数据库的信息 : 经常的手动关闭 ,对于我这种,能用键盘完成的就坚决不用鼠标的人是多么痛苦. 所以在此罗列了一些命 ...

  6. win32之全屏窗口

    游戏开发中经常使用会让游戏以全屏窗口的状态运行,下面一个例子就是来实现这个效果的. #include <windows.h> void RegisterMyClass(); LRESULT ...

  7. C#调用win32 api 操作其它窗口

    实现以下功能: 找到窗体 找到控件(也叫子窗体) 获取内容 获取位置 设置 位置 内容 鼠标点击 示范 1. 找窗体 以操作系统自带的计算器为例 string clWindow = "Cal ...

  8. win32键盘记录 -- 自定义窗口类

    最近学了些关于window api编程的知识,于是琢磨编写一些键盘记录器,能够把输入的按键输出到窗口内,并且实现窗口自动滚动. 封装窗口类使用了GWL_USERDATA字段来保存this指针,比较容易 ...

  9. QT制作窗口切换的小程序

    前言:本次实验是在三个窗口之间自由切换,窗口中播放gif格式的动态图. 让我们先来看看使用到的主要的函数: 一.播放gif格式动态图的函数 QMovie *movie = new QMovie(&qu ...

随机推荐

  1. ADB logcat 过滤方法(抓取日志)

    1. Log信息级别 Log.v- VERBOSE  : 黑色 Log.d- DEBUG  : 蓝色 Log.i- INFO  : 绿色 Log.w- WARN  : 橙色 Log.e- ERROR ...

  2. Qt删除指定文件

    Qt删除指定文件: QFile fileTemp(filename); fileTemp.remove();

  3. NET Core 以及与 .NET Framework

    简析.NET Core 以及与 .NET Framework的关系 简析.NET Core 以及与 .NET Framework的关系 一 .NET 的 Framework 们 二 .NET Core ...

  4. ubuntu安装Java jdk1.7.0

    1.下载JDK  http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html 2.解压 3. ...

  5. 动态Pivot(2)

    原文  http://book.51cto.com/art/200710/58875.htm 存储过程sp_pivot的实现包含糟糕的编程习惯和安全隐患.就像我在本章的前面提到的,微软强烈建议不要在用 ...

  6. WF4.0——升级技能:托付应用

    回想: 在一个月前,我们刚刚回想了面对象至关重要的部分:托付,详细请移步我们博客:面向对象--一起来复习托付与事件!关于这篇博客的详细内容,不再赘述,在这里我们主要讨论在工作流中的应用及他的详细怎样解 ...

  7. Eclipse用法和技巧十:显示代码outline

    在一个文件中快速找到某一个方法或者某一个作用域,可以使用 Ctrl+O或者Ctrl+F3,快速显示当前代码的outline,进行快速查找.效果如下:        这里主要是补充一些后续操作,能更加方 ...

  8. perl 继承概述

    <pre name="code" class="html">[root@wx03 test]# cat Horse.pm package Horse ...

  9. javascript 学习资料网址一览

    1.http://www.runoob.com/ 2.https://developer.mozilla.org/zh-CN/ 3.http://www.imooc.com/   视频类

  10. Cordys BOP 4平台开发入门实战演练——Webservices开发(0基础)

    0.文章导读 本文档针对Cordys BOP-4 WS-AppServer基础功能进行验证和高速开发指导.(高级实践文档请參考兴许文档). 0.1.WS-AppServer概述 WS-AppServe ...