《Windows环境下32位汇编语言程序设计(第2版)》-chapter4-9部分知识点

在学习第四章到第九章的过程中,涉及到代码的部分都直接写在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
	填写数据结构,调用函数传入地址
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值