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. zzuli Camellia的难题(暴力)

    1784: Camellia的难题 Time Limit: 2 Sec  Memory Limit: 128 MB Submit: 67  Solved: 14SubmitStatusWeb Boar ...

  2. 【分享】如何使用sublime代码片段快速输入PHP头部版本声明

    作者:zhanhailiang 日期:2013-06-25 Sublime 菜单栏->Tools→New Snippet→输入以下内容: <snippet> <content& ...

  3. 安装基于XenServer的DevStack

    Openstack默认的hypervisior是基于KVM的,可以修改nova-compute.conf的libvirt_type改成使用其他,网上可以搜到个别文章 但是Openstack官方文档却说 ...

  4. SecureCRT使用Vim出现中文乱码问题的解决

    1. 首先保证securecrt本身显示中文是ok的.如果不是,就先解决这一个问题. 2. vi ~/.vimrc 添加set encoding=utf-8 fileencodings=ucs-bom ...

  5. Swift中的ViewController

    ViewController是iOS应用程序中重要的部分,是应用程序数据和视图之间的重要桥梁,ViewController管理应用中的众多视图.iOS的SDK中提供很多原生ViewController ...

  6. MAMP:在 OSX 中搭建 Apache, MySQL, PHP 环境并本地安装、调试 WordPress

    MAMP 这个名字来源于 Macintosh Apache MySQL PHP,显然专门用来在 Mac 环境下搭建 Apache.MySQL.PHP 平台. 虽然 OSX 中已经预装了 Apache ...

  7. 修改 Mac 默认 PHP 运行环境,给 MAMP 配置全局 Composer

    在没有配置全局性的 Composer 的时候,如果你在没有安装 Composer 的目录下运行 Composer 命令,比如:create-project 系统会返回: Could not open ...

  8. 获取wpf datagrid当前被编辑单元格的内容

    原文 获取wpf datagrid当前被编辑单元格的内容 确认修改单元个的值, 使用到datagrid的两个事件 开始编辑事件 BeginningEdit="dataGrid_Beginni ...

  9. 网站遭遇DDOS简易处理

    网站遭遇DDOS攻击 netstat -an | grep ESTABLISHED 我们看到有大量的链接存在着,并且都是ESTABLISHED状态 for i in `netstat -an | gr ...

  10. android 按字母搜索

    在看Oplayer的时候看见滑动字母来实现listView的内容搜索,所以就把里面的核心的函数扣除来做了一个demo,分为两部分一个是布局,另一个就是代码了,具体的如下: 布局: <?xml v ...