Цитата profcom:
при помощи функции CreateWindowEx мы создали кнопку, как мы можем отследить ее нажатие в реальном времени? »
|
Я знаю вариант только с помощью ButtonEvent плагина (ButtonEvent.dll) :
Заодно назовём это
Пример 3
Использование функции CreateWindowEx для создания кнопки. ( + создание MessageBox с помощью API )
Код:
!AddPluginDir ".\"
!include MUI2.nsh
Page custom fnc_Create
;!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "English"
!define IDC_ABOUT 1300
OutFile "test3_CreateWindowEx.exe"
Var dlg
Function fnc_Create
nsDialogs::Create 1018
Pop $dlg
System::Call `*(i,i,i,i)i(1,34,200,100).R0`
System::Call `user32::MapDialogRect(i$HWNDPARENT,iR0)`
System::Call `*$R0(i.s,i.s,i.s,i.s)`
System::Free $R0
FindWindow $R0 "#32770" "" $HWNDPARENT
System::Call 'user32::CreateWindowEx(i0,t"Button",t"About",i${BS_PUSHBUTTON}|${WS_CHILD}|${WS_VISIBLE}|${WS_TABSTOP},i20,i10,i100,i30,i$HWNDPARENT,i${IDC_ABOUT},ir0,i0)i.R0'
GetFunctionAddress $0 FuncAbout
ButtonEvent::AddEventHandler /NoUnload ${IDC_ABOUT} $0
nsDialogs::Show
FunctionEnd
Function FuncAbout
System::Call 'user32::MessageBox(i$HWNDPARENT,t"Была нажата кнопка About",t"About",i0x40)'
FunctionEnd
Section
SectionEnd
Цитата:
BS_PUSHBUTTON - Создается обычная кнопка.
WS_TABSTOP - Этот стиль указывает орган управления, на который можно переключиться при помощи клавиши <Tab>.
Данный стиль может быть использован только дочерними окнами в диалоговых панелях .
MessageBox function :
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
|
Наверняка можно обойтись без плагина...