Win32のASM簡単なダイアログプログラミングデモ

A. ASMの基本的なダイアログ

 

ASMファイル;

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; by bobo
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
		.386
		.model flat, stdcall
		option casemap :none
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include		windows.inc
include		user32.inc
includelib	user32.lib
include		kernel32.inc
includelib	kernel32.lib
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Equ 等值定义
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ICO_MAIN	equ		1000h	;图标
DLG_MAIN	equ		1
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
		.data?
hInstance	dd		?
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
		.code
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_ProcDlgMain	proc	uses ebx edi esi hWnd,wMsg,wParam,lParam

		mov	eax,wMsg
		.if	eax == WM_CLOSE
			invoke	EndDialog,hWnd,NULL
		.elseif	eax == WM_INITDIALOG
			invoke	LoadIcon,hInstance,ICO_MAIN
			invoke	SendMessage,hWnd,WM_SETICON,ICON_BIG,eax
		.elseif	eax == WM_COMMAND
			mov	eax,wParam
			.if	ax == IDOK
				invoke	EndDialog,hWnd,NULL
			.endif
		.else
			mov	eax,FALSE
			ret
		.endif
		mov	eax,TRUE
		ret

_ProcDlgMain	endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
start:
		invoke	GetModuleHandle,NULL
		mov	hInstance,eax
		invoke	DialogBoxParam,hInstance,DLG_MAIN,NULL,offset _ProcDlgMain,NULL
		invoke	ExitProcess,NULL
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
		end	start

リソースファイル。

#include		<resource.h>

#define	ICO_MAIN		0x1000	//图标
#define	DLG_MAIN		1

ICO_MAIN	ICON		"Main.ico"

DLG_MAIN DIALOG 350, 250, 120, 64
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "对话框demo模板"
FONT 9, "宋体"
{
 ICON ICO_MAIN, -1, 10, 11, 18, 21
 CTEXT "简单的对话框例子\n by bobo", -1, 36, 14, 70, 19
 DEFPUSHBUTTON "退出", IDOK, 58, 46, 50, 14
 CONTROL "", -1, "Static", SS_ETCHEDHORZ | WS_CHILD | WS_VISIBLE, 6, 39, 103, 1
}

リソースファイル、

書式#include <RESOURCE.H>

一つは、削除することはできません、そうでない場合RC2014エラーが発生します。

ここでMASM32 RESOURCE.Hシステムファイルがある;位置します:

コンソールは、テキスト、次の構築しました。

Microsoft Windowsの[バージョン10.0.17763.557]
マイクロソフトコーポレーション(c)において、2018年。無断複写・転載を禁じます。

G:\ MASM32 \含む:\ win32ASM \小さな例\ Dialog1の>セットは= G含みます

G:\ win32ASM \小さな例\ Dialog1の>セットLIB = G:\ MASM32 \ LIB

G:\ win32ASM \小さな例\ Dialog1の>セットパス= G:\ MASM32 \ビン;%パス%

G:\ win32ASM \小例子\ Dialog1の>ミリリットル/ C / COFF Dialog.asm
のMicrosoft(R)マクロアセンブラバージョン6.14.8444
著作権(C)マイクロソフト社1981年から1997年。全著作権所有。

 組み立て:Dialog.asmを

***********
ASCIIビルド
***********


G:\ win32ASM \小例子\ Dialog1の> RC Dialog.rc
Dialog.rc(7):エラーRC2104:未定義のキーワードまたはキー名:DS_MODALFRAME


G:\ win32ASM \小さな例\ Dialog1の> RC Dialog.rc

G:\ win32ASM \小例子\ Dialog1の>リンク/サブシステム:窓Dialog.obj Dialog.RES
のMicrosoft(R)インクリメンタルリンカバージョン5.12.8078
著作権(C)マイクロソフト社1992年から1998年。全著作権所有。

G:\ win32ASM \小さな例\ Dialog1の>

 

最初のWindows APIのGetModuleHandle取得プログラムのインスタンスハンドルを呼び出し、呼び出しがEAXになり、その後、MOV hInstanceは内側に。

コールDialogBoxParamは、ダイアログを作成します。

ダイアログウィンドウでプロセスを扱う3つのメッセージ、WM_CLOSE、WM_INITDIALOG、WM_COMMAND。

WM_INITDIALOGメッセージのアイコン設定。

EndDialogクローズダイアログボックスを呼び出して、ダイアログボックスやボタンIDOKを閉じるには、ボタンをクリックします。

 

II。増加の効果

 

レッツ増加効果を、エリート兵士のアイコンの小さな行をロードし、次のようにファイルを作成する前に、

この操作は、変更のasmファイルを持っていません。変更のrcファイルを、再実行してRC、再リンク、することができます。OBJが削除された場合、再mlになります。

低い場合は図のRCエラーが発生します。

使用IconWorkshopオープンのアイコンは、唯一の32 * 32-RGB / Aをすることができ残して、すべての書式を削除し、アイコンのICOファイルをさまざまなフォーマットを含むことができます。

次のようにリソースファイルです。

#include		<resource.h>

#define	ICO_MAIN		0x1000	//图标
#define    ICO_shibing1        0x8001
#define    ICO_shibing2        0x8002
#define    ICO_shibing3        0x8003
#define    ICO_shibing4        0x8004
#define	DLG_MAIN		1

ICO_MAIN	ICON		"Main.ico"
ICO_shibing1	ICON		"shibing1.ico"
ICO_shibing2	ICON		"shibing2.ico"
ICO_shibing3	ICON		"shibing3.ico"
ICO_shibing4	ICON		"shibing4.ico"

DLG_MAIN DIALOG 350, 250, 250, 64
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "对话框demo模板"
FONT 9, "宋体"
{
 ICON ICO_MAIN, -1, 10, 11, 20, 21
 ICON ICO_shibing1, -1,32, 11, 20, 21
 ICON ICO_shibing2, -1,54, 11, 20, 21
 ICON ICO_shibing3, -1,76, 11, 20, 21
 ICON ICO_shibing4, -1,98, 11, 20, 21
 DEFPUSHBUTTON "退出", IDOK, 58, 46, 50, 14
 CONTROL "", -1, "Static", SS_ETCHEDHORZ | WS_CHILD | WS_VISIBLE, 6, 39, 103, 1
}

リソースファイルが間違っている場合は、例えば、

ICON ICO_shibing1、-1,32、11、20、21

一つ;前回の書き込み少ないICON、RCは、無効なコントロールの種類をエラーになります。

完全なファイルの構築は、以下のように、操作の効果を次のように。

公開された475元の記事 ウォンの賞賛545 ビュー304万+

おすすめ

転載: blog.csdn.net/bcbobo21cn/article/details/104188812