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. log4j的使用及参考

    log4j.properties 使用 一.参数意义说明 输出级别的种类 ERROR.WARN.INFO.DEBUG ERROR 为严重错误 主要是程序的错误 WARN 为一般警告,比如session ...

  2. freemarker序列的拆分

    freemarker序列的拆分 1.简易说明 序列的拆分能够是数组.字符串.布尔值等等 2.实现源代码 <#--freemarker序列的拆分--> ${"hudjfkskhd你 ...

  3. drupal中使用drush命令,快速批量的开启和关闭模块

    方法一: drush pml --no-core --type=module --status=enabled --pipe > modules.txt  xargs -a modules.tx ...

  4. 利用git下载skia库

    1.准备好cygwin或者gitbash(github下载) 2.进入进入https://android.googlesource.com/,搜索skia,进入. 3.进入后最上面会显示下载方法:gi ...

  5. 基于Qt的FreeType字体轮廓解析

    一.本文目的 以前的文档中.详细的介绍了FreeType开源字体引擎库的基础知识.基本用法.但并未详细的阐明在TurboCG中.是如何解析出一个文字的轮廓的,本文集中阐述.怎么样使用FreeType开 ...

  6. J2EE应用服务器计数器

    常用的J2EE应用服务器包括Weblogic.WebSphere和Tomcat等,以下是以WebLogic为例给出的计数器. 类别 计数器名称 计数器描述 JVM Heap Size JVM堆大小,该 ...

  7. Spring Cloud Config

    Spring Cloud Config provides server and client-side support for externalized configuration in a dist ...

  8. STL容器总结

    一. 种类: 标准STL序列容器:vector.string.deque和list. 标准STL关联容器:set.multiset.map和multimap. 非标准序列容器slist和rope.sl ...

  9. /bin/bash^M: 坏的解释器: 没有那个文件或目录

    在Linux下编译cocos2d-x运行脚本的时候出现”/bin/bash^M: 坏的解释器: 没有那个文件或目录“这样的错误如下图. 解决方法: 使用在终端输入sed -i 's/\r$//' ma ...

  10. HDOJ 1800 Flying to the Mars 盲目搜索......................so easy...........

    check the original problem here:http://acm.hdu.edu.cn/showproblem.php?pid=1800 the AC code: #include ...