《Windows环境下32位汇编语言程序设计》 第五章笔记

  • WM_COMMAND产生的条件:点击菜单, 点击加速键,点击子窗口按钮,点击工具栏按钮,点击列表框。这些时候都有command消息产生
  • wParam 高16位通知码,低16位命令ID, lParam 发送命令消息的子窗体句柄。

菜单的定义

菜单ID MENU [DISCARDABLE]
BEGIN
	POPUP  菜单文字 [,选项列表]
	BEGIN
		MENUITEM 菜单项文字,菜单项ID [,选项列表]
		MENUITEM SEPARATOR    //定义菜单项之间的分割线
	END
END
  • 菜单项ID——用来分辨不同的菜单项。当菜单被选中的时候,windows会向窗口过程发送WM_COMMAND消息,消息的参数就是这个菜单项ID。用菜单项ID可以分辨用户究竟选中了哪个菜单项。

菜单项的选项——用来定义菜单项的各种属性

  • CHECKED——表示打上选定标志(对钩)
  • GRAYED——表示菜单项是灰化的
  • INACTIVE——表示菜单项是禁用的
  • MENUBREAK 或 MENUBARBREAK——表示将这个菜单项和以后的菜单项列到新的列中

加速键的定义

加速键ID ACCELERATORS
BEGIN
	键名,命令ID [,类型] [,选项]
END
  • 键名——表示加速键对应的案件,可以有三种方式定义
  1. “^字母”:表示Ctrl键加上字母键
  2. “子母”:表示字母,这时类型必须指明是VIRTKEY
  3. 数值:表示ASCLL码为该值的字母,这时类型必须指明为ASCLL
  • 命令ID——按下加速键后,windows向程序发送的命令ID。如果想把加速键和菜单项关联起来,这里就是要关联菜单项的ID
  • 类型——用来指定键的定义方式,可以是VIRTKEY和ASCLL,分别用来表示“键名”字段定义的是虚拟键还是ASCLL码。
  • 选型——可以是Alt,Control或Shift中的单个或多个,如果指定多个,则中间用逗号隔开,表示加速键是按键加上这些控制键的组合键

图标和光标的资源定义

图标ID ICON [DISCARDABLE] 图标文件名
光标ID CURSOR [DISCARDABLE] 光标文件名

对话框资源定义

对话框ID DIALOG [DISCARDABLE] x坐标,y坐标,宽度,高度
[可选属性]
BEGIN
	子窗口控件
END

创建模态对话框

invoke DialogBoxParam,hInstance,lpTemplateName,hWndParent,lpDialogFunc,dwInitParam

  • lpTemplateName,函数从hInstance参数指定的模块中装入 lpTemplateName参数指定的对话框资源。
  • hWndParent,对话框的父窗口,对话框关闭之前将无法切换到父窗口所属的其他窗口中。
  • lpDialogFunc,指定了对话框过程的地址,
  • dwInitParam,当做WM_INITDIALOG消息的lParam传给对话框过程,自定义用途。

创建非模态对话框

invoke CreateDialogParam,hInstance,lpTemplateName,hWndParent,lpDialogFunc,dwInitparam
mov hDlg,eax

CreateDialogParam和DialogBoxParam在使用中有几个不同点:

  • CreateDialogParam 在创建对话框后,会根据对话框模板的风格是否定义了WS_VISIBLE来决定是否显示对话框窗口。如果定义了则显示,没有定义,则程序需要在以后自行调用ShowWindow来显示它;而DialogBoxParam函数不管是否定义都会显示对话框。
  • CreateDialogParam在建立对话框窗口后直接返回,返回值是对话框窗口的句柄;而DialogBoxParam需要在对话框关闭后才返回,返回值是EndDialog中的dwResult参数。
  • 由于在CreateDialogParam返回后,应用程序在自己的消息循环中获取对话框消息,所以如果要用非模态对话框来做程序的主窗口,消息循环的代码还是要写的;而DialogBoxParam是使用Windows为它内建的消息循环
  • 关闭非模态对话框仍然使用DestroyWindow函数。

对话框过程和普通窗口过程的区别

  • 窗口过程对应于不同的消息有各种不同含义的返回值,而对话框过程返回BOOL类型的值,返回TRUE表示已经出了某条消息,返回FALSE表示没有处理。“对话框管理器”代码会根据返回值决定是否继续处理某条消息(唯一的例外是WM_INITDIALOG消息)
  • 对于不处理的消息,不需要调用DefWindowProc来处理,这事情由“对话框管理器”来做。

在对话框中使用子窗口控件

  • 子窗口控件的定义
    CONTROL 文本 ,ID,类,风格,x,y,宽度,高度 [,扩展风格]
    控件名称 [文本,] ID,x,y,宽度,高度,[,风格] [,扩展风格]
资源脚本中使用的控件名称
控件名称说明基于的类默认窗口风格
PUSHBUTTON按钮ButtonBS_PUSHBUTTON,WS_TABSTOP
DEFPUSHBUTTON默认按钮ButtonBS_DEFPUSHBUTTON,WS_TABSTOP
CHECKBOX复选框ButtonBS_CHECKBOX,WS_TABSTOP
AUTOCHECKBOX自动复选框ButtonBS_AUTOCHECKBOX,WS_TABSTOP
STATE33态复选框ButtonBS_3STATE,WS_TABSTOP
AUTO3STATE自动3态复选框ButtonBS_AUTO3STATE,WS_TABSTOP
RADIOBUTTON单选钮ButtonBS_RADIOBUTTON,WS_TABSTOP
AUTORADIOBUTTON自动单选钮ButtonBS_AUTORADIOBUTTON,WS_TABSTOP
GROUPBOX分组框ButtonBS_GROUPBOX
SCROLLBAR滚动条ScrollBarSBS_HORZ
CTEXT居中文本StaticSS_CENTER,WS_GROUP
LTEXT左对齐文本StaticSS_LEFT,WS_GROUP
RETEXT右对齐文本StaticSS_RIGHT,WS_GROUP
ICON图标框StaticSS_ICON
EDITTEXT文本编辑EditES_LEFT,WS_BORDER,WS_TABSTOP
COMBOBOX组合框ComboBoxCBS_ SIMPLE,WS_TABSTIOP
LISTBOX列表框ListBoxLBS_NOTIFY,WS_BORDER

子窗口控件的通用使用方法

  • 由于子窗口控件实际上就是窗口,大部分窗口函数对它们都是适用的,如可以用EndbleWindow在灰化和允许状态之间切换,可以用ShowWindow在显示和隐藏之间切换,可以用GetWindowTextt和SetWindowText来改变上面的文字,也可以用MoveWindow
    来改变大小和移动位置。

  • 在资源脚本文件中定义的是控件的ID,当这些子窗口控件被创建以后同样会有一个窗口句柄,用函数GetDlgItem来获取子窗口句柄,用GetDlgCtrlIDGetWindowLong函数来获取子窗口句柄

  • 向控件发消息用SendDlgItemMessage,如果想要知道在控件上按下Tab键后会跳到哪个控件上去,可以使用GetNextDlgTabItem

使用单选框和复选框

  • 查看一个单选框或复选框是否被选中可以用isDlgButtonChecked来检测
  • 选中单选框或复选框可以用’CheckDlgButton’函数

使用静态控件

  • 静态控件是基于static类的子窗口控件,它是“安静的”——它们不向对话框发送WM_COMMAND消息。

用法:

-用SetWindowText或发送WM_SETTEXT消息来动态改变显示的文本,也可以用GetWindowText或发送WM_GETTEXT消息来获取其中的文本。

  • 静态控件还有一个用途是做图形显示,可以通过向控件发送STM_SETIMAGE消息来设置新的图片,消息的wParam指定图片的格式,取值可以是IMAGE_BITMAP,IMAGE_CURSOR和IMAGE_ICON,lParam是图片的句柄。

使用文本编辑控件

  • 每当用户在文本编辑控件中输入一个字符的时候,控件就会向对话框发送一个WM_COMMAND消息。要获得编辑框中的文本有多种办法,可以用GetWindowText,也可以用发送WM_GETTEXT消息的办法,要设置文本,同样可以用GetWindowText或发送WM_SETTEXT,但最简单的是使用GetDlgItemTextSetDlgItemText函数

  • 文本编辑控件输入输出数值型参数,使用函数SetDlgItemIntGetDlgItemInt

使用滚动条

  • 水平滚动条向对话框发送WM_HSCROLL,垂直滚动条则发送WM_VSCROLL消息,消息的参数:wParam的低16位是滚动条的动作码,高16位是滚动条当前位置。lParam是滚动条控件的窗口句柄。只有当动作码是SB_THUMBPOSTION或SB_THUMBTRACK时才有效,其他时候为0.

滚动条的动作码:

  • SB_BOTTOM ——滚动条移到了最下/右边

  • SB_ENDSCROLL——用户停止了滚动动作

  • SB_THUMBPOSITION——滚动条被拖动到某处。

  • SB_THUMBTRACK——滚动条在拖动中

  • SB_TOP——滚动条移到了最上边/左边

  • SB_LINELEFT——滚动条左移了一格(对于水平滚动条)

  • SB_LINERIGHT——滚动条右移了一格(对于水平滚动条)

  • SB_PAGELEFT——滚动条左移了一页(对于水平滚动条)

  • SB_PAGERIGHT——滚动条右移了一页(对于水平滚动条)

  • SB_LINEDOWN——滚动条下移了一格(对于垂直滚动条)

  • SB_LINEUP——滚动条上移了一格(对于垂直滚动条)

  • SB_PAGEDOWN——滚动条下移了一页(对于垂直滚动条)

  • SB_PAGEUP——滚动条上移了一页(对于垂直滚动条)

  • 在初始化的时候,要发送SBM_SETRANGE消息来设定滚动范围invoke SendDlgItemMessage,hWnd,IDC_SCROLL,SB_SETRANGE,最小值,最大值

  • 计算好新的位置后,发送向滚动条发送SB_SETPOS消息设置滚动条位置。

  • 获取滚动条信息,可以发送SBM_GETPOS可以获取滚动条当前位置,SBM_GETRANGE可以获取滚动的范围。

使用组合框

  • 当用户在组合框中进行选择操作时,Windows向对话框过程发送WM_COMMAND消息,wParam参数的的低16位是组合框ID,高16位是通知码,用来表示用户的操作
组合框的消息
消息wParamlParam说明
CB_ADDSTRING0字符串地址把一个字符串添加到列表中
CB_INSERTSRTING位置索引字符串地址把一个字符串插入到列表中
CB_FINDSTRING开始查找的位置索引查找的字符串在列表中查找以lParam字符串开头的项,找到则返回位置索引,未找到则返回CB_ERR
CB_FINDSRTINGXACT位置索引查找的字符串精确查找字符串
CB_DELETESTRING位置索引0删除一个列表项
CB_RESETCONTENT00删除所有的列表项
CB_GETLBTEXT位置索引缓冲区地址获取指定列表项的字符串,缓冲区必须足够大
CB_GETLBTEXTLEN位置索引0获取指定列表项的字符串长度
CB_GETCOUNT00获取列表项的总项数
CB_SETCURSEL位置索引0选中一个列表项,并将列表项中的文字拷贝到编辑控件中
CB_SELECTSTRING开始查找的位置索引字符串地址查找以lParam指定的字符串开始的列表项,如果找到则选中它并将字符串拷贝到编辑控件中
CB_GETCURSEL00获取当前选中的位置索引,没有选中额项目则返回CB_ERR
CB_SHOWDROPDOWN状态0打开(状态为TRUE)或收起(状态为FALSE)下拉列表
CB_GETDROPPEDSTATE00检测列表的当前下拉状态,返回TRUE表示拉下,FALSE表示收起
用户操作组合框后的通知码
通知码说明
CBN_SELCHANGE用户将要选择一个项目(鼠标移动到了这个项目上)
CBN_CLOSEUP下拉列表关闭(可能是选择完成也可能是取消选择)
CBN_SELENDOK用户完成选择项目
CBN_SELENDCANCEL用户取消选择(鼠标移动到了某个项目上,但并没有按下而是点击了其他控件,或按了Esc键)
CBN_DBLCLK在CBS_SIMPLE的组合框中双击了一个列表项
CBN_DROPDOWN用户打开了下拉框(按动了编辑框边的下拉按钮)

使用列表框

列表框可以使用的风格
风格说明
LBS_DISABLENOSCROLL在不需要滚动的时候也显示垂直滚动条
LBS_EXTENDEDSEL在多选列表框中允许按住Shift键的同时选中一个范围
LBS_MULTIPLESE允许多选,如果不定义的话则是单选列表框
LBS_NOSEL列表框项目只能查看不能选择
LBS_NOTIFY用户单击或双击项目时向父窗口发送WM_COMMAND消息
LBS_SORT自动按字母顺序排序插入的项目
LBS_USETABSTOPS列表框项目的文本中允许将Tab字符的位置展开
LBS_STANDARD组合LBS_NOTIFY,LBS_SORT,WS_VSCROLL和WS_BORDER (单选列表定义此风格)

当列表框有LBS_NOTIFY风格,用户有所动作列表框会向父窗口发送WM_COMMAND消息,wParam高16位是通知码,

列表框的通知码:

  • LBN_DBLCLK——用户双击了一个项目
  • LBN_ERRSPACE——插入项目时无法申请到足够的内存
  • LBN_KILLFOCUS——输入焦点被切换到其他控件中,列表框丢失了焦点
  • LBN_SELECANCEL——用户撤销了一个选择
  • LBN_SELECHANGE——选定状态改变
  • LBN_SETFOCUS——列表框得到输入焦点



列表框通知父窗口是通过发送WM_COMMAND消息,而程序控制列表框是通过向列表框发送消息来完成的

列表框消息
消息wParamlParam说明
LB_ADDSTRING0字符串地址添加一个项目,返回加入后的索引
LB_DELETESTRING位置索引0删除一个项目,返回剩余的项数
LB_FINDSTRING开始索引字符串地址查找以字符串开头的项目,找到则返回位置索引,未找到则返回LB_ERR
LB_FINDSTRINGGEXACT开始索引字符串地址精确查找一个项目,返回值同上
LB_GETANCHORINDEX00返回多选列表框多选时的起始位置
LB_GETCARETINDEX00多选列表框中的当前焦点项目位置
LB_GETCOUNT00返回列表框中的项目数
LB_GETCURSEL00返回单选列表框当前选中的项目的索引
LB_GETSEL位置索引0检测指定项目的选中状态,返回非0为选中,返回0为未选中
LB_GETSELCOUNT00返回多选列表框选中项目的总数
LB_GETSELITEMS最大项数缓冲区地址返回多选列表框的选中项目索引列表到缓冲区中
LB_GETTEXT位置索引缓冲区地址返回某个项目的字符串
LB_GETTEXTLEN位置索引0返回某个项目的字符串长度
LB_GETTOPPINDEX00返回当前可见的第一个项目位置
LB_INSERTSTRING插入位置字符串地址在指定位置插入一个项目
LB_RESETCONTENT00删除所有项目
LB_SELECTSTRING开始位置字符串地址将以指定字符串开头的项目选中
LB_SETCURSEL位置索引0在单选列表框中选中一个项目
LB_SETSEL选择状态位置索引在多选框中将一个项目选中或清除
LB_SETTOPPINDEX位置索引0滚动显示到指定的项目
LB_DIR属性文件通配符搜索目录并将符合文件通配符的文件名加入到列表框中
LB_SELITEMRANGE选择状态范围在多选框中将一个范围选中或清除

LB_DIR可以指定目录中的文件名自动累出来并加入到列表框中。LB_DIR消息中wParam参数可以指定的属性:

  • DDL_ARCHIVE——加入归档属性的文件
  • DDL_DIRECTORY——加入目录
  • DLL_DRIVES——加入驱动器名
  • DLL_HIDDEN——包含隐藏文件
  • DLL_READONLY——包含可读写的文件
  • DLL_SYSTEM——包含系统文件

字符串资源

在资源脚本中定义字符串的语法是:

STRINGTABLE [DISCARDABLE]
BEGIN
	字符串ID1 "字符串1"
	字符串ID2 "字符串2"
END

版本信息资源的定义

  • FILEVERSION—定义文件版本号,可以定义4个16位版本号xx.xx.xx.xx
  • PRODUCTVERSION——定义产品版本号,可以定义4个16位版本号xx.xx.xx.xx
  • FILEFLAGSMASK——指定FILEFLAGS属性中哪些位有效。
  • FILEFLAGS——文件标志,是一些标志位的组合:VS_FF_PATCHED,VS_FF_DEBUG,VS_FF_PRIVATEBUILD,BS_FF_INFOINFERRED,VS_FF_PRERELEASE和VS_FF_SPECI_ALBUILD.
  • FILEOS——定义适用的操作系统,可定义为VOS_UNKNOWN,VOS_DOS,VOS_NT,VOS_WINDOWS16,VOS_WINDOWS32,VOS_DOS_WINDOWS16,VOS_DOS_WINDOWS32或VOS_NT_WINDOWS32.
  • FILETYPE——定义文件类型。

使用二进制资源

win32资源中允许用户自己定义二进制的资源或者自定义格式的资源,资源内容可以是任何数据,可以将一个磁盘文件按二进制格式包括进去,二进制资源的格式是:

资源ID RCDATA [DISCARDABLE]
BEGIN
	数据定义
END

也可以用一个磁盘文件当做资源

资源ID RCDATA [DISCARABLE] 文件名

在程序使用资源内容时,可以通过以下步骤将资源装入内存使用:

(1). 用 FindResource 函数查找资源,如果找到资源则返回资源信息的句柄。
(2). 用LoadResource函数装入资源,装入成功后会返回一个资源句柄
(3). 用LockResource函数将资源锁定到内存中,函数返回资源装入的内存地址,程序就可以使用内存中的数据了。
(4). 如果想知道装入的资源的大小是多少,可以使用FindResource返回的句柄来调用SizeofResource从而得到资源大小。

使用自定义资源

自定义资源的定义格式比二进制资源更灵活,它和二进制资源的区别在于可以指定资源类别为自定义的名称:

资源ID   类型ID  [DISCARDABLE]
BEGIN
	数据定义
END

或用一个磁盘文件当做资源的内容:

资源ID 类型ID [DISCARDABLE] 文件名

类型ID要大于255的数值或字符串

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
该版本提供了下册详细目录可以快速查阅(当然已经提供详细书签) 基本信息 原书名: Programming Windows (Fifth Edition) 原出版社: Microsoft Press 作者: (美)Charles Petzold 译者: 北京博彦科技发展有限责任公司 丛书名: Microsoft 程序设计系列 出版社:北京大学出版社 ISBN:730104187X 上架时间:2004-11-16 出版日期:2004 年9月 页码:1376 版次:1-8 内容简介    如果对Windows开发有什么问题的话,请翻阅PetZold的著作吧。在《Window程序设计》(第5版)中,这位杰出的“Windows先锋奖”(Windows Pioneer Award)获得者根据最新的Windows操作系统权威技术修订了他的经典著作——再一次演示了基本的Win32程序设计的API核心内容。本书的内容包括:    ** 基本内容——输入、输出和对话框    ** Unicode概述    ** 图形——绘图、文本和字体、位图和元文件    ** 内核和打印机    ** 声音和音乐    ** 动态链接库    ** 多任务和多线程    ** 多文档界面    ** Internet和 Intranet的程序设计    其中采用的大多是具有代表性的示例,这本Petzold著作为使用 Windows 95、Windows 98或 Windows NT的各级windows程序员提供了最基本的参考和指导。没有经验的开发人员也可以从中获取大量的新知识。       作译者 本书提供作译者介绍    Charles Petzold从 1984年开始编写个人计算机程序,从 1985年开始编写 Microsoft Windows程序。他在《Microsoft Systems Joumal》1986年 12月号上发表了第一篇关于 Windows程序设计的杂志论文。从 1986年到 1995年,他为《PC Magazine》撰写“Environments”专栏,给读者介绍了Windows和OS/2程序设计的许多方面。 《Windows 程序设计》由微软出版社在1988年首次出版,后来被认为是这方面最好的导论性读本。在1994年5月,Petzold作为仅有的七个人之一(并且是唯一的作家)被《WindowcMagazine》和Microsoft公司授予Windows Pioneer奖, 以表彰他对 Microsoft Windows的成功做出的贡献. 在1999年秋天,微软出版社将出版Charles Petzold面向普通读者的第一本书. 暂时命名为 《Code:The Hidden Language of Computer Hardware and Software》, 这本书专门介绍数字信息的本质以及计算机处理数字信息的方式. 作者: Charles Petzold 1994年5月,Petzold作为仅有的七个人之一(并且是唯一的作家)被《Window Magazine》和Microsoft公司授予Windows Pioneer奖,以表彰他对 Microsoft Windows的成功做出的贡献。 Charles Petzold从1984年开始编写个人计算机程序,从1985年开始编写 Microsoft Windows程序。他在《Microsoft Systems Joumal》1986年 12月号上发表了第一篇关于Windows程序设计的杂志论文。从1986年到1995年,他为《PC Magazine》撰写“Environments”专栏,给读者介绍了Windows和OS/2程序设计的许多方面。 [同作者作品] Microsoft c#Windows程序设计(上下册) Microsoft Windows程序设计——Visual Basic.NET语言描述 Windows 3D编程(英文影印版) 目录 第一部分 基础知识 第一章 开始 l.1 windows环境 1.1.1 windows 简史 1.1.2 windows方面 1.1.3 动态链接 1.2 windows编程选项 1.2. 1 api和内存模式 1.2.2 语言选项 l.2. 3 编程环境 1.2.4 api文档 1.3 编写一个windows程序 1.3.1 字符模式(character-mode)模型 1.3.2 windows 等价程序 1.3.3 头文件 1.3.4 程序入口点 1.3.5 messagebox 函数 1.3.6 编译、链接和运行 第二章 unicode简介 2.1 字符集简史 . 2.1.1 美国标准 2.1.2 国际方面 2.1.3 扩展ascll 2.1.4 双字书字符集 2.1.5 unicode解决方案 2.2 宽字符和c 2.2.1 char数据类型 2. 2. 2 宽字符 2.2.3 宽字符库函数 2.2.4 维护单一源代码 2.3 宽字符和windows 2.3.1 windows 头文件类型 2.3.z windows 函数调用 2.3.3 windows的字符串函数 2.3.4 在 windows中使用 printf 2.3.5 格式化消息框 2.3.6 本书与国际化 第三章 窗口和消息 3.1 自己的窗口 3. 1.l 总体结构 3.1.2 hellowin程序 3. 1.3 总体考虑 3.1.4 注册商口类 3.1.5 创建窗口 3.1.6 显示窗口 3.1.7 消息循环 3.1.8 窗口过程 3.1.9 处理消息 3.1.10 播放声音文件 3.1.11 wm_paint消息 3.1.12 wm_destroy消息 3.2 windows编程的难点 3.2.l 别调用我,我会调用您 3.2.2 进队消息与不进队消息 3.2. 3 行动迅速 第四章 输出文本 4.l 绘制和刷新 4.1.1 wm_paint消息 4. 1.2 有效短形和无效矩形 4.2 gdi简介 4.2.l 设备描述表 4.2.2 获取设备描述表句柄:方法一 4.2.3 绘图信息结构 4.2.4 获取设备描述表句柄:方法二 4. 2. 5 textout:细节 4.2.6 系统字体 4.2.7 字符大小 4.2. 8 文本尺寸:细节 4.2.9 格式化文本 4. 2.10 综合使用 4.2.11 sysments1.c窗口过程 4.2.12 空间不够 4. 2.13 客户区的大小 4.3 滚动条 4.3.l 滚动条的范围和位置 4.3.2 滚动条消息 4.3.3 在sysmets中添加滚动功能 4.3.4 绘图程序的组 4.4 建立更好的滚动 4.4.l 滚动条信息函数 4.4.2 滚动范围 4.4.3 新sysmets 4.4. 4 不用鼠标怎么办 第五章 图形基础 5. 1 gdi的结构 5.1. 1 gdi原理 5.1.2 gdi函数调用 5.1.3 gdi日元 5. 1. 4 其他方面 5.2 设备描述表 5.2.l 获取设备描述表句柄 5.2.2 获取设备描述表信息 5.2.3 devcaps1程序 5.2.4 设备的大小 5.2.5 关于色彩 5.2.6 设备描述表属性 5.2.7 保存设备描述表 5.3 画点和线 5.3.l 写像素 5.3.2 直线 5.3.3 边界框函数 5. 3.4 贝塞尔样条 5.3.5 使用现有画笔(stock pens) 5.3.6 画笔的创建、选择和删除 5.3.7 填充空隙 5.3.8 绘图方式 5.4 绘制填充区域 5.4.1 polygon函数和多边形填充方式 5.4.2 用画刷填充内部 5.5 gdi映射方式 5.5.l 设备坐标和逻辑坐标 5.5.2 设备坐标系 5.5.3 机口和窗口 5.5.4 处理mm_text 5.5. 5 “度量”映射方式 5.5.6 “自作主张的”映射方式 5.5.7 whatsize 程序 5.6 短形、区域和剪裁 5.6.1 矩形函数 5.6.2 随机短形 5.6.3 创建和绘制区域 5. 6.4 短形与区域的剪裁 5.6.5 clover程序 第六章 键盘 6.1 键盘基础 6.1.1 忽略键盘 6.1.2 谁获得了焦点 6.1.3 队列和同步 6.1.4 击键和字符 6. 2 击键消息 6.2.1 系统击键与非系统击键 6.2.2 虚拟键码 6.2.3 iparam信息 6.2.4 换档状态 6.2.5 使用击健消息 6.2.6 为键盘增强sysmets 6.3 字符消息 6.3.1 四类字符消息 6.3.2 消息顺序 6.3.3 处理控制字符 6.3.4 死字符消息 6.4 键盘消息和字符集 6.4.1 keyviewi程序 6.4.2 外语键盘问题 6.4.3 字符集和字体 6.4.4 unicode怎么样? 6.4.5 truetype和大字体 6.5 插入符(不是光标) 6.5.l 插入符函数 6.5.2 typer 程序 第七章 鼠标 7.1 鼠标基础 7.1.1 一些简单的定义 7.2 客户区鼠标消息 7.2.l 简单的鼠标处理:一个例子 7.2.2 处理sha键 7.2.3 双击鼠标键 7.3 非客户区鼠标消息 7.3.1 命中测试消息 7.3.2 从消息产生消息 7.4 程序中的命中测试 7. 4. 1 一个假想的例子 7.4.2 示例程序 7.4.3 使用键盘仿真鼠标 7.4. 4 在checker中添加键盘接口 7.4. 5 将于窗口用于命中测试 7.4.6 checker中的子窗口 7.4.7 子窗口和键盘 7.5 捕获鼠标 7.5.1 设计矩形 7.5.2 捕获的解决方案 7.5.3 blokout2程序 7.6 鼠标轮 7.6.1 后会有期 第八章 计时器 8.1 计时器基础 8.1.1 系统和计时器 8.1.2 计时器消息不是异步的 8.2 计时器的使用:三种方法 8.2.1 方法一 8.2.2 方法二 8.2.3 方法三 8.3 计时器用于时钟 8.3.1 构造数字时钟 8.3.2 获取当前时间 8.3.3 显示数字和冒号 8.3.4 国际化 8.3.5 构造模拟时钟 8.4 为状态报告使用计时器 第九章 子商口控制 9.1 按钮类 9.1.1 创建于窗口 9.1.2 子窗口向父窗口发送消息 9.1.3 父窗口向子窗口发送消息 9.1.4 下压按钮 9.1.5 复选框 9.1. 6 单选按钮 9.1.7 分组框 9.1.8 更改按钮文本 9.1.9 可见的和启用的按钮 9.1.10 按钮和输入焦点 9.2 控制与颜色 9.2.1 系统颜色 9.2.2 按钮颜色 9.2.3 wm_ctlcolorbtn消息 9.2.4 拥有者给制按钮 9.3 静态类 9.4 滚动条类 9. 4. 1 colors1程序 9. 4.2 自动键盘接口 9. 4. 3 窗口子类化 9.4.4 给背景着色 9.4.5 给滚动条和静态文本着色 9.5 编辑类 9.5.l 编辑类风格 9.5.2 编辑控制通知 9.5.3 使用编辑控制 9.5.4 发送给编辑控制的消息 9.6 列表框类 9.6.1 列表框风格 9.6.2 将串放人列表框 9.6.3 选择和获取项 9.6.4 接收来自列表框消息 9.6.5 一个简单的列表框应用程序 9.6.6 文件列表 9.6.7 windows的head程序 第十章 菜单及其他资源 10.l 图标、光标、字符串和定制资源 10.1.1 将图标添加到程序 10.1.2 获取图标句柄 10.1.3 在程序中使用图标 10.1.4 使用自定义光标 10.1.5 字符串资源 10.1.6 定制资源 10.2 菜单 10.2.1 菜单概念 10.2.2 菜单结构 10.2.3 定义菜单 10.2.4 在程序中引用菜单 10.2. 5 菜单和消息 10.2.6 示例程序 10.2.7 菜单设计规范 10.2.8 定义菜单的复杂方法 10.2.9 浮动弹出式菜单 10.2.10 使用系统菜单 10. 2.11更改菜单 10.2.12 其他菜单命令 10.2.13 创建菜单的非正规方法 10.3 键盘加速键 10.3.1 为什么要使用加速键 10.3.2 安排加速键的几条规则 10.3.3 加速健表 10.3.4 加载加速键表 10.3.5 键盘代码转换 10.3.6 接收加速键消息 10.3.7 菜单与加速键应用程序poppad 10.3.8 启用菜单项 10.3.9 处理菜单项 第十一章 对话框 11.1 模态对话框 11.1.1 创建about对话框 11.1.2 对话框及其模板 11.1.3 对话框过程 11.1.4 激活对话框 11.1.5 不同的主题 11.l.6 更复杂的对话框 11.1.7 使用对话框控制 11.l.8 ok和cancel按钮 11.1.9 避免全局变量 11.1.10 tab停留位和组 11.1.11 在对话框上绘图 11.1.12 将其他函数用于对话框 11.1.13 定义自己的控制 11.2 非模态对话框 11.2.l 模态对话框与非模态对话框的区别 11.2.2 新的 colors程序 11.2.3 hexcalc:窗口还是对话框? 11.3 通用对话框 11.3.l 增强poppad 11.3.2 unicode 文件 i/o 11.3.3 更改字体 11.3.4 查找与替换 11.3.5 只调用一个函数的windows程序 第十二章 剪贴板 12.1 剪贴板的简单使用 12.1.1 标准剪贴板数据格式 12.1.2 内存分配 12.1.3 将文本传送到剪贴板 12.1.4 从剪贴板上获取文本 12.1.5 打开和关闭剪贴板 12.1.6 剪贴板和unicode 12.2 复杂的剪贴板用法 12.2.l 利用多个数据项 12.2.2 延迟生成 12.2.3 私有数据格式 12.3 实现剪贴极查看器 12.3.1 剪贴板查看器链 12.3.2 剪贴板查看器的函数和消息 12.3.3 一个简单的剪贴板查看器

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值