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. oschina开源硬件其它开源,开源硬件

    硬件驱动/工具 25Linux内核 101桌面环境 40开源字体 58嵌入式操作系统 33输入法 110开源硬件 57开源图书 5开源家居 17物联网 87开源货币/比特币 32NASA 开源项目 1 ...

  2. [置顶] Android开发之XML文件的解析

    Android系统开发之XML文件的解析 我们知道Http在网络传输中的数据组织方式有三种分别为:XML方式.HTML方式.JSON方式.其中XML为可扩展标记语言,如下: <?xml vers ...

  3. Linux高性能server编程——Linux网络基础API及应用

     Linux网络编程基础API 具体介绍了socket地址意义极其API,在介绍数据读写API部分引入一个有关带外数据发送和接收的程序,最后还介绍了其它一些辅助API. socket地址API 主 ...

  4. Image控件

    前台代码: <asp:Image ID="Image1" runat="server" /> 后台代码; protected void Page_L ...

  5. STSR round#1

    乱搞玩出新高度.....#1

  6. Intent数据传递

    (1)首先是Activity的简单跳转: 1).Activity的切换一般是通过Intent来实现的,Intent是一个Activity到达另一个Activity的引路者,它描述了起点(当前Activ ...

  7. django局域网建一个网站

    之前总是运行的python manage.py runserver,用默认的在本机访问的127.0.0.1:8000,如果跟几个同学一起去开发一个网站来玩玩的话,可以这样: python manage ...

  8. 探究绑定事件的this指向以及event传参的小问题

    this指向 直接上代码,凑合着看 <input type="button" onclick="page()" value="点我"& ...

  9. hdu1172猜数字

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1172 题目 猜数字 Time Limit: 20000/10000 MS (Java/Others) ...

  10. Android智能手机屏蔽电话与屏蔽安装软件功能

    近期做一些项目.须要对手机进行屏蔽自己的固有的功能.在此记录. Android屏蔽电话功能主要是卸载掉Phone.apk. 屏蔽安装软件功能主要是卸载掉PackageInstall.apk 以下以三星 ...