win32 字体变换与窗口同大同小
- #include <windows.h>
- #include "res/resource.h"
- LRESULT CALLBACK WinProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
- BOOL InitApp(HINSTANCE hInstance, LPCSTR szClassName);
- BOOL InitInstance(HINSTANCE hInstance, LPCSTR szClassName, int nCmdShow);
- int WINAPI WinMain(
- IN HINSTANCE hInstance,
- IN HINSTANCE hPrevInstance,
- IN LPSTR lpCmdLine,
- IN int nShowCmd
- )
- {
- MSG msg;
- char szClassName[] = "FontFace"; //窗口名
- //注册窗口类
- if(!InitApp(hInstance, szClassName))
- return 0;
- //初始化窗口
- if( !InitInstance(hInstance, szClassName, nShowCmd) )
- return 0;
- while(GetMessage(&msg, NULL, NULL, NULL))
- {
- TranslateMessage(&msg); //消息解释
- DispatchMessage(&msg); //消息传送
- }
- return (int)msg.wParam;
- }
- LRESULT CALLBACK WinProc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
- {
- PAINTSTRUCT ps;
- HDC hdc;
- HFONT hFont, hOldFont;
- RECT rect;
- char *str = "徐国先";
- int width;
- int height;
- switch( uMsg )
- {
- case WM_PAINT:
- hdc = BeginPaint(hwnd, &ps);
- GetClientRect(hwnd, &rect);
- width = (rect.right-20)/(int)strlen(str);
- height = rect.bottom-20;
- hFont = CreateFont(
- height, //字体的逻辑高度
- width, //逻辑平均字符宽度
- 0, //与水平线的角度
- 0, //基线方位角度
- FW_REGULAR, //字形:常规
- FALSE, //字形:斜体
- FALSE, //字形:下划线
- FALSE, //字形:粗体
- GB2312_CHARSET, //字符集
- OUT_DEFAULT_PRECIS, //输出精度
- CLIP_DEFAULT_PRECIS, //剪截精度
- PROOF_QUALITY, //输出品质
- FIXED_PITCH | FF_MODERN, //倾斜度
- "隶书" //字体
- );
- hOldFont = (HFONT)SelectObject(hdc, hFont); //选择字体
- SetTextColor(hdc, 0xC0C0C0);
- TextOut(hdc, 10, 10, str, (int)strlen(str));
- SelectObject(hdc, hOldFont); //选择旧字体
- DeleteObject(hFont); //删除新字体
- EndPaint(hwnd, &ps);
- break;
- case WM_DESTROY:
- PostQuitMessage(0);
- break;
- default:
- return DefWindowProc(hwnd, uMsg, wParam, lParam);
- }
- return 0;
- }
- BOOL InitApp(HINSTANCE hInstance, LPCSTR szClassName)
- {
- WNDCLASS wndClass;
- ZeroMemory(&wndClass, sizeof(wndClass));
- wndClass.style = CS_VREDRAW|CS_HREDRAW;
- wndClass.cbClsExtra = 0;
- wndClass.cbWndExtra = 0;
- wndClass.hInstance = hInstance;
- wndClass.hCursor = LoadCursor(hInstance, IDC_ARROW);
- wndClass.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_TEST));
- wndClass.hbrBackground = (HBRUSH)GetStockObject(COLOR_BTNFACE);
- wndClass.lpfnWndProc = (WNDPROC)WinProc;
- wndClass.lpszClassName = (LPCSTR)szClassName;
- wndClass.lpszMenuName = NULL;
- return RegisterClass(&wndClass);
- }
- BOOL InitInstance(HINSTANCE hInstance, LPCSTR szClassName, int nCmdShow)
- {
- HWND hwnd;
- hwnd = CreateWindow(
- szClassName,
- "Sdk 字体变换",
- WS_OVERLAPPEDWINDOW,
- CW_USEDEFAULT, CW_USEDEFAULT,
- 400, 300,
- NULL,
- NULL,
- hInstance,
- NULL
- );
- //
- if (!hwnd) return FALSE;
- ShowWindow(hwnd, nCmdShow);
- UpdateWindow(hwnd);
- return TRUE;
- }
该代码参考网上学习代码
win32 字体变换与窗口同大同小的更多相关文章
- win32程序之子窗口编程
win32程序之子窗口编程 一丶简介.什么是子窗口 在前边我们已经讲解了窗口的本质.以及如何注册窗口类跟创建窗口. 还讲了消息循环. 那么有很多窗口其实Windows已经帮我们创建出来了.我们直接使用 ...
- Win32 程序开发:窗口类结构体 WNDCLASS 和 WNDCLASSEX
一.窗口类结构体简介 窗口类结构体包含了窗口的各种参数信息.比如:窗口的图标.菜单栏.背景颜色.窗口的消息处理等等. 窗口类结构体有两个:WNDCLASS(早期版本) 和 WNDCLASSEX(新版本 ...
- C# 控制台程序(命令行程序)设置字体颜色,窗口宽高,光标行数
控制台程序(命令行程序)设置窗口宽度高度,如下代码: Console.WriteLine(Console.WindowHeight); Console.WriteLine(Console.Buffer ...
- win32手动创建windows窗口的,小记
摘抄自文档,其中的函数需要以后花时间看 向 WinMain 添加功能 首先,在 WinMain 函数内部创建 WNDCLASSEX 类型的窗口类结构. 此结构包含有关窗口的信息,如应用程序图标.窗口的 ...
- cmd窗口关闭 -----window小技巧!
前沿 平时开发的时候经常用到windows 的命令行工具来启动程序 或是 查看本地数据库的信息 : 经常的手动关闭 ,对于我这种,能用键盘完成的就坚决不用鼠标的人是多么痛苦. 所以在此罗列了一些命 ...
- win32之全屏窗口
游戏开发中经常使用会让游戏以全屏窗口的状态运行,下面一个例子就是来实现这个效果的. #include <windows.h> void RegisterMyClass(); LRESULT ...
- C#调用win32 api 操作其它窗口
实现以下功能: 找到窗体 找到控件(也叫子窗体) 获取内容 获取位置 设置 位置 内容 鼠标点击 示范 1. 找窗体 以操作系统自带的计算器为例 string clWindow = "Cal ...
- win32键盘记录 -- 自定义窗口类
最近学了些关于window api编程的知识,于是琢磨编写一些键盘记录器,能够把输入的按键输出到窗口内,并且实现窗口自动滚动. 封装窗口类使用了GWL_USERDATA字段来保存this指针,比较容易 ...
- QT制作窗口切换的小程序
前言:本次实验是在三个窗口之间自由切换,窗口中播放gif格式的动态图. 让我们先来看看使用到的主要的函数: 一.播放gif格式动态图的函数 QMovie *movie = new QMovie(&qu ...
随机推荐
- log4j的使用及参考
log4j.properties 使用 一.参数意义说明 输出级别的种类 ERROR.WARN.INFO.DEBUG ERROR 为严重错误 主要是程序的错误 WARN 为一般警告,比如session ...
- freemarker序列的拆分
freemarker序列的拆分 1.简易说明 序列的拆分能够是数组.字符串.布尔值等等 2.实现源代码 <#--freemarker序列的拆分--> ${"hudjfkskhd你 ...
- drupal中使用drush命令,快速批量的开启和关闭模块
方法一: drush pml --no-core --type=module --status=enabled --pipe > modules.txt xargs -a modules.tx ...
- 利用git下载skia库
1.准备好cygwin或者gitbash(github下载) 2.进入进入https://android.googlesource.com/,搜索skia,进入. 3.进入后最上面会显示下载方法:gi ...
- 基于Qt的FreeType字体轮廓解析
一.本文目的 以前的文档中.详细的介绍了FreeType开源字体引擎库的基础知识.基本用法.但并未详细的阐明在TurboCG中.是如何解析出一个文字的轮廓的,本文集中阐述.怎么样使用FreeType开 ...
- J2EE应用服务器计数器
常用的J2EE应用服务器包括Weblogic.WebSphere和Tomcat等,以下是以WebLogic为例给出的计数器. 类别 计数器名称 计数器描述 JVM Heap Size JVM堆大小,该 ...
- Spring Cloud Config
Spring Cloud Config provides server and client-side support for externalized configuration in a dist ...
- STL容器总结
一. 种类: 标准STL序列容器:vector.string.deque和list. 标准STL关联容器:set.multiset.map和multimap. 非标准序列容器slist和rope.sl ...
- /bin/bash^M: 坏的解释器: 没有那个文件或目录
在Linux下编译cocos2d-x运行脚本的时候出现”/bin/bash^M: 坏的解释器: 没有那个文件或目录“这样的错误如下图. 解决方法: 使用在终端输入sed -i 's/\r$//' ma ...
- 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 ...