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. 跟上节奏 大数据时代十大必备IT技能

    跟上节奏 大数据时代十大必备IT技能 新的想法诞生新的技术,从而造出许多新词,云计算.大数据.BYOD.社交媒体……在互联网时代,各种新词层出不穷,让人应接不暇.这些新的技术,这些新兴应用和对应的IT ...

  2. CMake初步(2)

    转自:<你所不知的OSG>第一章:CMake初步(2) http://bbs.osgchina.org/forum.php?mod=viewthread&tid=1229& ...

  3. 基于Qt的简单计算器

    界面: UI ui由qtdesign中托控件形成. #ifndef WIDGET_H #define WIDGET_H #include <vector> #include <QWi ...

  4. Android TextView(同时显示图片+文字)

    见上图:需要图片和文字 在一起 之前的做法是用两个控件组成 <LinearLayout> <ImageView /> <TextView /> </Linea ...

  5. 从底层简析Python程序的执行过程

    摘要:是否想在Python解释器的内部晃悠一圈?是不是想实现一个Python代码执行的追踪器?没有基础?不要怕,这篇文章让你初窥Python底层的奥妙. [编者按]下面博文将带你创建一个字节码级别的追 ...

  6. GDSOI2015 task4 ACU

    题目大意 只要你有耐心看完题目,你就可以得到以下模型: 给出一个有向图,有若干询问,每次询问对于某条边\((v,u)\),求删掉这条边后,\(v\)到\(u\)的最短路. 算法1 暴力出奇迹,期望得分 ...

  7. HNCU1741:算法3-2:行编辑程序

    http://hncu.acmclub.com/index.php?app=problem_title&id=111&problem_id=1741 题目描述 一个简单的行编辑程序的功 ...

  8. 为开发用途mac电脑瘦身

    本文介绍的瘦身方法仅仅针对开发用途的mac电脑,在我们的开发过程中会发现随着编译的程序过多非常导致硬盘空间的占用率不断上升. 原文地址:http://blog.csdn.net/qqmcy/artic ...

  9. ios内存管理2-对象之间的内存管理

    同之前一样,新建一个基于命令行的工程,在新建一个Student类和一个Book类 编写如下代码: Student.h // // Student.h // 内存管理2-对象之间的内存管理 // // ...

  10. c语言,数组和字符串

    1. “数组名代表了数组的存储首地址,是一个地址常量”. 对于char *p1 = "A String."; 和 char p2[] = "Another String. ...