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 ...
随机推荐
- MySQL中关于日期、时间的数据类型和函数
一.日期相关的数据类型 1.datetime 占用8字节,既显示了日期,又显示了时间.其表示的日期范围为“1000-01-01 00:00:00”到“9999-12-31 23:59:59” 2.da ...
- 怎样为ubuntu eclipse 添加 GBK字符集
以前没有发现,最近把自己的代码靠到同学电脑上运行报错,发现是字符集的问题,一般来说 eclipse默认的是GBK编码,而ubuntu上默认是没有GBK编码的,所以ubuntu eclipse 上自然就 ...
- 云计算与虚拟化以及IaaS, PaaS和SaaS
概述: 包括:服务器虚拟化.桌面虚拟化.应用虚拟化: 云计算只是用到了虚拟化的技术: soa dubbo结构,阿里巴巴的开源架构: netstat -ntlp; 云服务”现在已经快成了一个家喻户晓的词 ...
- vs2016 创建 vsto excel 文件项目的一个问题
新工作需要些一个基于Excel开发一个工具,vs的 vsto 功能很好用,封装了基于开发office 开的一些工具.但是在实际使用时,创建项目总是报错,提示打开excel文件失败.项目是需要创建一个e ...
- OAuth2.0认证过程
本文以腾讯微博为例,详细介绍OAuth2.0的认证过程. 在使用腾讯微博平台提供的API前,您需要做以下两步工作: 成为开发者,并申请appkey和appsecret 授权获取accesstoken ...
- 基于visual Studio2013解决C语言竞赛题之1009补数
题目 解决代码及点评 /************************************************************************/ ...
- AT&T汇编
AT&T汇编和8086汇编语言虽然两者很相似,但是还是不能根据8086的语法规则来读AT&T汇编的吧,所以还是要看看AT&T汇编的语法规则,因为在读内核代码时,跟硬件打交道的部 ...
- java调用163邮箱发送邮件
1:注册一个163邮箱,http://mail.163.com 调用发送邮件代码,查询smtp.163.com,作为发送邮件的服务器ip,类似的邮箱服务器应该也可以. MailSenderInfo m ...
- 【HTML5游戏开发小技巧】RPG情景对话中,令文本逐字输出
以前用JAVAscript实现过令文本逐字输出的效果,今天我来用html5中的canvas实现一下.canvas里的内容可不像<p>那样好操作,首先,你需要懂得一些html5的API才能操 ...
- linux工具:ssh---未完
ssh server_ip 或者 ssh username@server_ip 或者 ssh username@server_name , 再按提示输入密码. ____________________ ...