2016-04-15 20 views

答えて

1

OnClickイベントは、コンボボックスには適していません、あなたはOnChangeイベントをしたいユーザーはなどの矢印キーでそれを変更することができますので、

変更イベントをトリガーするには、プログラムであなたが直接あなたのハンドラを呼び出すことができますかComboBoxコントロールをだます:私は、ユーザーが下向き矢印をクリックし、ドロップダウンが基づいて読み込まれますdown.Whenドロップの下矢印のクリック時にイベントを発生します迅速reply.Butため

!include nsDialogs.nsh 
!include WinMessages.nsh 
Page Custom MyPageCreate 
Page InstFiles 

Function OnComboChange 
Pop $0 
SendMessage $0 ${CB_GETCURSEL} "" "" $2 
System::Call 'USER32::SendMessage(i$0,i${CB_GETLBTEXT},i$2,t.r2)' 
MessageBox mb_ok "OnComboChange: $2" 
FunctionEnd 

Function EmulateChangeMethodA 
Pop $0 ; Throw away parameter we don't care about 
Push $1 
Call OnComboChange 
FunctionEnd 

Function EmulateChangeMethodB 
Pop $0 ; Throw away parameter we don't care about 
FindWindow $0 "EDIT" "" $1 
SendMessage $1 ${WM_COMMAND} 0x4000000 $0 ; Send WM_COMMAND,MAKELONG(0,EN_UPDATE),hwndEdit 
FunctionEnd 

Function EmulateChangeMethodC 
Pop $0 ; Throw away parameter we don't care about 
!ifndef CB_GETCOMBOBOXINFO 
!define CB_GETCOMBOBOXINFO 0x0164 
!endif 
System::Call '*(&l4,&i16,&i16,i,i,i,i)i.r2' 
SendMessage $1 ${CB_GETCOMBOBOXINFO} "" $2 ; This only works on Vista+? 
System::Call '*$2(i,&i16,&i16,i,i,i,i.r0)' 
System::Free $2 
SendMessage $1 ${WM_COMMAND} 0x30000 $0 ; ; Send WM_COMMAND,MAKELONG(0,LBN_SELCANCEL),hwndList 
FunctionEnd 

Function MyPageCreate 
nsDialogs::Create 1018 
Pop $0 

${NSD_CreateCombobox} 0 30u 100% 200u "" 
Pop $1 ; This is the only control handle we care about in this example so make sure to never overwrite it! 
${NSD_CB_AddString} $1 "Foo" 
${NSD_CB_AddString} $1 "Bar" 
SendMessage $1 ${CB_SETCURSEL} 0 "" 
${NSD_OnChange} $1 OnComboChange 

${NSD_CreateButton} 0 50u 33% 12u "Emulate change: A" 
Pop $0 
${NSD_OnClick} $0 EmulateChangeMethodA 
${NSD_CreateButton} 33% 50u 33% 12u "Emulate change: B" 
Pop $0 
${NSD_OnClick} $0 EmulateChangeMethodB 
${NSD_CreateButton} 66% 50u 33% 12u "Emulate change: C" 
Pop $0 
${NSD_OnClick} $0 EmulateChangeMethodC 

nsDialogs::Show 
FunctionEnd 
+0

感謝解雇されるイベント。 – Shrinidhi

+0

ユーザーはリストを削除せずにコンボボックスを変更できます!私はnsDialogsがドロップダウンイベントをとにかくサポートしているとは思わない。あなたはデザインを考え直すべきです... – Anders

関連する問題