GUI 剖析之 进入windows GUI编程
来源:互联网 发布:阿里云 ecs 数据库 编辑:程序博客网 时间:2024/05/29 07:50
四)、进入windows GUI编程
现在假设您已经了解了windowsGUI编程的消息机制,也假设您学过C语言,那么现在就开始一起学习GUI编程吧,希望大家愉快。
1)想做什么就写什么
一、我想实现文本显示
上面说过,你要画什么东东,都建议在WM_PAINT消息里面执行,虽然也可以在其他消息里做,例如可以在自己定义的消息里:
WM_USER+1:
{
HDC hdc=GetDC(hwnd);
//这里执行绘制
ReleaseDC(hwnd,hdc);
}
如果在WM_PAINT消息里:
WM_PAINT:
{
hdc=BeginPaint(hwnd,&ps);
//这里执行绘制
EndPaint(hwnd,&ps);
}
好了现在来显示文本吧,其实很简单,调用WindowsAPI就行了
BOOL TextOut(
__in HDC hdc,
__in int nXStart,
__in int nYStart,
__in LPCTSTR lpString,
__in int cbString
);
例子:TextOut(hdc,100,100,TEXT("ZhengJinWei"),11);
这是GDI(Graphics Devices Interface 图形设备接口)里面的API,这里TextOut在横坐标像素100,纵坐标像素100的位置显示字符串“ZhengJinWei”,这个字符串长度为11,你也可以使用WCHAR str[256]=TEXT(“ZhengJinWei”),以sizeof(str)/sizeof(WCHAR)获取长度。不过我要跟你说明一点,使用这个API后你会发现文字有一个灰色背景,真的很讨厌,所以我建议用下面的API
Graphics graphics(hdc);//声明一个graphics对象
FontFamily fontFamily(L"Times New Roman");//设置字体属性,这里用的是Times New Roman,你也可以设置其他属性,具体属性可以参考PPT中的文字属性。
Font font(&fontFamily, 40, FontStyleRegular, UnitPixel);//设置字体属性,包括大小(40),类型等,你也可以用GetSystemMetrics(…)API 获取字体相关信息
PointF pointF(x,y);//字符串显示的位置,具体是指字符串首个字符的左上角位置。
SolidBrush solidBrush(Color(255, 255,255,255));//定义画刷,画刷的参数是Color(alpha,R,G,B), alpha是字体的透明度,RGB是Red,Green,Blue(三原色),即字体的颜色。
graphics.DrawString(L"祝你幸福、快乐!", -1, &font, pointF, &solidBrush);//调用DrawString方法画出字符串。
使用上面的API几乎可以实现你想要的任何文字输出,不过这些API属于GDI+里面的内容,所以还要配置一下GDI+环境:
加入头文件:
#include <gdiplus.h>
using namespace Gdiplus;
#pragma comment (lib, "Gdiplus.lib")
加入静态库:
(加入静态库的方法参考:
如果您的编译器是VS(VS2010),打开属性页->C/C++->预处理器定义
如果是vc(vc6),工程->设置->连接)
Gdiplus.lib
加入全局变量:
Gdiplus::GdiplusStartupInput m_gdiplusStartupInput;
初始化,进入main函数就开始执行:
Gdiplus::GdiplusStartup(&m_pGdiToken,&m_gdiplusStartupInput,NULL);
销毁,main函数返回之前开始执行:
Gdiplus::GdiplusShutdown(m_pGdiToken);
将stdafx头文件里的#define WIN32_LEAN_AND_MEAN注释掉
- GUI 剖析之 进入windows GUI编程
- GUI 剖析 之第一个windows程序
- Windows GUI 编程参考资料
- GUI 剖析之 回顾操作系统
- GUI 剖析之图片显示
- GUI 剖析之 关机命令
- GUI 剖析之 shell 命令
- Java之GUI编程
- J2SE之GUI编程
- Gui编程之Frame
- Gui编程之FlowLayout
- GUI编程之BorderLayout
- GUI编程之GridLayout
- windows GUI 编程指南1
- GUI剖析之资源篇之 菜单
- GUI 剖析之资源篇之 工具栏
- GUI 剖析之资源篇之 状态栏
- GUI 剖析之资源篇之 对话框
- EFI OS LOADER
- 深度观察集合
- linux0.11 运行环境搭建以及调式--bochs (下)
- while 循环
- 简单无参函数调用求成1~4组成的三位数
- GUI 剖析之 进入windows GUI编程
- js call
- undefined reference to '_modsi3'和`__udivdi3'问题的分析与解决办法
- 获得通信录中所有联系人的属性
- 小说Java接口传参数
- ACE进程管理
- C++各大有名库的介绍
- java 如何结束掉一个不再需要的进程
- cocos2d-x 触摸时间设置优先级