;运行效果
;win32汇编环境,对话框中静态控件static的常用功能
;静态控件static可以用来显示文本、ICO图标、bmp位图
;直接抄进RadAsm可编译运行。
;下面为asm文件
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.386
.model flat,stdcall
option casemap:none
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Include 文件定义
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include windows.inc
include user32.inc
include kernel32.inc
includelib user32.lib
includelib kernel32.lib
; 自定义函数声明
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
DlgProc proto :DWORD,:DWORD,:DWORD,:DWORD ;对话框窗口函数
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 数据段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.data
DlgName db "MyDialog",0
szCheshi db "我是static控件里的文本",0
.data?
hInstance dd ?
hIco dd ? ;图标句柄
hBmp dd ? ;图像句柄
.const
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Equ 等值定义
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
IDSTATIC01 equ 21
IDSTATIC02 equ 22
IDSTATIC03 equ 23
IDC_ICO equ 31
IDC_BMP equ 32
ID_BUTTON01 equ 41
ID_BUTTON02 equ 42
ID_BUTTON03 equ 43
; 代码段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.code
start:
invoke GetModuleHandle, NULL
mov hInstance,eax
invoke DialogBoxParam, hInstance, ADDR DlgName,NULL, addr DlgProc, NULL
invoke ExitProcess,eax
DlgProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
.if uMsg == WM_INITDIALOG
invoke LoadIcon,hInstance,IDSTATIC02 ;加载ico图标
mov hIco,eax
invoke SendMessage,hWnd,WM_SETICON,ICON_BIG,eax ;设置标题栏左边的图标
invoke LoadBitmap,hInstance,IDSTATIC03 ;加载bmp图像
mov hBmp,eax
.elseif uMsg==WM_COMMAND
mov eax,wParam
.if eax == ID_BUTTON01
invoke SendDlgItemMessage,hWnd,IDSTATIC01,WM_SETTEXT,0,addr szCheshi ;设置文本
.elseif eax == ID_BUTTON02
invoke SendDlgItemMessage,hWnd,IDC_ICO,STM_SETICON,hIco,0 ;设置图标
.elseif eax == ID_BUTTON03
invoke SendDlgItemMessage,hWnd,IDC_BMP,STM_SETIMAGE,IMAGE_BITMAP,hBmp ;设置图像
.endif
.elseif uMsg == WM_CLOSE
invoke EndDialog, hWnd,NULL
.else
mov eax,FALSE
ret
.endif
mov eax,TRUE
ret
DlgProc endp
end start
;下面为rc文件内容
#include "resource.h" //提示缺少该文件,可以在资源里下载
/
#define IDSTATIC01 21
#define IDSTATIC02 22
#define IDSTATIC03 23
#define IDC_ICO 31
#define IDC_BMP 32
#define ID_BUTTON01 41
#define ID_BUTTON02 42
#define ID_BUTTON03 43
/
IDSTATIC02 ICON "Main.ico"
IDSTATIC03 BITMAP "a.bmp"
/
//定义对话框
MyDialog DIALOG 10, 10, 150, 240
STYLE DS_CENTER | WS_CAPTION | WS_MINIMIZEBOX |
WS_SYSMENU | WS_VISIBLE | WS_OVERLAPPED | DS_MODALFRAME | DS_3DLOOK
CAPTION "对话框中静态控件static的常用操作"
BEGIN
CONTROL "", IDSTATIC01, "Static", WS_CHILD | WS_VISIBLE, 10, 10, 100, 20
CONTROL "", IDC_ICO, "Static", SS_ICON | WS_CHILD | WS_VISIBLE, 10, 30, 40, 20
CONTROL "", IDC_BMP, "Static", SS_BITMAP | WS_CHILD | WS_VISIBLE, 10, 60, 40, 40
PUSHBUTTON "点我显示static控件里的文本", ID_BUTTON01, 25,160,100,13
PUSHBUTTON "点我显示static控件里的图标", ID_BUTTON02, 25,180,100,13
PUSHBUTTON "点我显示static控件里的图像", ID_BUTTON03, 25,200,100,13
CONTROL "", -1, "Static", SS_ETCHEDHORZ | WS_CHILD | WS_VISIBLE, 25, 228, 65, 1 //可用来加沉底实线,好看点,也可以用于隔离控件或菜单
CONTROL "CSDN出品", -1, "Static", WS_CHILD | WS_DISABLED, 90, 225, 100, 20
END