ndows程序设计.pptx

  1. 1、本文档共138页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Windows的发展 ;Windows的特点;编程示例;编程示例;Windows程序的组成;MessageBox简介;Visual c++ 6.0 使用介绍;Unicode简介;常用编码;ASCII;Unicode码;字节序;窗口与消息;MessageBox功能有限,用CreateWindow生成全功能的窗口 窗口的“控件”(或称“子窗口控件”):标题栏、菜单栏、工具栏、 滚动条、按钮(单选、复选)、列表框、文本框等 消息(操作系统和用户程序的分工合作) 窗口结构(“窗口类”) 面向对象VS操作系统中的结构 多个窗口可用同一个窗口类 窗口过程 ;客户区域 无效:窗口首次创建、窗口大小变化、窗口重叠 重绘 UpdateWindow会发一条消息WM_PAINT 队列消息和非队列消息 Send(一般是调用特定windows函数)和Post(同步和异步) ;窗口过程 Hwnd Message wParam lParam GetMessage 函数从消息队列获得一个消息并将它复制到MSG结构。 遇到WM_QUIT消息,返回0然后结束循环 其它返回非0值 DispatchMessage 函数分发消息到MSG结构中的窗口句柄关联的窗口过程。 工程/设置/链接 工程选项:subsystem:console和subsystem:windows 对象/库模块:winmm.lib,且hellowin.wav位于当前目录(演示:用快捷方式的当前位置) ;/mydomain/archive/2011/02/24/1963948.html;/mydomain/archive/2011/02/24/1963948.html;/mydomain/archive/2011/02/24/1963948.html;文本输出;客户区域的大小和用户的操作有关 字符尺寸会影响图形尺寸 很多绘图函数和设备无关 重绘工作由程序自己负责 ;以下情况会产生WM_PAINT消息,由程序来处理重绘工作: 用户移动窗口 用户调整窗口大小 程序调用ScrollWindow或ScrollDC函数(水平和垂直滚动一个位矩形) 程序调用InvalidateRect或InvalidateRgn函数(会产生WM_PAINT消息) 以下情况,Windows会处理重绘工作: 鼠标指针在客户区域内移动 在客户区内拖动图标 “调用”重绘:想办法生成WM_PAINT消息;需要重绘的部分 自动产生WM_PAINT消息 无效矩形:覆盖无效区域的最小矩形 InvalidateRect函数会强制一矩形失效 获得无效区域的坐标 窗口过程收到WM_PAINT消息时 任何时候可调用GetUpateRect 不会连续产生WM_PAINT消息 ;调用BeginPaint函数,客户区域变成有效 调用ValidateRect函数,使指定区域有效 ??不再存在无效区域,则删除消息队列中的WM_PAINT消息 ;输出文本也是用GDI函数 常用:TextOut(hdc,x,y,psText,iLength) Hdc:设置环境句柄 X,y:坐标,单位是像素 psText: 字符串指针 iLength:字符数 Hdc是GDI函数都需要的;在同一条消息的处理中完成句柄的获取和释放(CreateDC除外) 设备环境句柄获取方式一 BeginPaint获取句柄,并填充绘制信息结构,自动使客户区域有效,裁剪区域是原无效区域 EndPaint释放句柄 可在调用BeginPaint之前调用InvalidateRect(hwnd,NULL,TRUE)以扩大裁剪区域至整个客户区,最后的参数TRUE表示需要擦除背景 设备环境句柄获取方式二 GetDC,获取句柄,裁剪区域是整个客户区,不进行区域有效化 ReleaseDC,释放句柄 validateRect(hwnd,NULL),使整个客户区有效化 避免死循环:若不自己处理重绘,则要调用DefWindowProc ;返回的设备环境句柄是整个窗口 可对标题栏(在窗口客户区之外)等进行处理 消息是WM_NCPAINT ;用GetSystemMetrics获取用户界面尺寸 用GetTextMetrics获取字体尺寸 TEXTMETRIC tm; hdc = GetDC(hwnd); GetTextMetrics(hdc,tm); ReleaseDC(hwnd,hdc); ;高度 ;宽度 tmAveCharWidth 小写字符的加权平均宽度 tmMaxCharWidth 最宽的字符宽度 大写字符的平均宽度的估计: 1.5 * tmAveCharWidth ;不同消息处理代码之间共享的变量,只能是global或static 典型代码 ;滚动条;CreateWindow 的参数指定 WS_VSCROLL以产生滚动

文档评论(0)

ranfand + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档