《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
	填寫數據結構,調用函數傳入地址
發佈了38 篇原創文章 · 獲贊 3 · 訪問量 9337
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章