シングルクリックされた場合の区別の仕方がわかりません。
通知コードも、軽く検索掛けた限りでは
しかないように思われます。LBN_DBLCLK 項目をダブルクリックした時。
LBN_ERRSPACE リストボックスがメモリを取得できない時。
LBN_KILLFOCUS キーボードフォーカスを失った時。
LBN_SELCANCEL 選択項目をキャンセルした時。
LBN_SELCHANGE 選択項目に、何らかの変更があった時。
LBN_SETFOCUS キーボードフォーカスを得た時。
LBN_SELCHANGE → Sクリック
LBN_DBLCLK → Wクリック
で区別しようとすると、全てLBN_SELCHANGEになってしまいます。
一応、リストボックスのIDをListBoxOutputUrlとして、
コード: 全て選択
Dim MainWndProc_nListSglClickFrag As Long
Const TimerID_ListWS = 1024
'-----------------------------------------------------------------------------
' ウィンドウメッセージを処理するためのコールバック関数
Function MainWndProc(hWnd As DWord, dwMsg As DWord, wParam As DWord, lParam As DWord) As DWord
' TODO: この位置にウィンドウメッセージを処理するためのコードを記述します。
SelectCase dwMsg
Case WM_COMMAND
SelectCase LOWORD(wParam)
Case ListBoxOutputUrl
Select Case HIWORD(wParam)
Case LBN_SELCHANGE
SetTimer( hMainWnd, TimerID_ListWS, GetDoubleClickTime(), NULL )
MainWndProc_nListSglClickFrag = TRUE
Case LBN_DBLCLK
MainWndProc_nListSglClickFrag = FALSE
Msgbox hWnd, "Wクリック"
End Select
EndSelect
Case WM_TIMER
If( wParam=TimerID_ListWS )Then
KillTimer( hMainWnd, TimerID_ListWS )
If( MainWndProc_nListSglClickFrag=TRUE )Then
Msgbox hWnd, "Sクリック"
EndIf
MainWndProc_nListSglClickFrag = FALSE
EndIf
EndSelect
' イベントプロシージャの呼び出しを行います。
MainWndProc=EventCall_MainWnd(hWnd,dwMsg,wParam,lParam)
End Function
の様に組むことで、区別はできたのですが、
何かもっと楽な方法や通知コードを知っている方いらっしゃいましたら、
教えていただけないでしょうか?
それとも、このように自前で区別するしかないのでしょうか?