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は、無効なコントロールの種類をエラーになります。
完全なファイルの構築は、以下のように、操作の効果を次のように。