📄 aboutme.asm
字号:
.386
.model flat, stdcall
option casemap :none ; case sensitive
include windows.inc
include user32.inc
include kernel32.inc
include comctl32.inc
include comdlg32.inc
include shell32.inc
include gdi32.inc
includelib user32.lib
includelib kernel32.lib
includelib comctl32.lib
includelib comdlg32.lib
includelib shell32.lib
includelib gdi32.lib
;**********************************************
_HyperLinkProc proto :dword,:dword,:dword,:dword
AboutDialogProc proto:dword,:dword,:dword,:dword
.const
DLG_ABOUT EQU 3000
IDI_MAIN equ 1000
IDC_HANDLE equ 2000
IDC_HOMEPAGE equ 3002
IDC_EMAIL equ 3001
IDC_OICQ equ 3003
IDC_MARK EQU 3004
;*********************************************
.data
ClassName DB "SimpleWinClass",0
AppName DB "惊涛之帆汇编工作室.",0
DlgName db "MyDialog",0
GoHomePage db "http://smallwaves.yeah.net",0
GoEmail db "mailto:webmaster@jingtao.net"
db "?subject=让我们共同努力吧!",0
;***********************************************
.data?
hInstance HINSTANCE ?
CommandLine LPSTR ?
hCursor dd ?
hIcon dd ?
buffer db 256 dup (?)
RGB macro red,green,blue
xor eax,eax
mov ah,blue
shl eax,8
mov ah,green
mov al,red
endm
;************************************************
.code
DllEntry proc hInst:DWORD, reason:DWORD, reserved1:DWORD
.if reason==DLL_PROCESS_ATTACH ; When the dll is loaded
push hInst
pop hInstance
invoke InitCommonControls
invoke DialogBoxParam,hInstance,DLG_ABOUT,\
NULL,offset AboutDialogProc,DLG_ABOUT
invoke ExitProcess,NULL
;*******************************************************************
.endif
mov eax,TRUE
ret
DllEntry Endp
_HyperLinkProc proc hWnd:dword,uMsg:UINT,wParam:WPARAM,lParam:LPARAM
mov eax,uMsg
.if eax==WM_LBUTTONUP
invoke GetDlgCtrlID,hWnd
.if eax==IDC_HOMEPAGE
invoke ShellExecute,0,0,offset GoHomePage,0,0,0
.elseif eax==IDC_EMAIL
invoke ShellExecute,0,0,offset GoEmail,0,0,0
.endif
.elseif eax==WM_NCHITTEST
mov eax,TRUE
ret
.elseif eax==WM_SETCURSOR
INVOKE SetCursor,hCursor
.else
invoke GetWindowLong,hWnd,GWL_USERDATA
INVOKE CallWindowProc,eax,hWnd,uMsg,wParam,lParam
ret
.endif
xor eax,eax
ret
_HyperLinkProc endp
_SetBkColor proc hWnd:dword,wParam:dword,backcolor:dword
local hBrush :dword
local rect:RECT
local LogBrush:LOGBRUSH
mov LogBrush.lbStyle,BS_SOLID
mov eax,backcolor
mov LogBrush.lbColor,eax
invoke CreateBrushIndirect,addr LogBrush
mov hBrush,eax
invoke GetClientRect,hWnd,addr rect
invoke FillRect,wParam,addr rect,hBrush
mov eax,TRUE
ret
ret
_SetBkColor endp
AboutDialogProc proc uses ebx esi edi ,\
hWnd:dword,uMsg:UINT,wParam:dword,lParam:dword
local hWinTemp:dword
local stFont:LOGFONT
LOCAL hFontOutput:dword
LOCAL ps:PAINTSTRUCT
LOCAL hdc:HDC
LOCAL hMemoryDC:HDC
LOCAL hOldBmp:DWORD
LOCAL bitmap:BITMAP
local rect:RECT
LOCAL hBitMap:dword
mov eax,uMsg
.if eax==WM_CLOSE
INVOKE EndDialog,hWnd,NULL
.elseif eax==WM_INITDIALOG
invoke LoadCursor,hInstance,IDC_HANDLE
MOV hCursor,eax
invoke GetDlgItem,hWnd,IDC_HOMEPAGE
mov hWinTemp,eax
invoke SetWindowLong,hWinTemp,\
GWL_WNDPROC,OFFSET _HyperLinkProc
invoke SetWindowLong,hWinTemp,\
GWL_USERDATA,EAX
invoke GetDlgItem,hWnd,IDC_EMAIL
mov hWinTemp,eax
invoke SetWindowLong,hWinTemp,\
GWL_WNDPROC,OFFSET _HyperLinkProc
invoke SetWindowLong,hWinTemp,\
GWL_USERDATA,EAX
.elseif eax==WM_CTLCOLORSTATIC
invoke GetDlgCtrlID,lParam
.if eax==IDC_HOMEPAGE || eax==IDC_EMAIL || eax==IDC_OICQ || EAX==IDC_MARK || eax==11 || EAX==12 || EAX==10
.IF EAX==IDC_HOMEPAGE || eax==IDC_EMAIL || eax==IDC_OICQ
invoke SendMessage,lParam,WM_GETFONT,0,0
MOV hFontOutput,eax
invoke GetObject,hFontOutput,sizeof LOGFONT,ADDR stFont
mov stFont.lfUnderline,TRUE
invoke CreateFontIndirect,addr stFont
mov hFontOutput,eax
invoke SelectObject,wParam,eax
.ENDIF
RGB 255,61,0
invoke SetTextColor,wParam,eax
;invoke GetSysColor,COLOR_MENU
RGB 0,255,0
INVOKE SetBkColor,wParam,eax
invoke DeleteObject,hFontOutput
invoke GetStockObject,NULL_BRUSH
.ELSE
MOV eax,FALSE
ret
.endif
ret
.elseif uMsg==WM_ERASEBKGND
RGB 0,255,0
invoke _SetBkColor,hWnd,wParam,eax
.else
mov eax,FALSE
ret
.endif
mov eax,TRUE
ret
mov eax,TRUE
ret
AboutDialogProc endp
end DllEntry
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -