⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 toolbuild.asm

📁 用masm写的TOOBar生成器
💻 ASM
📖 第 1 页 / 共 5 页
字号:

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 + -