📄 toolbuild.asm
字号:
db ' INVOKE GetClientRect, hWnd, addr rect ; Rectangle of main window',0dh,0ah
db ' mov eax, rect.right',0dh,0ah
db ' mov WWth, eax',0dh,0ah
db ' .if TopOn || BottomOn',0dh,0ah
db ' inc eax',0dh,0ah
db ' mov TBWth, eax',0dh,0ah
db ' .endif',0dh,0ah
db ' mov eax, rect.bottom',0dh,0ah
db ' mov WHgt, eax',0dh,0ah
db ' INVOKE GetWindowRect, hWndTool, addr rect ; Rectangle of toolbar',0dh,0ah
db ' mov eax, rect.bottom',0dh,0ah
db ' sub eax, rect.top',0dh,0ah
db ' mov TBHgt, eax',0dh,0ah
db ' .if LeftOn || RightOn',0dh,0ah
db ' mov eax, WHgt',0dh,0ah
db ' mov TBHgt, eax',0dh,0ah
db ' xor eax, eax',0dh,0ah
db ' .endif',0dh,0ah
db ' .endif',0dh,0ah
db ' push eax ; Save height of toolbar',0dh,0ah,0dh,0ah
db ' xor eax, eax ; Zero out statusbar height',0dh,0ah
db ' .if hWndStat',0dh,0ah
db ' INVOKE GetWindowRect, hWndStat, addr rect ; Rectangle of statusbar',0dh,0ah
db ' mov eax, rect.bottom',0dh,0ah
db ' sub eax, rect.top ; eax = height of statusbar',0dh,0ah
db ' .endif',0dh,0ah,0dh,0ah
db ' pop edx ; edx = height of toolbar',0dh,0ah
db ' .if BottomOn',0dh,0ah
db ' and edx, 0',0dh,0ah
db ' .endif',0dh,0ah
db ' mov ebx, lParam ; Width of new client area',0dh,0ah
db ' and ebx, 0ffffh ; ebx = width',0dh,0ah
db ' mov ecx, lParam',0dh,0ah
db ' shr ecx, 16 ; Height of new client area',0dh,0ah
db ' sub ecx, eax ; Edit window - height of statusbar',0dh,0ah
db ' sub ecx, edx ; Edit window - height of toolbar',0dh,0ah
db ' .if edx ; If toolbar',0dh,0ah
db ' sub edx, 2 ; For border',0dh,0ah
db ' add ecx, 2 ; For border',0dh,0ah
db ' .endif',0dh,0ah
db ' .if eax ; If statusbar',0dh,0ah
db ' add ecx, 2 ; For border',0dh,0ah
db ' .endif',0dh,0ah,0dh,0ah
db ' and xPos, 0',0dh,0ah
db ' .if LeftOn',0dh,0ah
db ' mov eax, TBWth',0dh,0ah
db ' mov xPos, eax',0dh,0ah
db ' sub ebx, TBWth',0dh,0ah
db ' mov TBHgt, ecx',0dh,0ah
db ' .endif',0dh,0ah
db ' .if RightOn',0dh,0ah
db ' mov xPos, 0',0dh,0ah
db ' sub ebx, TBWth',0dh,0ah
db ' mov TBHgt, ecx',0dh,0ah
db ' mov TBLeft, ebx',0dh,0ah
db ' .endif',0dh,0ah
db ' .if BottomOn',0dh,0ah
db ' sub ecx, TBHgt',0dh,0ah
db ' add ecx, 20 ; Statusbar height',0dh,0ah
db ' mov TBTop, ecx',0dh,0ah
db ' .endif',0dh,0ah, 0
szToolDock db ' .if hWndDock',0dh,0ah
db ' mov edx, 0',0dh,0ah
db ' add ecx, TBHgt',0dh,0ah
db ' sub ecx, 2',0dh,0ah
db ' .endif',0dh,0ah,0
szToolFloat1 db ' .if FloatLock',0dh,0ah
db ' mov eax, ToolW',0dh,0ah
db ' .if ToolH > eax',0dh,0ah
db ' add eax, 6',0dh,0ah
db ' mov xPos, eax',0dh,0ah
db ' sub ebx, ToolW',0dh,0ah
db ' sub ebx, 6',0dh,0ah
db ' .else',0dh,0ah
db ' mov xPos, 0',0dh,0ah
db ' add edx, ToolH',0dh,0ah
db ' add edx, 6',0dh,0ah
db ' sub ecx, ToolH',0dh,0ah
db ' sub ecx, 6',0dh,0ah
db ' .endif',0dh,0ah
db ' .endif',0dh,0ah,0
szToolSiz2 db ' INVOKE MoveWindow, hREdit, xPos, edx, ebx, ecx, TRUE',0dh,0ah
db ' INVOKE MoveWindow, hWndTool, TBLeft, TBTop, TBWth, TBHgt, TRUE',0dh,0ah,0dh,0ah,0
szSizeFloat db ';---------- [Size the Floating Toolbar] ----------',0dh,0ah
db ' .if hWndFloat && !ToolH',0dh,0ah
db ' INVOKE GetWindowRect, hWnd, addr rect',0dh,0ah
db ' add rect.left, 195',0dh,0ah
db ' add rect.top, -29',0dh,0ah
db ' mov rect.right, 94',0dh,0ah
db ' mov rect.bottom, 0',0dh,0ah
db ' mov ToolH, 1',0dh,0ah
db ' INVOKE MoveWindow, hWndFloat, rect.left, rect.top, rect.right, rect.bottom, TRUE',0dh,0ah,0dh,0ah
db ' .elseif hWndFloat && FloatLock',0dh,0ah
db ' INVOKE GetWindowRect, hREdit, addr rect',0dh,0ah
db ' mov eax, rect.left',0dh,0ah
db ' sub rect.right, eax',0dh,0ah
db ' mov eax, rect.top',0dh,0ah
db ' sub rect.bottom, eax',0dh,0ah
db ' mov ecx, ToolW',0dh,0ah
db ' .if ecx < ToolH',0dh,0ah
db ' add ecx, 6',0dh,0ah
db ' sub rect.left, ecx',0dh,0ah
db ' mov edx, rect.bottom',0dh,0ah,0dh,0ah
db ' .else',0dh,0ah
db ' mov edx, ToolH',0dh,0ah
db ' add edx, 6',0dh,0ah
db ' sub rect.top, edx',0dh,0ah
db ' mov ecx, rect.right',0dh,0ah
db ' .endif',0dh,0ah
db ' INVOKE MoveWindow, hWndFloat, rect.left, rect.top, ecx, edx, TRUE',0dh,0ah
db ' .endif',0dh,0ah,0dh,0ah,0
szSizeDock db ';---------- [Size the Docking Toolbar] ----------',0dh,0ah
db ' .if hWndDock',0dh,0ah
db ' INVOKE SendMessage, hWndTool, TB_BUTTONCOUNT, 0, 0',0dh,0ah
db ' mov Cnt, eax',0dh,0ah
db ' mov ecx, Cnt',0dh,0ah
db ' dec ecx',0dh,0ah
db ' INVOKE SendMessage, hWndTool, TB_GETITEMRECT, ecx, addr rect',0dh,0ah
db ' push rect.right',0dh,0ah
db ' pop DockW',0dh,0ah
db ' add DockW, 8',0dh,0ah
db ' push rect.bottom',0dh,0ah
db ' pop DockH',0dh,0ah
db ' add DockH, 24',0dh,0ah
db ' inc rect.right',0dh,0ah
db ' add rect.bottom, 3',0dh,0ah,0dh,0ah
db ' INVOKE MoveWindow, hWndTool, 0, -2, rect.right, rect.bottom, TRUE',0dh,0ah
db ' INVOKE GetWindowRect, hWndDock, addr rect',0dh,0ah
db ' push rect.left',0dh,0ah
db ' push rect.top',0dh,0ah
db ' INVOKE GetWindowRect, hWnd, addr rect',0dh,0ah
db ' pop edx',0dh,0ah
db ' pop ecx',0dh,0ah
db ' .if ecx == 0 || edx == 0',0dh,0ah
db ' add rect.left, 6',0dh,0ah
db ' add rect.top, 44',0dh,0ah
db ' .else',0dh,0ah
db ' mov rect.left, ecx',0dh,0ah
db ' mov rect.top, edx',0dh,0ah
db ' .endif',0dh,0ah
db ' INVOKE MoveWindow, hWndDock, rect.left, rect.top, DockW, DockH, TRUE',0dh,0ah
db ' .endif',0dh,0ah,0dh,0ah,0
szMovAct db ';---------- [MOVE Msg] ----------',0dh,0ah
db ' .elseif wMsg == WM_MOVE',0dh,0ah
db ' .if FloatLock || LockOn',0dh,0ah
db ' mov FloatLock, 1',0dh,0ah
db ' mov LockOn, 1',0dh,0ah
db ' .endif',0dh,0ah
db ' call SetSize',0dh,0ah,0dh,0ah
db ';---------- [ACTIVATEAPP Msg] ----------',0dh,0ah
db ' .elseif wMsg == WM_ACTIVATEAPP',0dh,0ah
db ' INVOKE DefWindowProc, hWnd, WM_NCACTIVATE, wParam, 0',0dh,0ah
db ' ret',0dh,0ah,0dh,0ah
db ' .elseif wMsg == WM_NCACTIVATE',0dh,0ah
db ' mov eax, TRUE',0dh,0ah
db ' ret',0dh,0ah,0dh,0ah,0
szNotify db ';---------- [Get Tooltips] ----------',0dh,0ah
db ' .elseif wMsg == WM_NOTIFY',0dh,0ah
db ' mov ebx, lParam ; Get pointer to NMHDR',0dh,0ah
db ' mov eax, (NMHDR ptr [ebx]).code',0dh,0ah
db ' .if eax == TTN_NEEDTEXT',0dh,0ah
db ' mov eax, (NMHDR ptr [ebx]).idFrom ; Resource id',0dh,0ah
db ' mov ecx, eax',0dh,0ah
db ' INVOKE LoadString, hInst, ecx, addr szBuff, lengthof szBuff',0dh,0ah
db ' mov ebx, lParam ; Get the buffer addr',0dh,0ah
db ' lea eax, szBuff',0dh,0ah
db ' mov (TOOLTIPTEXT ptr [ebx]).lpszText, eax',0dh,0ah
db ' mov eax, FALSE',0dh,0ah
db ' ret',0dh,0ah
db ' .endif',0dh,0ah,0dh,0ah,0
szOpenDock db ';---------- [Activate Docking Toolbar] ----------',0dh,0ah
db ' .if eax == NM_RDBLCLK && !hWndDock',0dh,0ah
db ' INVOKE GetWindowLong, hWndTool, GWL_STYLE',0dh,0ah
db ' mov Styles, eax',0dh,0ah
db ' .if (Styles & WS_BORDER)',0dh,0ah
db ' xor Styles, WS_BORDER',0dh,0ah
db ' .endif',0dh,0ah
db ' INVOKE SetWindowLong, hWndTool, GWL_STYLE, Styles',0dh,0ah
db ' .if FloatLock',0dh,0ah
db ' mov LockOn, 1',0dh,0ah
db ' .endif',0dh,0ah
db ' call DockToolbar',0dh,0ah
db ' INVOKE SetFocus, hWndDock',0dh,0ah
db ' jmp Ret0',0dh,0ah
db ' .endif',0dh,0ah,0dh,0ah,0
szToolCustom4 db ';---------- [Customize the Toolbar] ----------',0dh,0ah
db ' .if eax == TBN_BEGINADJUST',0dh,0ah
db ' mov eax, TRUE',0dh,0ah
db ' ret',0dh,0ah,0dh,0ah
db '; Add to Windows.inc Comctl32.dll version 5.80 or later- Removes the help button',0dh,0ah
db ' .elseif eax == TBN_FIRST-23 ;TBN_INITCUSTOMIZE',0dh,0ah
db ' mov eax, 1 ;TBNRF_HIDEHELP',0dh,0ah
db ' ret',0dh,0ah,0dh,0ah
db ' .elseif eax == TBN_QUERYINSERT',0dh,0ah
db ' mov eax, TRUE',0dh,0ah
db ' ret',0dh,0ah,0dh,0ah
db ' .elseif eax == TBN_QUERYDELETE',0dh,0ah
db ' mov eax, TRUE',0dh,0ah
db ' ret',0dh,0ah,0dh,0ah
db ' .elseif eax == TBN_GETBUTTONINFO',0dh,0ah
db ' mov eax, [ebx.TBNOTIFY].iItem ; Item num',0dh,0ah
db ' .if eax <= NNNN ; Num of images',0dh,0ah
db ' push ebx',0dh,0ah
db ' push eax',0dh,0ah
db ' mov Incr, eax',0dh,0ah
db ' INVOKE SendMessage, hWndTool, TB_BUTTONCOUNT, 0, 0',0dh,0ah,0dh,0ah
db ';---------- [Find matching bitmap ID] ----------',0dh,0ah
db ' and ID, 0',0dh,0ah
db ' and Len, 0',0dh,0ah
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -