




免费预览已结束,剩余134页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Windows的发展 DOS及图形界面 鼠标的使用单道程序Windows3 1 Windows3 2假多道程序 TTF OLEWindows95 Windows10 windows2016 支持docker linux命令 跨平台 多种设备 开源 NET 可运行于多种平台各个版本的PE版 Windows的特点 WYSIWYG 所见即所得 标准化的界面通用 减少学习成本界面单一 没有现代web界面丰富目前有和现代web融合的趋势图形设备接口 GDI 多道程序 抢占型动态链接库版本兼容性高F6的切换功能仍然存在 编程示例 控制台程序 console 编程示例 Windows程序 Windows程序的组成 头文件程序入口 MessageBox简介 参数1句柄参数2正文参数3标题参数4按钮的指定 常量 用 并操作 返回值IDOK IDCANCEL IDABORT IDTRY IDIGNORE ISYES ISNO Visualc 6 0使用介绍 项目和工作区项目辅助文件 因visual版本而异 Windows和console工程 设置 链接 工程选项 subsystem console和subsystem windowsMake文件 Unicode简介 钟世刚 常用编码 莫尔斯码BCDIC 二进制编码的十进制交换编码 EBCDIC代码页 950繁体中文 936简体中文 ASCII扩展ASCIIISO8859 1 别名Latin 1 包含所有ASCII DBCS 双字节编码 是一种统称 ASCII Unicode码 纯粹的列表 与存储无关UTF 8UTF 16UTF 32Word的alt x可查看 字节序 大端 BigEndian BE 小端 LittleEndian LE 窗口与消息 钟世刚 MessageBox功能有限 用CreateWindow生成全功能的窗口窗口的 控件 或称 子窗口控件 标题栏 菜单栏 工具栏 滚动条 按钮 单选 复选 列表框 文本框等消息 操作系统和用户程序的分工合作 窗口结构 窗口类 面向对象VS操作系统中的结构多个窗口可用同一个窗口类窗口过程 几个知识点 客户区域无效 窗口首次创建 窗口大小变化 窗口重叠重绘UpdateWindow会发一条消息WM PAINT队列消息和非队列消息Send 一般是调用特定windows函数 和Post 同步和异步 几个知识点 窗口过程HwndMessagewParamlParamGetMessage函数从消息队列获得一个消息并将它复制到MSG结构 遇到WM QUIT消息 返回0然后结束循环其它返回非0值DispatchMessage函数分发消息到MSG结构中的窗口句柄关联的窗口过程 工程 设置 链接工程选项 subsystem console和subsystem windows对象 库模块 winmm lib 且hellowin wav位于当前目录 演示 用快捷方式的当前位置 几个知识点 Windows程序分为程序代码和UI资源两大部分 资源的实际内容是二进制代码 借助各种工具产生 怎样拒绝退出 文本输出 钟世刚 客户区域的大小和用户的操作有关字符尺寸会影响图形尺寸很多绘图函数和设备无关重绘工作由程序自己负责 几个知识点 以下情况会产生WM PAINT消息 由程序来处理重绘工作 用户移动窗口用户调整窗口大小程序调用ScrollWindow或ScrollDC函数 水平和垂直滚动一个位矩形 程序调用InvalidateRect或InvalidateRgn函数 会产生WM PAINT消息 以下情况 Windows会处理重绘工作 鼠标指针在客户区域内移动在客户区内拖动图标 调用 重绘 想办法生成WM PAINT消息 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函数都需要的 GDI 在同一条消息的处理中完成句柄的获取和释放 CreateDC除外 设备环境句柄获取方式一BeginPaint获取句柄 并填充绘制信息结构 自动使客户区域有效 裁剪区域是原无效区域EndPaint释放句柄可在调用BeginPaint之前调用InvalidateRect hwnd NULL TRUE 以扩大裁剪区域至整个客户区 最后的参数TRUE表示需要擦除背景设备环境句柄获取方式二GetDC 获取句柄 裁剪区域是整个客户区 不进行区域有效化ReleaseDC 释放句柄validateRect hwnd NULL 使整个客户区有效化避免死循环 若不自己处理重绘 则要调用DefWindowProc 设备环境 返回的设备环境句柄是整个窗口可对标题栏 在窗口客户区之外 等进行处理消息是WM NCPAINT GetWindowDC 用GetSystemMetrics获取用户界面尺寸用GetTextMetrics获取字体尺寸TEXTMETRICtm hdc GetDC hwnd GetTextMetrics hdc 用户尺寸和字符大小 高度 文本尺寸的度量 宽度tmAveCharWidth小写字符的加权平均宽度tmMaxCharWidth最宽的字符宽度大写字符的平均宽度的估计 1 5 tmAveCharWidth 文本尺寸的度量 不同消息处理代码之间共享的变量 只能是global或static典型代码 文本的格式化 滚动条 CreateWindow的参数指定WS VSCROLL以产生滚动条处理消息WM CREATE时计算字符的宽和高处理消息WM VSCROLL时计算位置数据用SetScrollPos重新绘制滚动条用InvalidateRect产生WM PAINT消息处理消息WM PAINT时注意考虑当前滚动条的值或用SCROLLINFO 完美地处理滚动条功能 垂直滚动条编程 第5章绘图基础钟世刚 本章内容 5 1GDI的结构5 2设备环境5 3点和线的绘制5 4绘制填充区域5 5GDI映射模式5 6矩形 区域和剪裁 5 1GDI的结构 5 1GDI的结构 GDI GraphicsDeviceInterface 设备分为 光栅设备 点阵设备 和矢量设备在显示器和打印机之上的抽象也可以使用底层的特定函数对设备颜色能力也进行了抽象 5 1GDI的结构 5 1GDI的结构 GDI函数分类获取和释放设备环境获取设备环境信息绘图函数设置和获取设备环境属性与GDI对象相关的函数 不需要设备环境 但要手工销毁 5 1GDI的结构 GDI的基本图形线条和曲线可被填充的封闭区域位图 可分为设备相关和设备无关文本 5 1GDI的结构 杂项映射模式和转换缺省为像素方式可用其它度量标准世界坐标图元文件 metafile 区域路径剪裁调色板打印 5 2设备环境 上下文 context 5 2设备环境 获取设备环境句柄在处理WM PAINT时 处理非WM PAINT时 5 2设备环境 获取设备环境信息GetDeviceCaps hdc iIndex GetSystemMetrics也可获得屏幕信息SetTextAlign hdc TA RIGHT TA TOP 分析DEVCAPS1 5 2设备环境 设备的尺寸用GetDeviceCaps获取纵横比有4 3和16 9屏幕分辨率可在显示属性中修改 5 2设备环境 色彩真彩 24位高彩 16位256色 调色板 索引值多数GDI函数按如下方式表示颜色 用宏RGB构建 5 2设备环境 保存设备环境属性一般对设备环境属性的修改是临时的 止于句柄的释放长生命周期的方式wndclass style CS HREDRAW CS VREDRAW CS OWNDC 临时切换 可嵌套多层 idSaved SaveDC hdc RestoreDC hdc idSaved 5 3点和线的绘制 5 3 1设定像素GetPixel hdc x y SetPixel hdc x y crColor 5 3点和线的绘制 5 3 2直线LineTo画直线 Polyline和PolylineTo画一系列相连的直线 PolyPolyline画多组相连的线 Arc画椭圆线 PolyBezier和PolyBezierTo画贝塞尔曲线 设备环境中的5个属性影响画线 画笔当前位置 画笔 背景模式 背景颜色和绘制模式 5 3点和线的绘制 5 3 2直线Polyline hdc apt n 的点坐标apt是一个数组Polyline既不使用也不改变当前位置PolylineTo 当前位置会设为最后一条线段的终点分析程序SINEWAVE 5 3点和线的绘制 5 3 3边框绘制函数Rectangle RoundRect画矩形Ellipse画椭圆Pie画部分椭圆 呈扇形Chord画部分椭圆 呈弓形 5 3点和线的绘制 5 3 3边框绘制函数画矩形Rectangle hdc xLeft yTop xRight yBottom 5 3点和线的绘制 5 3 3边框绘制函数画椭圆Ellipse hdc xLeft yTop xRight yBottom xLeft yTop xRight yBottom 构成的虚线称为椭圆的外接矩形 5 3点和线的绘制 5 3 3边框绘制函数画圆角矩形RoundRect hdc xLeft yTop xRight yBottom xCornerEllipse yCornerEllipse 如果xCornerEllipse等於xLeft与xRight的差 且yCornerEllipse等於yTop与yBottom的差 那么RoundRect函数将画出一个椭圆 这个椭园是由四个园角所组成 5 3点和线的绘制 5 3 3边框绘制函数Arc画椭圆线 Pie画部分椭圆 呈扇形 封闭 Chord画部分椭圆 呈弓形 封闭 参数 hdc xLeft yTop xRight yBottom xStart yStart xEnd yEnd 5 3点和线的绘制 5 3 3边框绘制函数分析程序LINEDEMO C 5 3点和线的绘制 5 3 4贝塞尔样条曲线DrawBezier hdc apt PolyBezier hdc apt iCount apt POINT结构数组的指针 包括了样条端点和控制点的坐标 其顺序是起点的坐标 起点的控制点的坐标 终点的控制点的坐标和终点的坐标 iCount 数组中的点的个数分析程序BEZIER C 5 3点和线的绘制 5 3 5画笔通常利用设备描述表中的默认画笔进行画线 也可以把预先设计好的画笔放入设备描述表中 然后用其画线 Windows提供三种画笔 BLACK PEN WHITE PEN NULL PEN获取系统画笔 GetStockObject WHITE PEN 设置设备描述表画笔 SelectObject hdc hPen 5 3点和线的绘制 5 3 6创建 选择和删除画笔画笔的建立hPen CreatePen iPenStyle iWidth crColor CreatePenIndirect logpen hPen GetObject hPen sizeof LOGPEN LPVOID logpeniPenStyle PS SOLIDPS DASHPS DOTPS DASHDOTPS NULLPS INSIDEFRAMEPS INSIDEFRAME 与填入区域的函数一起使用时 该样式可以保证画出的线条在边界框之内 5 3点和线的绘制 5 3 6创建 选择和删除画笔画笔的删除在WM CREATE消息期间建立 则在WM DESTROY消息期间删除 DeleteObject在WM PAINT消息期间建立的画笔 一定要在EndPaint前删除注意 不要删除设备描述表中当前选择用的画笔 5 3点和线的绘制 5 3 7填充空隙SetBkColor hdc crColor SetBkColor hdc TRANSPARENT 5 3点和线的绘制 5 3 8绘图模式光栅操作 ROP 当Windows使用画笔来画线时 它实际上执行的是画笔像素与目标地址处原有像素之间的某种 位布尔运算 Windows定义了16中运算模式 亦即画线模式 如R2 COPYPEN windows只是将画笔像素复制到目标像素 通过SetROP2 hdc iDrawMode 改变运算模式典型 R2 COPYPEN R2 BLACK R2 NOP 5 4绘制填充区域 概念与画线函数的区别 不仅要画边界框 还要画出区域中填入颜色图形的填入 画刷默认情况使用白色画刷 windows定义了6种画刷修改画刷hBrush GetStockObject GRAY BRUSH SelectObject hdc hBrush 注 无边框或者无填充的图形 5 4绘制填充区域 Polygon hdc apt iCount PolyPolygon hdc apt aiCount iPolyCount aiCount所有的顶点信息iPolyCount多少个多边形SetPolyFillMode hdc iMode 5 4绘制填充区域 WindingNumberhttp www songho ca opengl gl tessellation html 5 4绘制填充区域 画刷的建立CreateSolidBrush crColor CreateHatchBrush iHatchStyle crColor iHatchStyle HS HORIZONTAL 画刷的选择和删除SelectObject hdc hBrush DeleteObject hBrush 5 5GDI映射模式 概念为便于用户使用 windows提供了8种设备输出坐标表达方式 如 像素 毫米 英寸等 也就是GDI函数中使用的逻辑单位 Windows中一切设备都用统一的单位 像素因此需要将逻辑单位转换到设备单位 即为映射方式 MM TEXT MM LOENGLISH MM HIMETRIC SetMapMode hdc iMapMode 5 5GDI映射模式 设备坐标和逻辑坐标Windows中 一切设备都用统一的坐标 此坐标称为设备坐标 所有设备坐标系都以像素为单位 水平轴上的值从左到右递增 垂直轴上的值从上到下递增 Windows对所有消息 对所有非GDI函数 甚至一些GDI函数 永远使用设备坐标 5 5GDI映射模式 设备坐标和逻辑坐标设备坐标分类屏幕坐标 屏幕的左上角为 0 0 如CreateDC所获得的设备代号 使用的就是屏幕坐标全窗口坐标以程序建立的整个窗口为基准客户区坐标最常用的 客户区坐标 0 0 是客户区的左上角 视口和窗口视口是设备坐标表示的客户区窗口是逻辑坐标表示的程序显示区 第6章键盘程序编程基础 第6章键盘输入概论 键盘输入一个键盘输入称为一个键盘事件 键盘事件发送到Windows系统 Windows系统就发出一个相应的键盘消息Windows用八种不同的键盘消息来传递八种不同的键盘事件 键盘的输入焦点在按下键盘上的按键时 Windows发送键盘消息 此消息指向接收消息的窗口函数代码 只有一个窗口函数接收此键盘消息 接收特定键盘消息的窗口称为具有输入焦点的窗口 第6章键盘输入概论 系统消息队列与应用程序消息队列当用户按下并释放按键时 windows和键盘驱动程序将键盘扫描码转换为格式化消息 然后将这些消息存放在系统消息队列中 当windows应用程序处理完前一个用户输入消息时 windows才将系统队列中取出下一个消息 并将其放入应用程序的消息队列中 此过程分两步的原因 窗口消息程序对消息的处理和键盘输入需要同步 6 1按键 基本概念用户按键时发生的键盘事件的表现形式是一个键盘扫描码 windows和键盘驱动程序将扫描码转换为格式化的键盘消息 所有的键都会产生按键消息 可显示字符的键还会同时产生字符消息 四个按键消息对所有的按键 按下并释放时会产生如下4个消息 WM KEYDOWN WM KEYUP WM SYSKEYDOWN WM SYSKEYUP 6 1按键 系统按键消息与非系统按键消息系统按键消息经常是Alt键与另一个键的组合而产生 其作用是 启动程序功能表或者系统功能表上的某选项 应用程序的窗口函数通常会忽略系统按键消息 这些消息由默认分支DefWindowProc处理 应用程序的窗口函数处理非系统按键消息所有按键消息通过携带的参数进一步表明按键具体信息 6 1按键 虚拟键码为了在按键消息中进一步表明按键的信息 在按键消息的wParam参数中 windows通过虚拟键码来唯一标识按键 虚拟键码是windows解决不同厂商键盘的差异 而提出的一种仅与键的名字有关 与键在键盘上的位置无关的标识体系 虚拟键码以VK 为标识字 数字 字母的虚拟键码用ASCII码定义 其余都用识别字定义 6 1按键 按键消息的参数lParamlParam共32位 分成6个栏目 6 1按键 按键消息的参数lParam重复计数重复计数是产生该消息的按键次数 如果按下以后 窗口函数不够快 windows会把几个WM KEDOWN消息组合到单个消息中 然后增加计数OEM扫描码扩充键盘标识环境代码键的先前状态转换状态 6 1按键 使用GetKeyState函数了解按键的状态所谓按键的状态是指按键桉下去没有 这可以通过调用GetKeyState函数来获得此信息 在使用GetKeyState函数时 参数是虚拟键码 请注意GetKeyState的使用 它并非即时检查键状态 而只是检查直到目前为止正在处理键盘信息时的按键状态 不能获得和键盘消息无关的键状态 6 1按键 按键消息及其使用四个按键消息仅能表示系统键还是非系统键产生的 是桉下还是释放产生的 要知道是哪个按键产生的消息 则必须要看消息参数wParam lParam 编程员只要处理WM KEYDOWN消息就行了 WM KEYUP消息通常也可以忽略 所以 Windows程序编程人员对不产生字符的按键通常使用WM KEYDOWN消息 6 1按键 按键消息及其使用为SYSMETS加上键盘界面实现滚动条功能利用SendMessage函数实现SYSMETS加上键盘界面实现滚动条功能 SendMessage hwnd message wParam lParam 本函数的功能是把message窗口消息及消息参数wParam lParam发送到hwnd所指向的窗口函数 在这里 就是把message发送给它自己这个窗口 6 2字符消息及其处理 概念桉下每一个按键要产生一个按键消息 但是 对虚拟键码是字符的按键来说还要产生一个字符消息 消息循环中的TranslateMessage函数以msg为参数 它的作用是 如果此按键消息的虚拟键码是字符码 它将产生一个字符消息 并把字符消息放入应用程序的消息队列 由产生的字符消息把虚拟键码转换为字符的ASCII码或UNICODE码 翻译产生四个字符消息 6 2字符消息及其处理 四个字符消息字符消息的结构与按键消息的结构是一样的 lParam参数与产生字符消息的按键消息的lParam参数相同 字符消息wParam参数的虚拟键码就是字符的ANSI或Unicode代码 ASCII码和UNICODE码的识别 注册函数UNICODE定义IsWindowUnicode hwnd 6 3按键消息和字符消息的处理顺序 消息循环中的GetMessage从消息队列中取到消息 首先得到的是WM KEYDOWN或WM SYSKEYDOWN消息 TranslateMessage函数将WM KEYDOWN和WM SYSKEYDOWN消息中的虚拟键码进行处理 如果WM KEYDOWN或WM SYSKEYDOWN消息是由字母数字按键产生的 则Windows随之就要产生一个字符消息字符消息是夹在按键消息之间传递给窗口函数的 6 3按键消息和字符消息的处理顺序 例 如果CapsLock未打开 而用户按下再释放A键 则窗口函数将接收到如表 6 3按键消息和字符消息的处理顺序 例 如果您先按下Shift键 再按下A键 然後释放A键 再释放Shift键 就会输入大写的A 而窗口函数会接收到五个消息 6 4控制字符键及其处理 Tab Enter Backspace Escape键称为控制字符键 控制码还可以用两个键组合产生 例如组合使用Ctrl键与字母键会产生从0 x01 Ctrl A 到0 x1A Ctrl Z 的ASCII控制代码 当将Ctrl与字母键的组合用作功能表加速键时 不会将字母键转换成字符消息 6 4控制字符键及其处理 控制字符键的处理按键处理规则 字符键 由Windows产生WM CHAR消息送至窗口函数 游标键 功能键 Delete Insert Shift Ctrl以及Alt键 那么就要处理WM KEYDOWN消息 Windows不产生WM CHAR消息 控制字符键 在Windows中 这些控制字符的虚拟键码就是ASII码 怎样处理的呢 办法是在处理WM CHAR消息分支中作处理 控制字符键及其处理 caseWM CHAR 这是控制字符键产生的字符消息 其他程序码switch wParam 根据wParam中的控制字符码 ASCII 决定下面分支 case b backspace 其处理程序码break case t tab制表符 其处理程序码break WM DEADCHAR消息 WM DEADCHAR和WM SYSDEADCHAR消息称为 死字符消息 Windows应用程序经常忽略WM DEADCHAR和WM SYSDEADCHAR消息 在某些非英语键盘上 有些键用於给字母加上音调 本身并不产生字符 这些键称之为 死字符键 简称 死键 死字符键能产生按键消息 此按键消息的作用是给后属字母加上音调 此按键消息称为 死字符消息 简称 死消息 显示按键消息和字符消息的显示程序 WM DISPLAYCHANGE 在屏幕分辨率发生变化时产生该消息键盘消息检查 多个逻辑运算表达式或运算ScrollWindow 字体 Windows支持的三种字体向量字体字符由简单的线段组成 线段都是一样的宽度 最大的优点是可以较好地缩放到任意大小 TrueType字体TrueType字体是在轮廓内有填入区域的字体 点阵字体 位图 字符由点组成的图形 或者说是在位图中用有关点显示一个点阵图 点阵字体可以拉伸到较大的尺寸 但看上去带有锯齿 字体 Windows的内定字体SYSTEM FONT 设备描述表中可获得的默认字体 SYSTEM FIXED FONT 等宽系统字体 OEM FIXED FONT 面向设备的等宽字体 可使用GetStockObject函数获得指向这种系统字体的代号 非系统字体Windows操作系统还可以使用许多其他字体 第7章鼠标 钟世刚 本章内容 7 1鼠标的基础知识7 2客户区鼠标消息7 3非客户区鼠标消息7 4程序中的击中测试7 5捕获鼠标7 6鼠标的滚轮 7 1鼠标的基础知识 判断是否连接了鼠标GetSystemMetrics SM MOUSEPRESENT 鼠标的按钮个数GetSystemMetrics SM CMOUSEBUTTONS 7 1 1一些基本术语 热点 箭头的顶点鼠标指针的指定Wndclass hCursor LoadCursor NULL IDC ARROW 鼠标按钮的操作单击双击拖动 7 2客户区鼠标消息 客户区内外皆可能收到鼠标消息 不同于键盘客户区的鼠标消息 7 2客户区鼠标消息 参数lParam包含了鼠标的位置信息 相对于客户区左上角x LOWORD lParam y HIWORD lParam 参数wParam表示鼠标按键 shift键和ctrl键和MK LBUTTON MK MBUTTON MK RBUTTON MK SHIFT MK CONTROL进行位 与 运行 7 2 1程序分析 CONNECT C 7 2 2处理shift键 用类似wParam MK SHIFT的语句用函数getKeyState 参数为VK LBUTTON VK MBUTTON VK RBUTTON VK SHIFT或VK CONTROL限制 使用时一定是已经有鼠标事件了 7 2 3鼠标双击 初始化窗口类时wndclass style CS HREDRAW CS VREDRAW CS DBLCLKS把第二个WM LBUTTONDOWN转换成WM LBUTTONDBLCLK 7 3非客户区鼠标消息 消息 7 3非客户区鼠标消息 lParam低位是x坐标 高位是y坐标相对于屏幕左上角屏幕坐标和客户区域坐标转换ScreenToClient hwnd pt ClientToScreen hwnd pt wParam表示 击中测试 7 4程序中的击中测试 程序CHECKER1 C使用键盘模拟鼠标操作光标的显隐 showCursor true false 光标位置的获取和设置getCursorPos pt setCursorPos x y 程序CHECKER2 C 7 4 5在击中测试中使用子窗口 每个子窗口都有自己的句柄 窗口过程和客户区可模块化窗口类可复用GetWindowLong 获得指定窗口的有关信息GWL HINSTANCE 即hInstance DWL MSGRESULT值为0 对wndclass cbWndExtra预留额外空间的操作GWL ID子窗口IDGWL HWNDPARENT 程序CHECKER3 C 7 4 7子窗口和键盘 单击子窗口时 是父窗口获得焦点焦点切换SetFocus hwnd GetFocus 取子窗口ID 两方法等价 GetWindowLong hwnd GWL ID GetDlgCtrlID hwndChild 取子窗口句柄 GetDlgItem hwnd idFocus 7 4 7子窗口和键盘 SelectObject选择一对象到指定的设备上下文环境中 该新对象替换先前的相同类型的对象返回值如果选择对象不是区域并且函数执行成功 那么返回值是被取代的对象的句柄如果选择对象是区域并且函数执行成功 返回SIMPLEREGION 区域由单个矩形组成COMPLEXREGION 区域由多个矩形组成NULLREGION 区域为空CHECKER4 C 7 4 7鼠标的捕获 BLOKOUT1 C设置捕获SetCapture hwnd 取消捕获ReleaseCapture 没有按下鼠标按钮时 鼠标指针经过另一窗口时 只由指针之下的窗口接收消息BLOKOUT2 C 第8章计时器 8 1 2计时器消息不是异步的 WM TIMER消息是放在正常的消息队列中不会连续产生多个WM TIMER消息 8 2计时器的使用 SetTimer hWnd nIDEvent nElapse lpTimerFunc nIDEvent计时器IDnElapse计时的毫秒数 1毫秒到4 294 967 295毫秒 将近50天 lpTimerFunc回调函数返回值作为KillTimer的参数KillTimer hwnd nIDEvent BEEPER1 C 第9章子窗口控件 本章内容 按钮类自绘按钮窗口子类 9 1按钮类 一般子窗口和父窗口的通信hwndParent GetParent hwnd SendMessage hwndParent message wParam lParam Message大于或等于WM USERwParam一般为子窗口IDlParam为其它辅助参数预定义窗口类不用注册 系统已经有固定的类名父窗口处理WM COMMAND消息 9 1按钮类 示例代码BTNLOOK CGetDialogBaseUnits获取默认字体的宽和高GetTextMetrics与上一句类似实例句柄的获取使用全局变量hInstance是WM CREATE消息里lParam 结构CREATESTRUCT 的成员GetWindowLong hwnd GWL INSTANCE 9 1 10按钮和输入焦点 切换前的窗口获得WM KILLFOCUS消息wParam是切换目标窗口的窗口句柄切换后的窗口获得WM SETFOCUS消息wParam是失去焦点的窗口句柄 9 2 4自绘按钮 样式为BS OWNERDRAW源码OWNDRAW C父窗口处理消息WM DRAWITEM 9 4 3窗口子类 获取和设置窗口过程的地址的技术源码COLORS1 C 第10章菜单和其它资源 本章内容 图标 鼠标指针 字符串和自定义资源菜单键盘加速键 10 1图标 资源的概念非程序的部分都可以作为资源附加到EXE文件内用相应的函数来加载 如LoadIcon 10 1图标 新建资源脚本自动产生资源脚本文件 rc文件 和头文件RESOURCE H编译资源产生res文件 此文件被链接进入exe文件加载资源LoadIcon hInstance MAKEINTRESOURCE IDI ICON 图标同一文件可多个规格同一标识符自动切换 10 1图标 资源文件加入到工程FileView 右键点击某一工程 添加文件到工程从工程外用文本编辑器打开可看源代码 10 1 2获得图标的句柄 资源句柄LoadIcon hInstance MAKEINTRESOURCE IDI ICON 资源标识的表示宏 缺省的表示方法 defineMAKEINTRESOURCEA i LPSTR DWORD WORD i 字符串要用引号数字TE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建筑安装工程临水方案(3篇)
- 防疫专员面试题及答案2025
- 手术器械清点试题及答案
- 2010年1月国开电大法学本科《劳动与社会保障法》期末纸质考试试题及答案
- 新能源汽车品牌忠诚度2025年研究报告:用户忠诚度与品牌影响力
- 2025年环保产业园循环经济模式下的绿色环保产业发展前景报告
- 团队的力量课件
- 音基三级考试题及答案
- 疫情英语考试题目及答案
- (2025)伤口、造口、失禁性皮炎知识考试题及答案
- 四川省成都龙泉中学2025-2026学年英语高三第一学期期末学业水平测试模拟试题
- 保管员工勤技师综合测试试卷及参考答案
- 投资协议书对赌协议范本
- 2025年电子商务设计师国家资格考试试题及答案解析
- 综合执法局执法考试试题库(附答案)
- 血透室溶血的应急预案演练记录范文
- 环境保护与节能减排课件
- 铁路十五五规划2026-2030年
- 汽车销售培训课程
- 工厂数据采集与分析系统方案
- 2025证券股份面试题目及答案
评论
0/150
提交评论