Ветеран
Сообщения: 1216
Благодарности: 486
|
Профиль
|
Отправить PM
| Цитировать
Цитата MKN:
но возник вопрос - как вернуть окно на место, в исходную позицию...»
|
Но ты же с помощью CreateWindowEx создавал диалог и координаты известны..
Код:
...i50,i100...,i$dlg,i222,i0,i0) i.R2
Цитата MKN:
как вернуть окно на место, в исходную позицию, после повторного клика кнопки ? ( для любого кол-ва окон и кнопок) »
|
из структуры рект родителя и дочернего окна - точнее, разницой первого члена структуры рект родителя и дочернего окна...
Код:
System::Call "*(i,i,i,i)i.r1"
System::Call "*(i,i,i,i)i.r3"
System::Call "User32::GetWindowRect(iR2,ir1)"
System::Call "User32::GetWindowRect(i$dlg,ir3)"
System::Call "*$1(i.r2)"
System::Call "*$3(i.r4)"
Intop $5 $2 - $4
Эта разница постоянна, а вот если она изменится, то можно менять позицию окна..
т.е в данном примере разница равна 50..
читать дальше »
Код:
!include MUI2.nsh
Page custom page1
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "English"
OutFile "repositionWindowEx.exe"
Var dlg
Var btn
!define WS_BORDER 0x00800000
Function page1
nsDialogs::Create 1018
Pop $dlg
${NSD_CreateButton} 150u 14u 120u 14u "Переместить Window 1"
pop $btn
${NSD_OnClick} $btn BtnClick
System::Call 'user32::CreateWindowEx(i0,t "STATIC",t "Window 1",\
i${DEFAULT_STYLES}|${WS_BORDER},\
i50,i100,i200,i60,i$dlg,i222,i0,i0) i.R2'
SetCtlColors $R2 `0x0000FF` `0x99FFFF`
nsDialogs::Show
FunctionEnd
Function BtnClick
pop $btn
System::Call "*(i,i,i,i)i.r1"
System::Call "*(i,i,i,i)i.r3"
System::Call "User32::GetWindowRect(iR2,ir1)"
System::Call "User32::GetWindowRect(i$dlg,ir3)"
System::Call "*$1(i.r2)"
System::Call "*$3(i.r4)"
Intop $5 $2 - $4
${If} $5 != 50
System::Call "User32::SetWindowPos(iR2,i,i50,i100,i,i,i0x201)"
${Else}
System::Call "User32::SetWindowPos(iR2,i,i3,i3,i,i,i0x201)"
${EndIf}
System::Free $1
System::Free $3
FunctionEnd
Section
SectionEnd
|