Windows程序设计-文本输出.docx

  1. 1、本文档共56页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
? ? Windows程序设计--文本输出 ? ? 4.1 绘制和重绘 4.1.2 有效矩阵和无效矩阵 在擦除对话框之后,需要重画的被对话框遮住的矩形区域,这个区域称为「无效区域」或「更新区域」。正是显示区域内无效区域的存在,才会让Windows将一个WM_PAINT消息放在应用程序的消息队列中。只有在显示区域的某一部分失效时,窗口才会接受WM_PAINT消息。 Windows内部为每个窗口保存一个「绘图信息结构」,这个结构包含了包围无效区域的最小矩形的坐标以及其它信息,这个矩形就叫做「无效矩形」,有时也称为「无效区域」。如果在窗口消息处理程序处理WM_PAINT消息之前显示区域中的另一个区域变为无效,则Windows计算出一个包围两个区域的新的无效区域(以及一个新的无效矩形),并将这种变化后的信息放在绘制信息结构中。Windows不会将多个WM_PAINT消息都放在消息队列中。 ? 4.2 GDI 简介 4.2.2 获取设备环境句柄:方法一 HDC hdc;//设备环境句柄 PAINTSTRUCT ps;//绘制结构 RECT rect;//矩形结构 case WM_PAINT: hdc = BeginPaint(hwnd, &ps);//标明窗口绘制开始,设备环境句柄 GetClientRect(hwnd, &rect);//获取窗口客户区的尺寸 DrawText(hdc, TEXT("Hello Hk_Mayfly!"), -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER); EndPaint(hwnd, &ps);//结束窗口绘制 return 0; ? 4.2.3 绘制信息结构 PAINTSTRUCT结构包含了应用程序用来绘制它所拥有的窗口客户区所需要的信息。PAINTSTRUCT的结构定义如下: typedef struct tagPAINTSTRUCT {   HDC hdc;   BOOL fErase;   RECT rcPaint;   BOOL fRestore;   BOOL fIncUpdate;   BYTE rgbReserved[32]; } PAINTSTRUCT, *PPAINTSTRUCT; ? 当调用BeginPaint函数时,?Windows将自动填充这个结构体中的成员相关属性,?程序仅能使用前三个成员,?其他为Windows内部使用。?参数一HDC?hdc即为设备环境句柄,?BeginPaint函数的返回值也就是这里的设备环境句柄,?简单来说就是先填充再返回;?参数二fErase决定是否擦出客户区背景,?如果为非零值则擦除背景,否则不擦除背景;?参数三rcPaint?通过指定客户区左上角和右下角的坐标确定一个要绘制的矩形范围,?即使需要更新的无效区域不是一个矩形,?Windows也会把需要重绘的部分裁剪为一个矩形。 ? 如果你仍想重绘整个客户区,?可以在BeginPaint函数之前调用InvalidateRect(?hwnd,?NULL,?TRUE?);使整个客户区无效化。 ? 4.2.4 获取设备环境句柄:方法二 #include <Windows.h> #include <iostream> using namespace std; LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);//消息函数声明 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)//主函数 { static TCHAR szAppName[] = TEXT("WNDCLASS NAME");//窗口类名称 HWND hwnd;//句柄 MSG msg;//结构体 WNDCLASS wndclass;//窗口类 //窗口类属性 wndclass.style = CS_HREDRAW | CS_VREDRAW;//样式 wndclass.lpfnWndProc = WndProc;//窗口处理函数 wndclass.cbClsExtra = 0;//窗口实例扩展 wndclass.cbWndExtra = 0;//窗口类扩展 wndclass.hInstance = hInstance;//窗口实例句柄 wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);//加载图标

您可能关注的文档

文档评论(0)

科技之佳文库 + 关注
官方认证
内容提供者

科技赋能未来,创新改变生活!

版权声明书
用户编号:8131073104000017
认证主体重庆有云时代科技有限公司
IP属地上海
统一社会信用代码/组织机构代码
9150010832176858X3

1亿VIP精品文档

相关文档