독서 노트 - Windows 환경에서 32비트 어셈블리 언어 프로그램 설계 (5) 모드 대화상자
2190 단어 windows
예를 들어 MFC 프로젝트마다 리소스가 있습니다.h, 아무런 수정도 하지 않았을 때, 이 Resource.h 파일은 원래 자체로 가지고 있던 것이다.자원에 대한 수정과 추가 같은 것을 진행할 때, 새로 추가된 자원의 ID는 이 프로젝트의 Resource에 추가됩니다.h중.Win32 어셈블리의 RC 파일에 처음에 포함된 Resource.h는 아무런 수정도 하지 않았기 때문에 새로 추가된 자원의 ID를 #define 매크로로 추가합니다.
#include <resource.h>
#define IDD_DLG 130
#define IDC_BTN_TEST 1001
#define IDI_ICO_HEHE 1002
IDI_ICO_HEHE ICON "hehe.ico"
IDD_DLG DIALOGEX 0, 0, 316, 90
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION " "
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
DEFPUSHBUTTON " ",IDOK,205,69,50,14
PUSHBUTTON " ",IDCANCEL,259,69,50,14
PUSHBUTTON " ",IDC_BTN_TEST,113,18,50,14
END
ASM 파일에 대해 이것은 당연히 손으로 써야 한다.DialogBoxParam의 콜백 함수에 대해서는 반드시 판단 논리를 잘 써야 한다.이것은 VC에서 디버깅하는 것보다 좋지 않다.
또한 응용 프로그램의 실례는 dd이지만, 잘못 쓰면 알림이 있을 수 있어서 다행이다.
RC 파일에 있는 컨트롤 ID를 정의하는 것을 잊지 마십시오. 그러나 컴파일을 쓰지 않았을 때도 알림이 있을 수 있어서 다행입니다.
.386
.model flat,stdcall
option casemap:none
include windows.inc
include kernel32.inc
includelib kernel32.lib
include user32.inc
includelib user32.lib
IDD_DLG equ 130
IDC_BTN_TEST equ 1001
IDI_ICO_HEHE equ 1002
.data
gszCaption db 'Caption',0
gszText db 'Text',0
.data?
ghInstance dd ?
.code
DlgFunc 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,ghInstance,IDI_ICO_HEHE
invoke SendMessage,hWnd,WM_SETICON,ICON_BIG,eax
.elseif eax==WM_COMMAND
mov eax,wParam
.if ax==IDOK
invoke EndDialog,hWnd,NULL
.elseif ax==IDC_BTN_TEST
invoke MessageBox,hWnd,addr gszText,addr gszCaption,MB_OK
.endif
.else
mov eax,FALSE
ret
.endif
mov eax,TRUE
ret
DlgFunc endp
start:
invoke GetModuleHandle,NULL
mov ghInstance,eax
invoke DialogBoxParam,ghInstance,IDD_DLG,NULL,addr DlgFunc,NULL
invoke ExitProcess,NULL
end start
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
제한된 크기의 디렉토리를 만드는 방법오늘 저는 장치에 공간이 없을 때 백업 중에 응용 프로그램이 어떻게 작동하는지 테스트(및 수정)하는 작업이 있습니다. 결과적으로 "남은 공간 없음"오류로 백업이 실패하면 새 파일이 없어야 합니다. 지금까지 문제를 재...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.