Alan
I have successfully loaded all of my bmps into a dll for my menus (one dll per menu) since windows 95 and have not had any problems. I use reshacker.
Example of menu toolbar:
**ARCH_DIMENSIONI
[_Toolbar("Dimension Tools I", _Floating, _Hide, 225,200,1)]
[_Button("Add Dimensions for Total", ARCH_ADIM, ARCH_ADIM)]ADIM
[_Button("Set Default Dimstyle", ARCH_D1, ARCH_D1)]D1
[_Button("Dimension Linear", ARCH_LIN, ARCH_LIN)]LIN
[_Button("Dimension Base", ARCH_BAS, ARCH_BAS)]BAS
[_Button("Dimension Continue", ARCH_CON, ARCH_CON)]CON
[_Button("Dimension Equal", ARCH_DEQ, ARCH_DEQ)]DEQ
[_Button("Dimension Update", ARCH_DU, ARCH_DU)]DU
[_Button("Edit", ARCH_ET, ARCH_ET)]ET
If if have multiple version of autocad on a machine, this how I load submenus:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; PROG Menu Loader ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun PlacePROGMenu (/ CNT)
(setq CNT 1)
(while (< CNT 24)
(if (menucmd (strcat "P" (itoa CNT) ".1=?"))
(setq CNT (1+ CNT))
(progn (if (> CNT 2)
(setq CNT (1- CNT))
(setq CNT 2))
(menucmd (strcat "p" (itoa CNT) "=+PROG.pop1"))
(setq CNT 25)))))
(defun c:PROG (/ ProgLoad)
(cond ((< (distof (substr (getvar "acadver") 1 4)) 16.0)
(setq ProgLoad (strcat ARCH#SUPF "V_15/PROG.mnc")))
((and (>= (distof (substr (getvar "acadver") 1 4)) 16.0)
(< (distof (substr (getvar "acadver") 1 4)) 16.2))
(setq ProgLoad (findfile (strcat ARCH#SUPF "V_16/PROG.mnc"))))
;;;
((and (>= (distof (substr (getvar "acadver") 1 4)) 16.2)
(< (distof (substr (getvar "acadver") 1 4)) 17.0))
(setq ProgLoad (findfile (strcat ARCH#SUPF "V_16/PROG.cui"))))
;;;
((and (>= (distof (substr (getvar "acadver") 1 4)) 17.0)
(< (distof (substr (getvar "acadver") 1 4)) 18.0))
(setq ProgLoad (findfile (strcat ARCH#SUPF "V_17/PROG.cui"))))
;;;
((and (>= (distof (substr (getvar "acadver") 1 4)) 18.0)
(< (distof (substr (getvar "acadver") 1 4)) 19.0))
(setq ProgLoad (findfile (strcat ARCH#SUPF "V_18/PROG.cuix")))))
(cond
((/= ProgLoad nil)
(progn (command "menuunload" "PROG" "menuload" ProgLoad)
(PlacePROGMenu)
(princ "\n*** ---------- PROG Menu Loaded ---------- ***")))
((= ProgLoad nil)
(ARCH:MsgBox2
" Arch Program : Info"
48
"
Arch Program© Alert
--------------------------------------------------------------------------------------------
PROG Program is Not Loaded!"
4)))
;;(MENUWAV)
(princ))