📄 toolbuild.asm
字号:
szEnd db 'END',0dh,0ah
db ';***** [End of resource definitions] *****',0dh,0ah,0
szToolbarMac db ';***** [Place in the Application or Include file] *****',0dh,0ah
db 'ChgBmpColor PROTO :DWORD',0dh,0ah,0dh,0ah
db ';---------- [Toolbar structure macros] ----------',0dh,0ah
db 'TBSep MACRO hTool',0dh,0ah
db ' mov tbb.iBitmap, 0',0dh,0ah
db ' mov tbb.idCommand, 0',0dh,0ah
db ' mov tbb.fsState, TBSTATE_ENABLED',0dh,0ah
db ' mov tbb.fsStyle, TBSTYLE_SEP',0dh,0ah
db ' INVOKE SendMessage, hTool, TB_ADDBUTTONS, 1, addr tbb',0dh,0ah
db ' ENDM',0dh,0ah
db 0dh,0ah
db 'TBButt MACRO hTool, BmpID, CmdID, State, Style, Text',0dh,0ah
db ' mov tbb.iBitmap, BmpID ; Button image number',0dh,0ah
db ' mov tbb.idCommand, CmdID ; Command ID number',0dh,0ah
db ' mov tbb.fsState, State',0dh,0ah
db ' mov tbb.fsStyle, Style',0dh,0ah
db ' mov tbb.dwData, 0',0dh,0ah
db ' mov tbb.iString, Text',0dh,0ah
db ' INVOKE SendMessage, hTool, TB_ADDBUTTONS, 1, addr tbb',0dh,0ah
db ' ENDM',0dh,0ah,0dh,0ah
db '.const',0dh,0ah,0
szToolbarDat1 db ';***** [Place in the Application file (.asm)] *****',0dh,0ah
db '.data',0dh,0ah
db "ToolClass db 'ToolbarWindow32',0",0dh,0ah,0
szFloatClass db "FloatTBClass db 'FloatToolbar32',0",0dh,0ah,0
szToolCustom1 db "TextC01 db 'New',0",0dh,0ah
db "TextC02 db 'Open',0",0dh,0ah
db "TextC03 db 'Save',0",0dh,0ah
db "TextC04 db 'Save All',0",0dh,0ah
db "TextC05 db 'Cut',0",0dh,0ah
db "TextC06 db 'Copy',0",0dh,0ah
db "TextC07 db 'Paste',0",0dh,0ah
db "TextC08 db 'Delete',0",0dh,0ah
db "TextC09 db 'Undo',0",0dh,0ah
db "TextC10 db 'Redo',0",0dh,0ah
db "TextC11 db 'Find',0",0dh,0ah
db "TextC12 db 'FindN',0",0dh,0ah
db "TextC13 db 'FindP',0",0dh,0ah
db "TextC14 db 'Rep',0",0dh,0ah
db "TextC15 db 'MultiI',0",0dh,0ah
db "TextC16 db 'Exit',0",0dh,0ah
db 'szTextC dd TextC01,TextC02,TextC03,TextC04,TextC05,TextC06,',0dh,0ah
db ' TextC07,TextC08,TextC09,TextC10,TextC11,TextC12,',0dh,0ah
db ' TextC13,TextC14,TextC15,TextC16',0dh,0ah,0dh,0ah
db "szSpace db ' ',0",0dh,0ah,0dh,0ah,0
szToolbarDat2 db '.data?',0dh,0ah
db 'hWndTool dd ?',0dh,0ah
db 'hImageList dd ?',0dh,0ah,0
szToolbarDatG db 'hImageListG dd ?',0dh,0ah,0
szToolbarDat3 db 'LeftOn dd ?',0dh,0ah
db 'TopOn dd ?',0dh,0ah
db 'RightOn dd ?',0dh,0ah
db 'BottomOn dd ?',0dh,0ah
db 'TBLeft dd ?',0dh,0ah
db 'TBTop dd ?',0dh,0ah
db 'TBWth dd ?',0dh,0ah
db 'TBHgt dd ?',0dh,0ah,0dh,0ah,0
szToolbarDat4 db 'hWndDock dd ?',0dh,0ah
db 'hWndFloat dd ?',0dh,0ah
db 'hWndToolF dd ?',0dh,0ah
db 'Styles dd ?',0dh,0ah
db 'DockW dd ?',0dh,0ah
db 'DockH dd ?',0dh,0ah
db 'ToolW dd ?',0dh,0ah
db 'ToolH dd ?',0dh,0ah
db 'FloatLock dd ?',0dh,0ah
db 'LockOn dd ?',0dh,0ah
db 'SysParm dd ?',0dh,0ah,0dh,0ah,0
szToolCustom2 db 'SavID dd ?',0dh,0ah
db 'szTextA db 32 dup(?)',0dh,0ah,0dh,0ah
db 'tbi TBBUTTONINFO <>',0dh,0ah,0dh,0ah,0
szWinMain db ';===================================================',0dh,0ah
db '; WinMain procedure',0dh,0ah
db ';===================================================',0dh,0ah
db 'WinMain proc uses ebx hinst:DWORD, hPrevInst, CmdLine, CmdShow',0dh,0ah
db 'LOCAL wc:WNDCLASSEX',0dh,0ah
db 'LOCAL msg:MSG',0dh,0ah,0dh,0ah
db ';---------- [Float/Dock Toolbar Class] ----------',0dh,0ah
db ' or wc.style, CS_DBLCLKS',0dh,0ah
db ' mov wc.lpfnWndProc, offset FloatWndProc',0dh,0ah
db ' mov wc.lpszClassName, offset FloatTBClass',0dh,0ah
db ' mov wc.lpszMenuName, NULL',0dh,0ah
db ' INVOKE RegisterClassEx, addr wc',0dh,0ah,0dh,0ah,0
szWinProc db ';======================================================',0dh,0ah
db '; WinProc procedure',0dh,0ah
db ';======================================================',0dh,0ah
db 'WndProc proc uses ebx hwnd:DWORD, wMsg, wParam, lParam',0dh,0ah,0dh,0ah,0
szToolbarLoc db 'LOCAL tbb:TBBUTTON',0dh,0ah
db 'LOCAL tbab:TBADDBITMAP',0dh,0ah
db 'LOCAL bSize:DWORD, hTbBmp, ID, Cnt, Len, Incr, xPos, yPos, WWth, WHgt',0dh,0ah,0
szToolCusLoc db 'LOCAL SavState:BYTE, SavStyle:BYTE',0dh,0ah,0
szToolbarWnd1 db ' .if wMsg == WM_CREATE',0dh,0ah,0dh,0ah
db ';---------- [Create the Toolbar Window] ----------',0dh,0ah
db ' INVOKE CreateWindowEx, 0, addr ToolClass, 0,\',0dh,0ah,0
szToolbarWnd2 db ' 0, -2, 1200, 26, hwnd, 0, hInst, 0',0dh,0ah
db ' mov hWndTool, eax',0dh,0ah,0dh,0ah,0
szToolbarCre1 db ';---------- [Create the ImageList] ----------',0dh,0ah
db ' INVOKE ImageList_Create, 16, 16, ILC_COLOR32, NNNN, 0',0dh,0ah
db ' mov hImageList, eax',0dh,0ah,0dh,0ah
db ';---------- [Load The Bitmaps] ----------',0dh,0ah
db ' mov ID, 701 ; Bitmap ID',0dh,0ah
db ' mov Cnt, NNNN',0dh,0ah
db ' .while (Cnt)',0dh,0ah
db ' INVOKE LoadImage, hInst, ID, IMAGE_BITMAP, 16, 16, LR_DEFAULTCOLOR',0dh,0ah
db ' INVOKE ChgBmpColor, eax',0dh,0ah
db ' mov hTbBmp, eax',0dh,0ah
db ' INVOKE ImageList_Add, hImageList, hTbBmp, NULL',0dh,0ah
db ' INVOKE DeleteObject, hTbBmp',0dh,0ah
db ' inc ID',0dh,0ah
db ' dec Cnt',0dh,0ah
db ' .endw',0dh,0ah,0dh,0ah
db ' INVOKE SendMessage, hWndTool, TB_BUTTONSTRUCTSIZE, sizeof TBBUTTON, 0',0dh,0ah
db ' INVOKE SendMessage, hWndTool, TB_SETIMAGELIST, 0, hImageList',0dh,0ah,0dh,0ah,0
szToolbarCreG db ';---------- [Create the Gray ImageList] ----------',0dh,0ah
db ' INVOKE ImageList_Create, 16, 16, ILC_COLOR32, NNNN, 0',0dh,0ah
db ' mov hImageListG, eax',0dh,0ah,0dh,0ah
db ';---------- [Load The Bitmaps] ----------',0dh,0ah
db ' mov ID, 801 ; Bitmap ID',0dh,0ah
db ' mov Cnt, NNNN',0dh,0ah
db ' .while (Cnt)',0dh,0ah
db ' INVOKE LoadImage, hInst, ID, IMAGE_BITMAP, 16, 16, LR_DEFAULTCOLOR',0dh,0ah
db ' INVOKE ChgBmpColor, eax',0dh,0ah
db ' mov hTbBmp, eax',0dh,0ah
db ' INVOKE ImageList_Add, hImageListG, hTbBmp, NULL',0dh,0ah
db ' INVOKE DeleteObject, hTbBmp',0dh,0ah
db ' inc ID',0dh,0ah
db ' dec Cnt',0dh,0ah
db ' .endw',0dh,0ah,0dh,0ah
db ' INVOKE SendMessage, hWndTool, TB_SETIMAGELIST, 0, hImageListG',0dh,0ah
db ' INVOKE SendMessage, hWndTool, TB_SETHOTIMAGELIST, 0, hImageList',0dh,0ah,0dh,0ah,0
szToolbarCre2 db ';---------- [Size the Bitmap and Button] ----------',0dh,0ah
db ' mov ecx, 16 ; loword = bitmap Width',0dh,0ah
db ' mov eax, 16 ; hiword = bitmap Height',0dh,0ah
db ' shl eax, 16',0dh,0ah
db ' mov ax, cx',0dh,0ah
db ' mov bSize, eax',0dh,0ah
db ' INVOKE SendMessage, hWndTool, TB_SETBITMAPSIZE, 0, bSize',0dh,0ah
db ' mov eax, WWWW ; loword = button Width',0dh,0ah
db ' mov ecx, HHHH ; hiword = button Height',0dh,0ah
db ' shl ecx, 16',0dh,0ah
db ' mov cx, ax',0dh,0ah
db ' INVOKE SendMessage, hWndTool, TB_SETBUTTONSIZE, 0, ecx',0dh,0ah,0dh,0ah
db ';---------- [Create the Toolbar structures] ----------',0dh,0ah,0
szToolbarFloat db ';---------- [Create the FloatToolbar] ----------',0dh,0ah
db ' INVOKE CreateWindowEx, WS_EX_TOOLWINDOW or WS_EX_WINDOWEDGE, addr FloatTBClass,',0dh,0ah
db ' 0, WS_POPUP or\',0dh,0ah
db ' WS_VISIBLE or WS_THICKFRAME, 346, 305, 31, 250,',0dh,0ah
db ' hwnd, NULL, hInst, NULL',0dh,0ah
db ' mov hWndFloat, eax',0dh,0ah,0dh,0ah
db ' INVOKE CreateWindowEx, 0, addr ToolClass, 0,',0dh,0ah
db ' WS_CHILD or WS_VISIBLE or TBSTYLE_TOOLTIPS or CCS_NOPARENTALIGN or\',0dh,0ah
db ' CCS_NORESIZE or CCS_ADJUSTABLE or TBSTYLE_FLAT or\',0dh,0ah
db ' TBSTYLE_WRAPABLE or CCS_NODIVIDER,\',0dh,0ah
db ' -1, -1, 1200, 26, hWndFloat, 0, hInst, 0',0dh,0ah
db ' mov hWndToolF, eax',0dh,0ah,0dh,0ah
db ' INVOKE SendMessage, hWndToolF, TB_BUTTONSTRUCTSIZE, sizeof TBBUTTON, 0',0dh,0ah
db ' INVOKE SendMessage, hWndToolF, TB_SETIMAGELIST, 0, hImageList',0dh,0ah,0dh,0ah
db ';---------- [Size the Bitmap and Button] ----------',0dh,0ah
db ' mov ecx, 16 ; loword = bitmap Width',0dh,0ah
db ' mov eax, 16 ; hiword = bitmap Height',0dh,0ah
db ' shl eax, 16',0dh,0ah
db ' mov ax, cx',0dh,0ah
db ' mov bSize, eax',0dh,0ah
db ' INVOKE SendMessage, hWndToolF, TB_SETBITMAPSIZE, 0, bSize',0dh,0ah
db ' mov eax, WWWW ; loword = button Width',0dh,0ah
db ' mov ecx, HHHH ; hiword = button Height',0dh,0ah
db ' shl ecx, 16',0dh,0ah
db ' mov cx, ax',0dh,0ah
db ' INVOKE SendMessage, hWndToolF, TB_SETBUTTONSIZE, 0, ecx',0dh,0ah,0dh,0ah
db ';---------- [Create the Float Toolbar structures] ----------',0dh,0ah,0
szSetDropdown db ';---------- [Set Dropdown] ----------',0dh,0ah
db ' INVOKE SendMessage, hWndTool, TB_SETEXTENDEDSTYLE, 0, TBSTYLE_EX_DRAWDDARROWS',0dh,0ah,0dh,0ah,0
szSetValues db ';---------- [Set various values] ----------',0dh,0ah
db ' mov LeftOn, LLLL',0dh,0ah
db ' mov TopOn, TTTT',0dh,0ah
db ' mov RightOn, RRRR',0dh,0ah
db ' mov BottomOn, BBBB',0dh,0ah
db ' mov TBLeft, TBLL',0dh,0ah
db ' mov TBTop, TBTT',0dh,0ah
db ' mov TBWth, TBWW',0dh,0ah
db ' mov TBHgt, TBHH',0dh,0ah,0dh,0ah,0
szToolCustom3 db ' mov tbi.cbSize, sizeof tbi',0dh,0ah,0dh,0ah,0
szRemoveParm db ';---------- [Remove effects parm] ----------',0dh,0ah
db ' INVOKE SystemParametersInfo, SPI_GETDRAGFULLWINDOWS, 0, addr SysParm, 0',0dh,0ah
db ' .if SysParm',0dh,0ah
db ' INVOKE SystemParametersInfo, SPI_SETDRAGFULLWINDOWS, 0, 0, SPIF_UPDATEINIFILE',0dh,0ah
db ' .endif',0dh,0ah,0dh,0ah,0
szToolSiz1 db ';---------- [Move and Size the Control(s)] ----------',0dh,0ah
db ' .elseif wMsg == WM_SIZE',0dh,0ah,0dh,0ah
db ';---------- [AutoSize the Toolbar Control] ----------',0dh,0ah
db ' INVOKE SendMessage, hWndTool, TB_AUTOSIZE, 0, 0',0dh,0ah
db ' INVOKE MoveWindow, hWndStat, 0, 0, 0, 0, TRUE',0dh,0ah,0dh,0ah
db ';---------- [Size the Edit Toolbar Controls] ----------',0dh,0ah
db ' xor eax, eax ; Zero out toolbar height',0dh,0ah
db ' .if hWndTool',0dh,0ah
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -