Цитата K.A.V.:
С такими хотелками проще бросить NSIS »
|
Эээээ.... А чего я такого несбыточного спросил ?
Цитата K.A.V.:
А с таймером ты уже сделал такое? »
|
Ну да... Только чуется мне , что и без таймера можно обойтись...
![Smile](images/smilies/new/smile.gif)
Там , где таймер, всегда какие то глюки...
Цитата kotkovets:
3 тонны кода, вагон и тележка с надписью: поехали »
|
Да вроде и не так много кода... Но хотелось бы поменее, потому и поинтересовался как бы сделать попроще. Может макросом каким, или вообще по иному организовать идею...
Вот мой рабочий тестово- корявый
![Smile](images/smilies/new/smile.gif)
код (для одной кнопки-изображения) :
Код:
![Выделить весь код](images/misc/selectcode.png)
!include "MUI2.nsh"
Page custom nsDialogsPage
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "Russian"
OutFile "click_pict.exe"
Var dlg
Var Click
Var IMAGE
Var IMAGECTL
Var IMAGE2
Var IMAGECTL2
Function OnTimer
System::Alloc 16
Pop $0
System::Call USER32::GetCursorPos(ir0)
System::Call *$0(i.r1,i.r2)
System::Free $0
System::Call USER32::WindowFromPoint(ir1,ir2)i.r1
${If} $1 = $Click
ShowWindow $IMAGECTL 1
ShowWindow $IMAGECTL2 0
System::Call USER32::LoadCursor(i,i32649)i.s
System::Call USER32::SetCursor(is)
${Else}
ShowWindow $IMAGECTL2 1
ShowWindow $IMAGECTL 0
${EndIf}
System::Call user32::RedrawWindow(i$Click,i0,i0,i0x0105)
FunctionEnd
Function nsDialogsPage
nsDialogs::Create 1018
Pop $dlg
nsDialogs::CreateControl STATIC ${WS_VISIBLE}|${WS_CHILD}|${WS_CLIPSIBLINGS}|${SS_BITMAP} 0 140u 20u 48u 32u ""
Pop $IMAGECTL
StrCpy $6 "$EXEDIR\a.bmp"
System::Call 'user32::LoadImage(i 0, t r6, i ${IMAGE_BITMAP}, i 0, i 0, i ${LR_LOADFROMFILE}) i.s'
Pop $IMAGE
SendMessage $IMAGECTL ${STM_SETIMAGE} ${IMAGE_BITMAP} $IMAGE
ShowWindow $IMAGECTL 0
nsDialogs::CreateControl STATIC ${WS_VISIBLE}|${WS_CHILD}|${WS_CLIPSIBLINGS}|${SS_BITMAP} 0 140u 20u 48u 32u ""
Pop $IMAGECTL2
StrCpy $7 "$EXEDIR\b.bmp"
System::Call 'user32::LoadImage(i 0, t r7, i ${IMAGE_BITMAP}, i 0, i 0, i ${LR_LOADFROMFILE}) i.s'
Pop $IMAGE2
SendMessage $IMAGECTL2 ${STM_SETIMAGE} ${IMAGE_BITMAP} $IMAGE2
ShowWindow $IMAGECTL2 1
${NSD_CreateLabel} 135u 22u 40u 20u ""
Pop $Click
${NSD_OnClick} $Click OnClick
${NSD_CreateTimer} OnTimer 50
System::Call 'gdi32:DeleteObject(i $IMAGE)'
System::Call 'gdi32:DeleteObject(i $IMAGE2)'
nsDialogs::Show
FunctionEnd
Function OnClick
MessageBox MB_OK "Кликнули на изображении"
FunctionEnd
Section
SectionEnd
Как бы его причесать и упростить ?
ps Для чего это всё надо ? А чтобы в ногу со временем идти и для разнообразия
![Smile](images/smilies/new/smile.gif)
. Чтобы делать страницы, оформленные в стиле Metro интерфейса. При наведении курсора - вокруг кнопки (а это - цветное изображение прямоугольника на цветном фоне) появляется рамочка, чтобы был виден выбор этой кнопки, затем клик и действие. Ладошка курсора - это приятная и полезная мелочь.
Хорошо бы всё это загнать в DLL... Вполне реально и полезно... Но с dll мне не справиться... Вся надежда на вас, на гуру.
![Smile](images/smilies/new/smile.gif)