Пользовательские иконки из DLL - в MessageBox
Уже был макрос для этого , но можно использовать и такой вариант :
Код:
outfile MessageBoxIco_test.exe
!define MSGBOXPARAMS '(i, i, i, t, t, i, t, i, i, i) i'
!define ID_ICO 16
Section
System::Call 'Kernel32::LoadLibrary(t "Fileicons.dll") i .r1'
IntCmp $1 0 Err Err 0
System::Call '*${MSGBOXPARAMS}(40, $HWNDPARENT, r1, "Текст сообщения", " Заголовок", 0x80|0x0, i ${ID_ICO}, 0, 0, 0) .r3'
System::Call 'User32::MessageBoxIndirect(i r3) v r4'
System::Call 'Kernel32::FreeLibrary(i r1) v r4'
System::Free $3
Err:
SectionEnd
; Кнопки и надписи действий на кнопках
; 0x0 - ОК
; 0x1 - ОК Отмена
; 0x2 - Прервать Повтор Пропустить
; 0x3 - Да Нет Отмена
; 0x4 - Да Нет
; 0x5 - Повтор Отмена
; 0x6 - Отмена Повторить Продолжить
; 0x4000 - ОК Справка
Fileicons.dll - это в примере, библиотека из TotalCommander_a. Ессно можно использовать любую DLL. ( Не забываем организовать путь к библиотеке. Из $PLUGINSDIR или как угодно )
Номер ID_ICO необходимой иконки из DLL - смотрим в любом редакторе ресурсов.