《Windows环境下32位汇编语言程序设计(第2版)》-chapter4-9部分知识点
2016-07-31 16:58
204 查看
在学习第四章到第九章的过程中,涉及到代码的部分都直接写在main.asm这一个文件里了,现在把一些理论的知识点贴在下面。在学习过程中,自己没有学的有:4.3,5.2,5.3,5.5,5.6,5.7, 第六章,7.3, 7.4, 7.5,8.2.5,8.2.6。
5 5.2 图标和光标 在资源文件中 ID ICON/CURSOR [DISCARDBLE] 文件名 在asm文件中 invoke LoadIcon, hInstanc, ID invoke LoadCursor, hInstanc, ID 5.4.1 对话框:模态对话框,不允许切换到本程序的其他窗口,可以切换到其他程序 系统模态,不可以切换到其他程序 非模态对话框,可以切换到本程序的其他窗口 消息循环:模态,系统内建消息,无法使用快捷键 非模态,消息发送到主窗口 调用:资源文件设计模板,主程序直接调用 7 7.1 GDI提供一个接口,通过一套代码,操作所有有驱动的图形设备 include gdi32.inc includelib gdi32.lib 7.1.1 客户区的刷新 A被覆盖自己重画,在WM_PAINT中 GDI的结构 WM_PAINT中包含功能模块和刷新模块(小程序毫秒级) WM_PAINT中包含刷新模块, WM_COMMAND中包含功能模块(大程序) 发送WM_PAINT的时间 鼠标滑过,图标拖过,不发送 弹出窗口,一般不发送,恢复不了,再发送 UpdateWindow,InvalidateRect,InvalidateRgn发送 其余发送 刷新的代码结构 .if eax == WM_PAINT invoke BeginPaint, hWnd, addr stPs ;刷新 invoke EndPaint, hWnd, addr stPs xor eax, eax ret PAINTSTRUCT typedef struct tagPAINTSTRUCT { HDC hdc; //设备环境句柄 BOOL fErase; //false,用背景色擦除无效区域 RECT rcPaint; //RECT BOOL fRestore; BOOL fIncUpdate; BYTE rgbReserved[32]; } PAINTSTRUCT, *PPAINTSTRUCT; 7.1.2 通过设备环境向屏幕/设备?输出数据,即可显示 获取hDC句柄 invoke BeginPaint, hWnd, addr stPs(只能在WM_PAINT中使用)(仅返回无效区域的大小) invoke GetDC, hWnd(返回整个客户区) invoke ReleaseDC, hWnd, hDC //关联设备 invoke CreateDC, lpszDriver, lpszDevice, lpszOutput, lpInitData invoke CreateCompatibleDC, hDC //都用DeteleDC 7.1.3 色彩 24位色,3*8,真彩色,再高人眼几乎分辨不出 Win32中,用32位表示24位真彩色,只使用低24位,RGB 获取设备颜色深度 invoke GetDeviceCaps, hDC, PLANES mov dwPlanes, eax invoke GetDeviceCaps, hDC, BITSPIXEL mul eax mov dwColorDepth, eax 坐标 左上角为(0,0),水平x轴,竖直y轴 7.2 7.2.1 画笔和画刷 获取预定义的对象 invoke GetStockObject, fnObject mov hNewObject, eax invoke SelectObject, hDC, hNewObject//系统自动替换旧句柄 fnObject:BLACK_PEN/WHITE_PEN/NULL_PEN/BALCK_BRUSH/DKGRAY_BRUSH/WHITE_BRUSH/NULL_BRUSH/ANSI_FIXED_FONT/DEFALULT_VAR_FONT/ DEFAULT_GUI_FONT/OEM_FIXED_FONT/SYSTEM_FONT/DEFALULT_PALETTE 使用自定义的画笔和画刷 invoke CreatePen, fnPenStyle, dwWidth, dwColor mov hNewObject, eax invoke SelectObject, hDC, hNewObject//系统自动替换旧句柄 invoke DeleteObject, eax//删除旧句柄 fnPenStyle:PS_SOLID/PS_INSIDERTAME/PS_NULL/PS_DASH/PS_DOT/PS_DASHDOT/PS_DASHDOTDOT 7.2.1 绘制像素点 略 7.2.3 绘制直线 invoke MoveToEx, hDC, x, y, NULL invoke LineTo, hDC, x, y 改变不连续部分的颜色 invoke SetBkColor, hDC, dwColor 改变不连续部分的透明度 invoke SetBkMode, hDC, OPAQUE invoke SetBkMode, hDC, TRANSPARENT 绘制边界框和填充区域 invoke Rectandgle, hDC, x1, y1, x2, y2 FillRect //无边框 FrameRec //画边框 InvertRect //内部颜色取反 7.2.4 默认R2_COPYPEN 7.3略 7.4略 7.5略 7.6略 8 通用对话框 include comdlg.inc includelib comdlg.lib 填写数据结构,调用函数传入地址 CHOOSECOLOR ChooseColor FINDTEXT FindText REPLACETEXT ReplaceText CHOOSEFONT ChooseFont OPENFILENAME GetOpenFileName OPENFILENAME GetSaveFileName PAGESETUPDLG PageSetupDlg BOOL GetOpenFileName(LPOPENFILENAME Ipofn); Ipofn:指向包含初始化对话框的信息的一个OPENFILENAME结构 返回值:用户指定文件,点击OK,返回值非零,IPstrFile全路径和文件名 用户取消或关闭Open对话框或错误出现,返回值为零 若想获得更多的错误信息,请调用CommDlgExtendedError函数 stOFN:OPENFILENAME lStructSize = sizeof stOFN hwndOwner lpstrFilter = offset szFilter //szFilter db 'Text Files(*.txt)', 0, '*.txt', 0 db 'All Files(*.*)', 0, '*.*', 0, 0 lpstrFile = offset szFile //szFile db MAX_PATH dup (?) nMaxFile = MAX_PATH Flags = OFN_FILEMUSTEXIST| OFN_PATHMUSTEXIST BOOL GetOpenFileName(LPOPENFILENAME Ipofn);同上 9 通用控件 include comctl32.inc includelib comctl32.lib 填写数据结构,调用函数传入地址
相关文章推荐
- VS2012 C# InitializeComponent() 的作用 及部分知识点
- 知识点总结: Java 面试宝典 2013版(超长版) - Java 基础部分
- 黑马程序员_高新技术部分知识点
- 前端知识点汇总(html部分)
- java基础部分的第六小部分知识点--…
- 给Java新手的一些建议——Java知识点归纳(Java基础部分)
- Flash项目知识点汇总(AS2部分)
- 2011东软校园招聘笔试题部分知识点总结——语言部分(C/C++)
- 算法 - 《算法导论 第2版》(前三部分)(转自http://blog.csdn.net/yourtommy/article/details/6749238)
- 部分HTML知识点
- 2016年末,Android岗位BAT等大厂面试题知识点小结(一)Android基础部分
- 《Javascript DOM编程艺术》第2版 知识点汇总
- 操作系统知识点(课后部分答案)
- VC++入门实验及部分知识点讲解
- JAVA知识点梳理第五部分——JAVA数据流(文件)
- 《分布式操作系统》部分知识点整理
- Spring-部分知识点概述(持续更新)
- JavaScript部分知识点汇总
- 前端开发部分知识点总结
- 面试部分知识点整理