コンボボックスのF4キーによるDropDown禁止          <TOP>


通常、コンボボックスはF4キーでドロップダウンしますが、それを禁止します。

SendMessage ウィンドウにメッセージを送信

CB_SETEXTENDEDUI デフォルトまたは拡張のユーザーインターフェイスを設定
 

左:F4キーでドロップダウン    右:ドロップダウン禁止(▼クリックでドロップダウン)

 

 

'================================================================
'= コンボボックスのF4キーによるドロップダウン禁止
'================================================================
#include "Windows.bi"

' ウィンドウにメッセージを送信。この関数は、指定したウィンドウのウィンドウプロシージャが処理を終了するまで制御を返さない
Declare Function Api_SendMessage& Lib "user32" Alias "SendMessageA" (ByVal hWnd&, ByVal wMsg&, ByVal wParam&, ByVal lParam&)

#define CB_GETEXTENDEDUI &H156          'コンボボックスが拡張インターフェイスを持つかどうかを判断する
#define CB_SETEXTENDEDUI &H155          'デフォルトまたは拡張のユーザーインターフェイスを設定する

Var Shared Combo1 As Object
Var Shared Check1 As Object

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

'================================================================
'=
'================================================================
Declare Sub MainForm_Start edecl ()
Sub MainForm_Start()
    For i% = 1 To 12
        Combo1.AddString Str$(i%)
    Next
    Combo1.SetFocus
End Sub

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

    If Check1.GetCheck Then
        Ret = Api_SendMessage(Combo1.GethWnd, CB_SETEXTENDEDUI, 1, 0)
    Else
        Ret = Api_SendMessage(Combo1.GethWnd, CB_SETEXTENDEDUI, 0, 0)
    End If
    Combo1.SetFocus
End Sub

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