hira さん、NoWestさん、ありがとうございます。
NoWestさんの示してくださった方法でやってみましたが、
どうやら[
WM_LBUTTONDBLCLK ]は、[
WM_LBUTTONDOWN ]などの
メッセージが流された後に(よって親ウィンドウに[
LBN_SELCHANGE ]が送られた後に)
連続して再び[
WM_LBUTTONDOWN ]が来た場合に流される、という形式みたいです。
なので、Sクリック時の処理が存在すると、一回目のクリックの時点で
とにもかくにもそちらの処理を実行してしまうので、[
WM_LBUTTONDBLCLK ]は
流れてこないみたいでした。
なので、当面のW/Sクリックの区別は、
先の(Timerを使う)方法でしようと思います。
拡張スタイルなどは、そのうちゆっくり調べてみようと思います。
なお、
コード: 全て選択
Sub MainWnd_Destroy()
SetWindowLong(GetDlgItem(hMainWnd,ListBox1),GWL_WNDPROC,AddressOf(NewListBoxProc))
l_DestroyObjects()
PostQuitMessage(0)
End Sub
は
コード: 全て選択
Sub MainWnd_Destroy()
SetWindowLong(GetDlgItem(hMainWnd,ListBox1),GWL_WNDPROC,DefListBoxProc)
l_DestroyObjects()
PostQuitMessage(0)
End Sub
のミスのように思いましたので、そう記述しました。
サブクラス化は難しそうだったので、手を出すつもりはありませんけど、
そうでもないんですね(とは、サンプルコードを載せていただいたから言える台詞^^;)
これを使うとリストボックス上での右クリックなんかも拾えるんですね。
もともと、左W/右Sクリックで動作分岐を考えていたんですが、
リストボックス上での右クリックの拾い方が分からなかったので、
しかたなく、左W/左Sクリックでの動作分岐に代えていたのでしたが、
これで幅が広がります。
ありがとうございました。