📄 bmp.asm
字号:
.386
.model flat,stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
include \masm32\include\gdi32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\gdi32.lib
WinMain proto :DWORD,:DWORD,:DWORD,:DWORD
.data
ClassName db "MyWin",0
AppName db "Using Bitmap",0
bmp db "MyBmp",0
.data?
hbmp HBITMAP ?
.code
start:
invoke GetModuleHandle, NULL
invoke WinMain, eax, NULL, NULL,SW_SHOWDEFAULT
invoke ExitProcess, eax
WinMain proc hThisInst:HINSTANCE,hPrevInst:HINSTANCE,lpszArgs:LPSTR,nWinMode:DWORD
LOCAL wc:WNDCLASSEX
LOCAL msg:MSG
LOCAL hwnd:HWND
mov wc.cbSize,SIZEOF WNDCLASSEX
push hThisInst
pop wc.hInstance
mov wc.lpszClassName,OFFSET ClassName
mov wc.lpfnWndProc, OFFSET WndProc
mov wc.style, 0
invoke LoadIcon, NULL, IDI_APPLICATION
mov wc.hIcon, eax
invoke LoadIcon, NULL, IDI_WINLOGO
mov wc.hIconSm,eax
invoke LoadCursor, NULL, IDC_ARROW
mov wc.hCursor,eax
mov wc.lpszMenuName,NULL
mov wc.cbClsExtra,NULL
mov wc.cbWndExtra,NULL
invoke LoadBitmap, hThisInst, ADDR bmp
mov hbmp,eax
invoke CreatePatternBrush, eax
mov wc.hbrBackground,eax
invoke RegisterClassEx, addr wc
invoke CreateWindowEx, NULL, ADDR ClassName,ADDR AppName,\
WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,\
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,HWND_DESKTOP,NULL,\
hThisInst,NULL
mov hwnd,eax
invoke ShowWindow, hwnd, nWinMode
invoke UpdateWindow, hwnd
.WHILE TRUE
invoke GetMessage, ADDR msg,NULL,0,0
.BREAK .IF (!eax)
invoke TranslateMessage, ADDR msg
invoke DispatchMessage, ADDR msg
.ENDW
mov eax,msg.wParam
ret
WinMain endp
WndProc proc hWnd:HWND, message:UINT, wParam:WPARAM, lParam:LPARAM
.IF message==WM_DESTROY
invoke DeleteObject, hbmp
invoke PostQuitMessage,NULL
.ELSE
invoke DefWindowProc,hWnd,message,wParam,lParam
ret
.ENDIF
xor eax,eax
ret
WndProc endp
end start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -