DialogBoxParamA как создать текст или картинку в нем..

Тема в разделе "WASM.BEGINNERS", создана пользователем asm0day01, 8 май 2022.

  1. asm0day01

    asm0day01 Member

    Публикаций:
    0
    Регистрация:
    7 янв 2020
    Сообщения:
    132
    собственно сабж
    --- Сообщение объединено, 8 май 2022 ---
    разобрался
     

    Вложения:

    • 5.zip
      Размер файла:
      1,8 КБ
      Просмотров:
      130
  2. asm0day01

    asm0day01 Member

    Публикаций:
    0
    Регистрация:
    7 янв 2020
    Сообщения:
    132
    как запилить картинку в dialbox?
     
  3. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.793
    Размер картинки? Размер DialBox'a?
     
  4. asm0day01

    asm0day01 Member

    Публикаций:
    0
    Регистрация:
    7 янв 2020
    Сообщения:
    132
    любое то и другое )))
     
  5. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.793
  6. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.793
    asm0day01,
    ну и как? "Запилил" картинку в dialbox? Похоже, что нет. . .
     
  7. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.793
    asm0day01, :negative:

    вариант #1


    Сохраняем BMP- или JPG-файл в формате ICO-файла, допустим 256x256, в каком-нибудь спец-редакторе
    asm-файл
    Код (ASM):
    1. ; GUI #
    2. include win64a.inc
    3. ID_TXT equ 100
    4. IDC_DIALOG equ 200
    5. IDC_ICON1 equ 500
    6. IDC_IMG1 equ 104
    7. .code
    8. WinMain proc dummy:qword
    9.      invoke LoadImage, IMAGE_BASE, IDC_ICON1, IMAGE_ICON, 256, 256, LR_DEFAULTCOLOR
    10.      invoke DialogBoxParam,IMAGE_BASE,IDC_DIALOG,HWND_DESKTOP,qword ptr (offset DialogProc),eax
    11.      invoke RtlExitUserProcess,NULL
    12. WinMain endp
    13. DialogProc proc hWnddlg:QWORD,uMsg:QWORD,wParam:QWORD,lParam:QWORD
    14.      mov lParam,r9
    15.      cmp edx,WM_CLOSE
    16.      je wmCLOSE
    17.      cmp edx,WM_INITDIALOG
    18.      je wmINITDIALOG
    19.      xor eax,eax
    20.      jmp exit0
    21. wmINITDIALOG: invoke GetDlgItem,,IDC_IMG1
    22.      invoke SendMessage,eax,STM_SETIMAGE,IMAGE_ICON,lParam
    23.      jmp wmBYE
    24. wmCLOSE:invoke EndDialog,,0
    25. wmBYE:  mov eax,TRUE
    26. exit0: leave
    27.      retn
    28. DialogProc endp
    29. end
    ресурсы
    Код (C):
    1.  
    2. #include "resource.h"
    3. #define IDC_DIALOG 200
    4. #define IDC_ICON1 500
    5. #define IDC_IMG1 104
    6. IDC_ICON1 ICON "icon1.ico"
    7. IDC_DIALOG DIALOG 0, 0, 140, 120
    8. STYLE 0x0004|DS_CENTER|WS_CAPTION|WS_MINIMIZEBOX|WS_SYSMENU|WS_VISIBLE| WS_OVERLAPPED|DS_MODALFRAME|DS_3DLOOK
    9. CAPTION "Вывод иконки на DialBox"
    10. BEGIN
    11.     CONTROL "",IDC_IMG1,"Static",WS_CHILDWINDOW|WS_VISIBLE|SS_ICON,5,0,128,128
    12. END
    результат
    03.jpg
    Просто и быстро! :smoke: В аттаче, ico-/asm-/rc-/exe-файлы
     

    Вложения:

    • 00.zip
      Размер файла:
      212,8 КБ
      Просмотров:
      112
    Последнее редактирование: 15 май 2022
    Aiks нравится это.
  8. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.793

    вариант #2


    asm-файл
    Код (ASM):
    1. ; GUI #
    2. include win64a.inc
    3. IDC_DIALOG equ 200
    4. IDC_BMP1 equ 500
    5. IDC_IMG1 equ 104
    6. .code
    7. WinMain proc dummy:qword
    8.  
    9.        invoke LoadImage,IMAGE_BASE,IDC_BMP1,IMAGE_BITMAP,562,383,LR_DEFAULTCOLOR
    10.        invoke DialogBoxParam,IMAGE_BASE,IDC_DIALOG,HWND_DESKTOP,qword ptr (offset DialogProc),eax
    11.        invoke RtlExitUserProcess,NULL
    12. WinMain endp
    13. DialogProc proc hWnddlg:QWORD,uMsg:QWORD,wParam:QWORD,lParam:QWORD
    14.        mov lParam,r9
    15.  
    16.        cmp edx,WM_CLOSE
    17.        je wmCLOSE
    18.        cmp edx,WM_INITDIALOG
    19.        je wmINITDIALOG
    20.        xor eax,eax
    21.        jmp exit0
    22. wmINITDIALOG:invoke GetDlgItem,,IDC_IMG1
    23.        invoke SendMessage,eax,STM_SETIMAGE,IMAGE_BITMAP,lParam
    24.        jmp wmBYE
    25. wmCLOSE:invoke EndDialog,,0
    26. wmBYE:  mov eax,TRUE
    27. exit0:       leave
    28. retn
    29. DialogProc endp
    30. end
    ресурсы
    Код (C):
    1. #include "resource.h"
    2. #define IDC_DIALOG 200
    3. #define IDC_BMP1 500
    4. #define IDC_IMG1 104
    5. IDC_BMP1 BITMAP "47.bmp"
    6. IDC_DIALOG DIALOG 0, 0, 291, 195
    7. STYLE 0x0004|DS_CENTER|WS_CAPTION|WS_MINIMIZEBOX|WS_SYSMENU|WS_VISIBLE|WS_OVERLAPPED|DS_MODALFRAME|DS_3DLOOK
    8. CAPTION "Вывод BMP на DialBox"
    9. BEGIN
    10.     CONTROL "",IDC_IMG1,"Static",WS_CHILDWINDOW|WS_VISIBLE|SS_BITMAP,5,0,562,383
    11. END
    результат
    01.jpg
    В аттаче, bmp-/asm-/rc-/exe-файлы
     

    Вложения:

    • 01.zip
      Размер файла:
      1,1 МБ
      Просмотров:
      135
    Aiks нравится это.
  9. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.793

    вариант #3


    asm-файл
    Код (ASM):
    1. ; GUI #
    2. include win64a.inc
    3. IDD_DLG1 equ 100
    4. IDC_IMG1 equ 102
    5. .code
    6. WinMain proc
    7. local pBmp  :QWORD
    8. local hBmp  :QWORD
    9. ; initialise GDIPlus
    10.        invoke GdiplusStartup,qword ptr (offset graphics),qword ptr (offset gdii),0
    11.        invoke GdipCreateBitmapFromFile,qword ptr (offset FileNameU),ADDR pBmp   ; create a GDI+ bitmap
    12.        invoke GdipCreateHBITMAPFromBitmap,pBmp,ADDR hBmp,0 ; create normal bitmap handle from it
    13.        invoke GdipDisposeImage,pBmp                        ; remove the GDI+ bitmap
    14.        invoke DialogBoxParam,IMAGE_BASE,IDD_DLG1,0,qword ptr (offset main),hBmp
    15. ;    GdiPlus cleanup
    16.        invoke GdiplusShutdown,graphics        ; cleanup on exit
    17.        invoke RtlExitUserProcess,NULL
    18. WinMain endp
    19. ;-------------------------------------------------
    20. main proc hWin:QWORD,uMsg:QWORD,wParam:QWORD,lParam:QWORD
    21.  
    22.        mov lParam,r9
    23.        cmp edx,WM_INITDIALOG
    24.        je wmINITDIALOG
    25.        cmp edx,WM_CLOSE
    26.        je wmCLOSE
    27.        xor eax,eax
    28.        jmp wmBYE
    29. wmINITDIALOG:invoke GetDlgItem,,IDC_IMG1
    30.        invoke SendMessage,eax,STM_SETIMAGE,IMAGE_BITMAP,lParam
    31.        jmp wmBYE
    32. wmCLOSE:invoke EndDialog,,0         ; exit from system menu
    33. wmBYE: leave
    34.        retn
    35. main endp
    36. ;------------------------------------------------------
    37. gdii GdiplusStartupInput <1,0,0,0>
    38. graphics dq ?
    39. FileNameU: du <90.jpg>
    40. end
    ресурсы
    Код (C):
    1. #include "resource.h"
    2. #define IDD_DLG1 100
    3. #define IDC_IMG1 102
    4. #define IMAGE1 20
    5. IDD_DLG1 DIALOGEX 10,10,485,300
    6. CAPTION "Вывод JPG на DialBox"
    7. FONT 8,"MS Sans Serif",0,0,0
    8. STYLE 0x0004|DS_CENTER|WS_CAPTION|WS_MINIMIZEBOX|WS_SYSMENU| WS_VISIBLE|WS_OVERLAPPED|DS_MODALFRAME|DS_3DLOOK
    9. BEGIN
    10.   CONTROL "",IDC_IMG1,"Static",WS_CHILDWINDOW|WS_VISIBLE|SS_BITMAP,0,0,717,479
    11. END
    результат
    02.jpg
    В аттаче, jpg-/asm-/rc-/exe-файлы
     

    Вложения:

    • 02.zip
      Размер файла:
      182,5 КБ
      Просмотров:
      127
    Aiks и Vism нравится это.