Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для kotkovets

Ветеран


Сообщения: 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

-------
Спасибо ВСЕМ за то, что тратите свое время, что бы ПОМОЧЬ МНЕ.


Последний раз редактировалось kotkovets, 01-02-2013 в 20:23.

Это сообщение посчитали полезным следующие участники:

Отправлено: 20:26, 31-01-2013 | #160