Menus e DLLs

Criar menus e barras de ferramentas? simples.. ruim é criar os bitmaps dos botões, não é mesmo?
Mas pior que isso, é ver aquele monte de bitmaps na pasta do seu programa, totalmente desorganizados, então que tal colocar todos eles numa DLL?
É, com ele mesmo o ResHacker, se você já o tem, deve ter a tal dll vazia, mas se não a tem, baixe daqui.
Tá, você já viu um tutorial para fazer a dll, mas tenho certeza de que ele te mandava incluir um a um os bitmaps na dll, certo? Que tal uma rotininha básica pra listar os bitmaps de uma pasta qualquer e criar a dll automaticamente? ai vai: ver a rotina!!
;rotina para pegar uma pasta do HD:
(defun BrowseForFolder ( text / ret shell )
  (
setq shell (vlax-get-or-create-object 
                 "shell.application"))
  (
if (setq ret (vlax-invoke shell "BrowseForFolder"  0 text 1))
      (
setq ret (vlax-get (vlax-get ret "Self") "Path")))
  (
vlax-release-object shell)
  ret)

(
defun c:makedllres (/ dir bat tmp dll scr dll_vazio reshacker)
  (
setq
;configure aqui o caminho onde está a dll vazia:
    dll_vazio "f:/resource kit hacker/dllvazio.dll"
;configure aqui o caminho do reshacker.exe:
    reshacker "f:/resource kit hacker/reshacker.exe")
  (if (setq dll   (getfiled "Criar Dll" "" "dll" 1))
    (
if (setq dir (browseforfolder "indique a pasta dos resources"))
    (
progn
      (setq dll   (vl-string-translate "\\" "/" dll)
            src   (vl-filename-mktemp "" dir ".scr")
            bat   (vl-filename-mktemp "" dir ".bat")
            tmp   (open src "w")
            dir   (vl-string-translate "\\" "/" dir))
      (
vl-file-delete dll)
      (
vl-file-copy dll_vazio dll)
      (
write-line
        (strcat "[FILENAMES]\nExe=\"" dll "\"\nSaveAs=\"" dll "\"\n\n[COMMANDS]")
        tmp)
      
      (
foreach x  (vl-directory-files dir "*.bmp" 1)
        (
write-line
          (strcat "-addoverwrite \"" dir "/" x "\", bitmap, " (vl-filename-base x) ",")
          tmp))
      (
close tmp)
      (
setq tmp (open bat "w"))
      (
write-line
        (strcat "\"" reshacker "\" -script \"" src "\"\ndel \""src "\"\ndel \"" bat "\"\n")
        tmp)
      (
close tmp)
      (
startapp bat))))
  (
princ))


Pegou a rotina? então salve ela em algum lugar, mas tome o cuidado de alterar as linhas onde estão configurados os caminhos para a dll vazia e para o reshacker

Nenhum comentário:

Postar um comentário