📄 property.asm
字号:
invoke TxtLstFalseTrue,[esi].style,addr MinBDlg
.elseif eax==PRP_BOOL_ENABLED
invoke TxtLstFalseTrue,[esi].style,addr EnabAll
.elseif eax==PRP_BOOL_VISIBLE
invoke TxtLstFalseTrue,[esi].style,addr VisiAll
.elseif eax==PRP_BOOL_DEFAULT
invoke TxtLstFalseTrue,[esi].style,addr DefaBtn
.elseif eax==PRP_BOOL_AUTO
.if nType==5
invoke TxtLstFalseTrue,[esi].style,addr AutoChk
.elseif nType==6
invoke TxtLstFalseTrue,[esi].style,addr AutoRbt
.elseif nType==16
invoke TxtLstFalseTrue,[esi].style,addr AutoSpn
.elseif nType==18 || nType==19
invoke TxtLstFalseTrue,[esi].style,addr AutoTbr
.elseif nType==27
invoke TxtLstFalseTrue,[esi].style,addr AutoAni
.endif
.elseif eax==PRP_BOOL_MNEMONIC
invoke TxtLstFalseTrue,[esi].style,addr MnemStc
.elseif eax==PRP_BOOL_WORDWRAP
invoke TxtLstFalseTrue,[esi].style,addr WordStc
.elseif eax==PRP_BOOL_MULTI
.if nType==1 || nType==22
invoke TxtLstFalseTrue,[esi].style,addr MultEdt
.elseif nType==8
invoke TxtLstFalseTrue,[esi].style,addr MultLst
.elseif nType==11
invoke TxtLstFalseTrue,[esi].style,addr MultTab
.elseif nType==21
invoke TxtLstFalseTrue,[esi].style,addr MultMvi
.endif
.elseif eax==PRP_BOOL_LOCK
invoke TxtLstFalseTrue,[esi].style,addr LockEdt
.elseif eax==PRP_BOOL_CHILD
invoke TxtLstFalseTrue,[esi].style,addr ChilAll
.elseif eax==PRP_BOOL_SIZE
.if nType==0
invoke TxtLstFalseTrue,[esi].style,addr SizeDlg
.elseif nType==19
invoke TxtLstFalseTrue,[esi].style,addr SizeSbr
.endif
.elseif eax==PRP_BOOL_TABSTOP
invoke TxtLstFalseTrue,[esi].style,addr TabSAll
.elseif eax==PRP_BOOL_NOTIFY
.if nType==2 || nType==17 || nType==25
invoke TxtLstFalseTrue,[esi].style,addr NotiStc
.elseif nType==4 || nType==5 || nType==6
invoke TxtLstFalseTrue,[esi].style,addr NotiBtn
.elseif nType==8
invoke TxtLstFalseTrue,[esi].style,addr NotiLst
.endif
.elseif eax==PRP_BOOL_WANTCR
invoke TxtLstFalseTrue,[esi].style,addr WantEdt
.elseif eax==PRP_BOOL_SORT
.if nType==7
invoke TxtLstFalseTrue,[esi].style,addr SortCbo
.elseif nType==8
invoke TxtLstFalseTrue,[esi].style,addr SortLst
.endif
.elseif eax==PRP_BOOL_FLAT
invoke TxtLstFalseTrue,[esi].style,addr FlatTbr
.elseif eax==PRP_BOOL_GROUP
invoke TxtLstFalseTrue,[esi].style,addr GrouAll
.elseif eax==PRP_BOOL_ICON
; invoke TxtLstFalseTrue,[esi].style,addr IconBtn
.elseif eax==PRP_BOOL_USETAB
invoke TxtLstFalseTrue,[esi].style,addr UseTLst
.elseif eax==PRP_BOOL_SETBUDDY
invoke TxtLstFalseTrue,[esi].style,addr SetBUdn
.elseif eax==PRP_BOOL_HIDE
.if nType==1 || nType==22
invoke TxtLstFalseTrue,[esi].style,addr HideEdt
.elseif nType==13
invoke TxtLstFalseTrue,[esi].style,addr HideTrv
.elseif nType==14
invoke TxtLstFalseTrue,[esi].style,addr HideLsv
.endif
.elseif eax==PRP_BOOL_TOPMOST
invoke TxtLstFalseTrue,[esi].exstyle,addr TopMost
.elseif eax==PRP_BOOL_INTEGRAL
.if nType==7
invoke TxtLstFalseTrue,[esi].style,addr IntHtCbo
.elseif nType==8
invoke TxtLstFalseTrue,[esi].style,addr IntHtLst
.endif
.elseif eax==PRP_BOOL_BUTTON
.if nType==11
invoke TxtLstFalseTrue,[esi].style,addr ButtTab
.elseif nType==13
invoke TxtLstFalseTrue,[esi].style,addr ButtTrv
.elseif nType==32
invoke TxtLstFalseTrue,[esi].style,addr ButtHdr
.endif
.elseif eax==PRP_BOOL_POPUP
invoke TxtLstFalseTrue,[esi].style,addr PopUAll
.elseif eax==PRP_BOOL_OWNERDRAW
invoke TxtLstFalseTrue,[esi].style,addr OwneLsv
.elseif eax==PRP_BOOL_TRANSP
invoke TxtLstFalseTrue,[esi].style,addr TranAni
.elseif eax==PRP_BOOL_TIME
invoke TxtLstFalseTrue,[esi].style,addr TimeAni
.elseif eax==PRP_BOOL_WEEK
invoke TxtLstFalseTrue,[esi].style,addr WeekMvi
.elseif eax==PRP_BOOL_TOOLTIP
.if nType==11
invoke TxtLstFalseTrue,[esi].style,addr ToolTab
.else
invoke TxtLstFalseTrue,[esi].style,addr ToolTbr
.endif
.elseif eax==PRP_BOOL_WRAP
invoke TxtLstFalseTrue,[esi].style,addr WrapTbr
.elseif eax==PRP_BOOL_DIVIDER
invoke TxtLstFalseTrue,[esi].style,addr DiviTbr
.elseif eax==PRP_BOOL_DRAGDROP
invoke TxtLstFalseTrue,[esi].style,addr DragHdr
.elseif eax==PRP_BOOL_SMOOTH
invoke TxtLstFalseTrue,[esi].style,addr SmooPgb
.elseif eax==PRP_MULTI_CLIP
invoke TxtLstMulti,[esi].style,[esi].exstyle,addr ClipAll
.elseif eax==PRP_MULTI_SCROLL
invoke TxtLstMulti,[esi].style,[esi].exstyle,addr ScroAll
.elseif eax==PRP_MULTI_ALIGN
.if nType==1
invoke TxtLstMulti,[esi].style,[esi].exstyle,addr AligEdt
.elseif nType==2
invoke TxtLstMulti,[esi].style,[esi].exstyle,addr AligStc
.elseif nType==4
invoke TxtLstMulti,[esi].style,[esi].exstyle,addr AligBtn
.elseif nType==5 || nType==6
invoke TxtLstMulti,[esi].style,[esi].exstyle,addr AligChk
.elseif nType==11
invoke TxtLstMulti,[esi].style,[esi].exstyle,addr AligTab
.elseif nType==14
invoke TxtLstMulti,[esi].style,[esi].exstyle,addr AligLsv
.elseif nType==16
invoke TxtLstMulti,[esi].style,[esi].exstyle,addr AligSpn
.elseif nType==17
invoke TxtLstMulti,[esi].style,[esi].exstyle,addr AligIco
.elseif nType==18 || nType==19
invoke TxtLstMulti,[esi].style,[esi].exstyle,addr AligTbr
.elseif nType==27
invoke TxtLstMulti,[esi].style,[esi].exstyle,addr AligAni
.endif
.elseif eax==PRP_MULTI_AUTOSCROLL
invoke TxtLstMulti,[esi].style,[esi].exstyle,addr AutoEdt
.elseif eax==PRP_MULTI_FORMAT
invoke TxtLstMulti,[esi].style,[esi].exstyle,addr FormDtp
.elseif eax==305
invoke TxtLstMulti,[esi].style,[esi].exstyle,addr StarDlg
.elseif eax==306
.if nType==12
invoke TxtLstMulti,[esi].style,[esi].exstyle,addr OriePgb
.elseif nType==16
invoke TxtLstMulti,[esi].style,[esi].exstyle,addr OrieUdn
.endif
.elseif eax==307
invoke TxtLstMulti,[esi].style,[esi].exstyle,addr SortLsv
.elseif eax==308
invoke TxtLstMulti,[esi].style,[esi].exstyle,addr OwneCbo
.elseif eax==400
mov eax,nType
.if eax==0
invoke TxtLstMulti,[esi].style,[esi].exstyle,addr BordDlg
.elseif eax==2 || eax==17 || eax==25
invoke TxtLstMulti,[esi].style,[esi].exstyle,addr BordStc
.elseif eax==3 || eax==4
invoke TxtLstMulti,[esi].style,[esi].exstyle,addr BordBtn
.else
invoke TxtLstMulti,[esi].style,[esi].exstyle,addr BordAll
.endif
.elseif eax==401
mov eax,nType
.if eax==1
invoke TxtLstMulti,[esi].style,[esi].exstyle,addr TypeEdt
.elseif eax==4
invoke TxtLstMulti,[esi].style,[esi].exstyle,addr TypeBtn
.elseif eax==7 || eax==24
invoke TxtLstMulti,[esi].style,[esi].exstyle,addr TypeCbo
.elseif eax==13
invoke TxtLstMulti,[esi].style,[esi].exstyle,addr TypeTrv
.elseif eax==14
invoke TxtLstMulti,[esi].style,[esi].exstyle,addr TypeLsv
.elseif eax==17
invoke TxtLstMulti,[esi].style,[esi].exstyle,addr TypeImg
.elseif eax==20
invoke TxtLstMulti,[esi].style,[esi].exstyle,addr TypeDtp
.elseif eax==25
invoke TxtLstMulti,[esi].style,[esi].exstyle,addr TypeStc
.endif
.elseif eax==1002
;Dialog Menu
invoke SendMessage,hPrpLstDlgCld,LB_RESETCONTENT,0,0
invoke GetWindowLong,hPrj,0
mov edi,eax
.while [edi].PROJECT.hmem
.if [edi].PROJECT.ntype==TPE_MENU
mov edx,[edi].PROJECT.hmem
.if [edx].MNUHEAD.menuname
lea edx,[edx].MNUHEAD.menuname
.else
invoke ResEdBinToDec,[edx].MNUHEAD.menuid,addr buffer
lea edx,buffer
.endif
invoke SendMessage,hPrpLstDlgCld,LB_ADDSTRING,0,edx
.endif
lea edi,[edi+sizeof PROJECT]
.endw
.elseif eax==1005
;Image
invoke SendMessage,hPrpLstDlgCld,LB_RESETCONTENT,0,0
invoke GetWindowLong,hPrj,0
mov edi,eax
.while [edi].PROJECT.hmem
.if [edi].PROJECT.ntype==TPE_RESOURCE
mov edx,[edi].PROJECT.hmem
.while [edx].RESOURCEMEM.szname || [edx].RESOURCEMEM.value
mov eax,[esi].DIALOG.style
and eax,SS_TYPEMASK
.if eax==SS_BITMAP
mov eax,0
.elseif eax==SS_ICON
mov eax,2
.endif
.if eax==[edx].RESOURCEMEM.ntype
push edx
.if [edx].RESOURCEMEM.szname
lea edx,[edx].RESOURCEMEM.szname
.else
mov buffer,'#'
invoke ResEdBinToDec,[edx].RESOURCEMEM.value,addr buffer[1]
lea edx,buffer
.endif
invoke SendMessage,hPrpLstDlgCld,LB_ADDSTRING,0,edx
pop edx
.endif
lea edx,[edx+sizeof RESOURCEMEM]
.endw
.endif
lea edi,[edi+sizeof PROJECT]
.endw
.elseif eax==1006
;Avi
invoke SendMessage,hPrpLstDlgCld,LB_RESETCONTENT,0,0
invoke GetWindowLong,hPrj,0
mov edi,eax
.while [edi].PROJECT.hmem
.if [edi].PROJECT.ntype==TPE_RESOURCE
mov edx,[edi].PROJECT.hmem
.while [edx].RESOURCEMEM.szname || [edx].RESOURCEMEM.value
.if [edx].RESOURCEMEM.ntype==3
push edx
.if [edx].RESOURCEMEM.szname
lea edx,[edx].RESOURCEMEM.szname
.else
mov buffer,'#'
invoke ResEdBinToDec,[edx].RESOURCEMEM.value,addr buffer[1]
lea edx,buffer
.endif
invoke SendMessage,hPrpLstDlgCld,LB_ADDSTRING,0,edx
pop edx
.endif
lea edx,[edx+sizeof RESOURCEMEM]
.endw
.endif
lea edi,[edi+sizeof PROJECT]
.endw
.elseif eax==1007
;Language
.elseif eax>65535
;Custom control
mov edx,[eax+4]
.if dword ptr [eax]==1
invoke TxtLstFalseTrue,[esi].style,edx
.elseif dword ptr [eax]==2
invoke TxtLstFalseTrue,[esi].exstyle,edx
.elseif dword ptr [eax]==3
invoke TxtLstMulti,[esi].style,[esi].exstyle,edx
.endif
.endif
assume esi:nothing
ret
PropTxtLst endp
SetTxtLstPos proc lpRect:DWORD
LOCAL rect:RECT
LOCAL lbht:DWORD
LOCAL ht:DWORD
invoke GetClientRect,hPrpLstDlg,addr rect
mov eax,rect.bottom
mov ht,eax
invoke CopyRect,addr rect,lpRect
invoke SendMessage,hPrpLstDlgCld,LB_GETITEMHEIGHT,0,0
push eax
invoke SendMessage,hPrpLstDlgCld,LB_GETCOUNT,0,0
.if eax>8
mov eax,8
.endif
pop edx
mul edx
add eax,2
mov lbht,eax
add eax,rect.top
.if eax>ht
mov eax,lbht
inc eax
add eax,lbHt
sub rect.top,eax
.endif
invoke SetWindowPos,hPrpLstDlgCld,HWND_TOP,rect.left,rect.top,rect.right,lbht,0
invoke ShowWindow,hPrpLstDlgCld,SW_SHOWNOACTIVATE
ret
SetTxtLstPos endp
PropEditChkVal proc uses esi,lpTxt:DWORD,nTpe:DWORD,lpfErr:DWORD
LOCAL buffer[16]:BYTE
LOCAL val:DWORD
mov eax,lpfErr
mov dword ptr [eax],FALSE
invoke ResEdDecToBin,lpTxt
mov val,eax
invoke ResEdBinToDec,val,addr buffer
invoke lstrcmp,lpTxt,addr buffer
.if eax
mov eax,lpfErr
mov dword ptr [eax],TRUE
invoke MessageBox,hPrp,addr szPropErr,addr szAppName,MB_OK or MB_ICONERROR
.endif
mov eax,val
ret
PropEditChkVal endp
PropEditUpdList proc uses esi edi,lpPtr:DWORD
LOCAL nInx:DWORD
LOCAL buffer[512]:BYTE
LOCAL buffer1[256]:BYTE
LOCAL hCtl:DWORD
LOCAL lpTxt:DWORD
LOCAL fErr:DWORD
LOCAL lbid:DWORD
LOCAL val:DWORD
mov fErr,FALSE
invoke SendMessage,hPrpLstDlg,LB_GETCURSEL,0,0
.if eax!=LB_ERR
mov nInx,eax
invoke SendMessage,hPrpLstDlg,LB_SETCURSEL,-1,0
invoke ShowWindow,hPrpEdtDlgCld,SW_HIDE
invoke ShowWindow,hPrpBtnDlgCld,SW_HIDE
invoke ShowWindow,hPrpLstDlgCld,SW_HIDE
;Get text
invoke SendMessage,hPrpLstDlg,LB_GETTEXT,nInx,addr buffer
invoke GetWindowText,hPrpEdtDlgCld,addr buffer1,sizeof buffer1
;Find TAB char
lea esi,buffer
@@:
mov al,[esi]
inc esi
cmp al,09h
jne @b
mov lpTxt,esi
;Text changed ?
invoke lstrcmp,lpTxt,addr buffer1
.if eax
;Get controls hwnd
invoke GetWindowLong,hPrpLstDlg,GWL_USERDATA
mov hCtl,eax
;and ptr data
invoke GetWindowLong,hCtl,GWL_USERDATA
mov esi,eax
assume esi:ptr DIALOG
;Get type
invoke SendMessage,hPrpLstDlg,LB_GETITEMDATA,nInx,0
mov lbid,eax
;Pos, Size or ID
.if eax>=PRP_NUM_ID && eax<=PRP_NUM_TAB
;Test valid num
invoke PropEditChkVal,addr buffer1,lbid,addr fErr
mov val,eax
.endif
.if !fErr
;What is changed
mov eax,dword ptr buffer
.if eax=='maN('
invoke lstrcpy,addr [esi].idname,addr buffer1
.if ![esi].ntype
invoke GetWindowLong,hDEd,DEWM_PROJECT
mov edx,eax
push edx
invoke GetProjectItemName,edx,addr buffer1
pop edx
invoke SetProjectItemName,edx,addr buffer1
.endif
.elseif eax==')DI('
push val
pop [esi].id
.if ![esi].ntype
invoke GetWindowLong,hDEd,DEWM_PROJECT
mov edx,eax
push edx
invoke GetProjectItemName,edx,addr buffer1
pop edx
invoke SetProjectItemName,edx,addr buffer1
.endif
.elseif eax=='tfeL'
push val
pop [esi].x
.elseif eax==' poT'
push val
pop [esi].y
.elseif eax=='tdiW'
push val
pop [esi].ccx
.elseif eax=='gieH'
push val
pop [esi].ccy
.elseif eax=='atS('
sub esi,sizeof DLGHEAD
push val
pop (DLGHEAD ptr [esi]).ctlid
add esi,sizeof DLGHEAD
.elseif eax=='IbaT'
invoke SetNewTab,hCtl,val
.elseif eax=='tpaC'
invoke lstrcpy,addr [esi].caption,addr buffer1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -