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 ...
随机推荐
- ADB logcat 过滤方法(抓取日志)
1. Log信息级别 Log.v- VERBOSE : 黑色 Log.d- DEBUG : 蓝色 Log.i- INFO : 绿色 Log.w- WARN : 橙色 Log.e- ERROR ...
- Qt删除指定文件
Qt删除指定文件: QFile fileTemp(filename); fileTemp.remove();
- NET Core 以及与 .NET Framework
简析.NET Core 以及与 .NET Framework的关系 简析.NET Core 以及与 .NET Framework的关系 一 .NET 的 Framework 们 二 .NET Core ...
- ubuntu安装Java jdk1.7.0
1.下载JDK http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html 2.解压 3. ...
- 动态Pivot(2)
原文 http://book.51cto.com/art/200710/58875.htm 存储过程sp_pivot的实现包含糟糕的编程习惯和安全隐患.就像我在本章的前面提到的,微软强烈建议不要在用 ...
- WF4.0——升级技能:托付应用
回想: 在一个月前,我们刚刚回想了面对象至关重要的部分:托付,详细请移步我们博客:面向对象--一起来复习托付与事件!关于这篇博客的详细内容,不再赘述,在这里我们主要讨论在工作流中的应用及他的详细怎样解 ...
- Eclipse用法和技巧十:显示代码outline
在一个文件中快速找到某一个方法或者某一个作用域,可以使用 Ctrl+O或者Ctrl+F3,快速显示当前代码的outline,进行快速查找.效果如下: 这里主要是补充一些后续操作,能更加方 ...
- perl 继承概述
<pre name="code" class="html">[root@wx03 test]# cat Horse.pm package Horse ...
- javascript 学习资料网址一览
1.http://www.runoob.com/ 2.https://developer.mozilla.org/zh-CN/ 3.http://www.imooc.com/ 视频类
- Cordys BOP 4平台开发入门实战演练——Webservices开发(0基础)
0.文章导读 本文档针对Cordys BOP-4 WS-AppServer基础功能进行验证和高速开发指导.(高级实践文档请參考兴许文档). 0.1.WS-AppServer概述 WS-AppServe ...