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

Показать сообщение отдельно
MKN MKN вне форума

Ветеран


Сообщения: 2355
Благодарности: 557

Профиль | Отправить PM | Цитировать


Цитата 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
Наверняка можно обойтись без плагина...

Последний раз редактировалось MKN, 22-01-2013 в 13:48.

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

Отправлено: 13:38, 22-01-2013 | #102