Ветеран
Сообщения: 1216
Благодарности: 486
|
Профиль
|
Отправить PM
| Цитировать
Цитата wolkow70:
Товарищи, подскажите как в
MB_USERICON подставить другую иконку, а не инсталлятора? »
|
Элементарно....
Код:
${MessageBoxEx} "путь к файлу ресурсу, где иконка" "текст надписи" "текст заголовка" "стиль сообщения" "индекс иконки" "код возврата"
читать дальше »
Код:
!include "MUI2.nsh"
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE Russian
OutFile "msgbox-setup.exe"
!ifndef MB_OK
!define MB_OK 0x00000000
!define MB_OKCANCEL 0x00000001
!define MB_ABORTRETRYIGNORE 0x00000002
!define MB_YESNOCANCEL 0x00000003
!define MB_YESNO 0x00000004
!define MB_RETRYCANCEL 0x00000005
!define MB_CANCELTRYCONTINUE 0x00000006
!define MB_ICONHAND 0x00000010
!define MB_ICONQUESTION 0x00000020
!define MB_ICONEXCLAMATION 0x00000030
!define MB_ICONASTERISK 0x00000040
!define MB_USERICON 0x00000080
!define MB_ICONWARNING ${MB_ICONEXCLAMATION}
!define MB_ICONERROR ${MB_ICONHAND}
!define MB_ICONINFORMATION ${MB_ICONASTERISK}
!define MB_ICONSTOP ${MB_ICONHAND}
!define MB_DEFBUTTON1 0x00000000
!define MB_DEFBUTTON2 0x00000100
!define MB_DEFBUTTON3 0x00000200
!define MB_DEFBUTTON4 0x00000300
!define MB_APPLMODAL 0x00000000
!define MB_SYSTEMMODAL 0x00001000
!define MB_TASKMODAL 0x00002000
!define MB_HELP 0x00004000
!define MB_NOFOCUS 0x00008000
!define MB_SETFOREGROUND 0x00010000
!define MB_DEFAULT_DESKTOP_ONLY 0x00020000
!define MB_TOPMOST 0x00040000
!define MB_RIGHT 0x00080000
!define MB_RTLREADING 0x00100000
!define IDABORT 3
!define IDCANCEL 2
!define IDCONTINUE 11
!define IDIGNORE 5
!define IDNO 7
!define IDOK 1
!define IDRETRY 4
!define IDTRYAGAIN 10
!define IDYES 6
!endif
!define MessageBoxEx "!insertmacro macro_MessageBoxIndirect"
!macro macro_MessageBoxIndirect Library lpszText lpszCaption dwStyle lpszIcon ExitCode
Push `${lpszText}`
Push `${lpszCaption}`
Push `${Library}`
Push `${dwStyle}`
Push `${lpszIcon}`
System::Store Sr1r2r3r4r5
System::Call 'kernel32::LoadLibrary(tr3)i.r0'
StrCmp $0 0 +5
System::Call '*(&l4, i$HWNDPARENT, ir0, tr5, tr4, i$2|${MB_USERICON}, ir1, i,k,i)i.r5'
System::Call 'user32::MessageBoxIndirect(ir5) i.s'
System::Call "kernel32::FreeLibrary(ir0)"
System::Free $5
StrCmp $0 0 0 +2
Push "error"
System::Store L
Pop `${ExitCode}`
!macroend
Section
${MessageBoxEx} "$SYSDIR\shell32.dll" "lpszText" "lpszCaption" "${MB_YESNOCANCEL}" "194" $1
${If} $1 == ${IDYES}
MessageBox MB_OK "Нажали кнопку `Да`"
${ElseIf} $1 == ${IDNO}
MessageBox MB_OK "Нажали кнопку `Heт`"
${ElseIf} $1 == ${IDCANCEL}
MessageBox MB_OK "Нажали кнопку `Отмена`"
${Else}
MessageBox MB_OK "$$1 = $1"
${EndIf}
SectionEnd
|
-------
Спасибо ВСЕМ за то, что тратите свое время, что бы ПОМОЧЬ МНЕ.
Последний раз редактировалось kotkovets, 07-05-2012 в 23:14.
Причина: Поправка на правильный указатель освобождения ресурсов
Отправлено: 14:55, 07-05-2012
| #2684
|