日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Win32 ASM 简单对话框编程Demo

發布時間:2025/4/14 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Win32 ASM 简单对话框编程Demo 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一. ?ASM基本對話框

?

asm文件;

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; by bobo ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.386.model flat, stdcalloption 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,lParammov eax,wMsg.if eax == WM_CLOSEinvoke EndDialog,hWnd,NULL.elseif eax == WM_INITDIALOGinvoke LoadIcon,hInstance,ICO_MAINinvoke SendMessage,hWnd,WM_SETICON,ICON_BIG,eax.elseif eax == WM_COMMANDmov eax,wParam.if ax == IDOKinvoke EndDialog,hWnd,NULL.endif.elsemov eax,FALSEret.endifmov eax,TRUEret_ProcDlgMain endp ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> start:invoke GetModuleHandle,NULLmov hInstance,eaxinvoke DialogBoxParam,hInstance,DLG_MAIN,NULL,offset _ProcDlgMain,NULLinvoke ExitProcess,NULL ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>end start

資源文件;

#include <resource.h>#define ICO_MAIN 0x1000 //圖標 #define DLG_MAIN 1ICO_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, 21CTEXT "簡單的對話框例子\n by bobo", -1, 36, 14, 70, 19DEFPUSHBUTTON "退出", IDOK, 58, 46, 50, 14CONTROL "", -1, "Static", SS_ETCHEDHORZ | WS_CHILD | WS_VISIBLE, 6, 39, 103, 1 }

資源文件里,

#include?? ??? ?<resource.h>

一句,不能刪除;否則將出現RC2014錯誤;

此處resource.h是Masm32的系統文件;位于:

控制臺構建的文本如下;

Microsoft Windows [版本 10.0.17763.557]
(c) 2018 Microsoft Corporation。保留所有權利。

G:\win32ASM\小例子\Dialog1>set include=g:\masm32\include

G:\win32ASM\小例子\Dialog1>set lib=g:\masm32\lib

G:\win32ASM\小例子\Dialog1>set path=g:\masm32\bin;%path%

G:\win32ASM\小例子\Dialog1>ml /c /coff Dialog.asm
Microsoft (R) Macro Assembler Version 6.14.8444
Copyright (C) Microsoft Corp 1981-1997. ?All rights reserved.

?Assembling: Dialog.asm

***********
ASCII build
***********


G:\win32ASM\小例子\Dialog1>rc Dialog.rc
Dialog.rc (7): error RC2104 : undefined keyword or key name: DS_MODALFRAME


G:\win32ASM\小例子\Dialog1>rc Dialog.rc

G:\win32ASM\小例子\Dialog1>Link /subsystem:windows Dialog.obj Dialog.RES
Microsoft (R) Incremental Linker Version 5.12.8078
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

G:\win32ASM\小例子\Dialog1>

?

先調用Windows API的GetModuleHandle獲取程序實例句柄;調用結果在eax;然后mov到hInstance里面;

調用DialogBoxParam創建對話框;

在對話框窗口過程處理三個消息;WM_CLOSE,WM_INITDIALOG,WM_COMMAND;

在WM_INITDIALOG消息設置圖標;

點擊對話框關閉按鈕或者IDOK按鈕,調用EndDialog關閉對話框;

?

二. 增加效果

?

下面來增加效果;載入一小排精英士兵圖標;構建之前文件如下;

此操作不須改動asm文件;改變rc文件,重新執行rc,重新鏈接,即可;如果obj已刪除,則要重新ml;

如果rc出現下圖錯誤;

使用IconWorkshop打開圖標;一個圖標ico文件是可以包含多種格式的;刪除所有格式,只留下32*32-RGB/A即可;

資源文件如下;

#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 1ICO_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, 21ICON ICO_shibing1, -1,32, 11, 20, 21ICON ICO_shibing2, -1,54, 11, 20, 21ICON ICO_shibing3, -1,76, 11, 20, 21ICON ICO_shibing4, -1,98, 11, 20, 21DEFPUSHBUTTON "退出", IDOK, 58, 46, 50, 14CONTROL "", -1, "Static", SS_ETCHEDHORZ | WS_CHILD | WS_VISIBLE, 6, 39, 103, 1 }

如果資源文件有寫錯;例如?,

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

一句;前面少寫ICON,RC會報錯 invalid control type;

構建完成文件如下;運行效果如下;

總結

以上是生活随笔為你收集整理的Win32 ASM 简单对话框编程Demo的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。