コンボボックスをアニメーションで開く          <TOP>


「コンボボックスをアニメーションで開く」の設定と解除

SystemParametersInfo システム全体に関するパラメータを取得・設定

 

左:アニメーションオープン解除    右:アニメーションオープン設定

 

Windows 7 で試したところ「AnimeOn」は効きませんでした。(Vistaではどうなんでしょう?)2010-02-28

 

'================================================================
'= コンボボックスをアニメーションで開く
'=    (ComboSlideOpen.bas)
'================================================================
#include "Windows.bi"

#define SPI_SETCOMBOBOXANIMATION &H1005        'コンボボックスを開くときアニメーション効果を有効・無効に設定
#define SPIF_UPDATEINIFILE &H1                 'ユーザープロファイルの更新を指定する定数の宣言
#define SPIF_SEndWININICHANGE &H2              '全てのアプリケーションに通知して更新する
#define SPIF_SEndCHANGE SPIF_SEndWININICHANGE

' システム全体に関するパラメータを取得・設定
Declare Function Api_SystemParametersInfo& Lib "user32" Alias "SystemParametersInfoA" (ByVal uiAction&, ByVal uiParam&, pvParam As Any, ByVal fWinIni&)

Var Shared Combo1 As Object

Combo1.Attach GetDlgItem("Combo1") : Combo1.SetFontSize 14

'================================================================
'=
'================================================================
Declare Sub MainForm_Start edecl ()
Sub MainForm_Start()
    Var Ret As Long

    For i = 1000 To 1140
        Combo1.AddString Str$(i)
    Next

    ' コンボボックスのアニメーション効果の有効・無効を設定
    Ret = Api_SystemParametersInfo(SPI_SETCOMBOBOXANIMATION, 0, ByVal 0, SPIF_UPDATEINIFILE Or SPIF_SEndCHANGE)
End Sub

'================================================================
'=
'================================================================
Declare Sub Radio1_on edecl ()
Sub Radio1_on()
    Var Ret As Long

    ' コンボボックスのアニメーション効果の有効・無効を設定
    Ret = Api_SystemParametersInfo(SPI_SETCOMBOBOXANIMATION, 0, ByVal 0, SPIF_UPDATEINIFILE Or SPIF_SEndCHANGE)
End Sub

'================================================================
'=
'================================================================
Declare Sub Radio2_on edecl ()
Sub Radio2_on()
    Var Ret As Long

    ' コンボボックスのアニメーション効果の有効・無効を設定
    Ret = Api_SystemParametersInfo(SPI_SETCOMBOBOXANIMATION, 0, ByVal 1, SPIF_UPDATEINIFILE Or SPIF_SEndCHANGE)
End Sub

'================================================================
'=
'================================================================
While 1
    WaitEvent
Wend
Stop
End