この人頭いいなと思ったエピソード

いつもお世話になっております。
本日もよろしくお願いします。

早速ですが現在、VC++を使って簡単なアプリケーションを作っていますが、
リストボックスに表示されているものを洗濯する際、
反転させて(選択状態にして)OKボタンを押せば、実行してくれるのですが、
これをリストをダブルクリックしたらOKを押さずとも実行してくれるようにしたいのですが、どのようにしたらよいですか?
調べてみたらMFCの場合は、というものは見つかったのですが、
SDKでやる方法は見当たりませんでした。
今回はMFCなしでやっているのですが、使わずに実現する方法はありますか?

参考までに現在の状況を下記に示します。

(中略)
case WM_COMMAND:{
switch{
・・・
case IDC_BUTTON: //OKボタン
//リストで選択したものを使って処理
}・・・
}
リソースはVCのリソースエディタで作っています。
IDC_BUTTONの代わりに、リストダブルクリックに変えたいです。
ご教授お願いします。

開発環境は VisualStudio 6.0
OSはWindowsXPです。

A 回答 (3件)

★???


>switch文に入れられず、ひとつだけ例文のようなif文でやっています。
 ↑
 これはどういう意味ですか?
 下のようにすれば良いと思いますが…。

switch ( uMsg ){
 case WM_COMMAND:
  switch ( LOWORD(wParam) ){ // ID
   case IDC_LISTBOX:
    if ( HIWORD(wParam) == LBN_DBLCLK ){ // 通知コード
     /*
     ここがリストボックスのダブルクリック処理
     */
    }
    break;
   case IDC_XXXX: ←他のコントロールなど
    :
    break;
   case IDC_XXXX: ←他のコントロールなど
    :
    break;
  }
  break;
}
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
実現できました。
そうやればよかったのですね。
まだ初心者なので応用が利かず、いろいろとまっていますがこれから
がんばって行きたいと思います。

お礼日時:2008/02/02 17:53

★次のリンクを良く読んで下さい。


http://wisdom.sakura.ne.jp/system/winapi/win32/w …→『リストボックス』
 このページの下の方に『リストボックスの通知コード』と書かれている場所があります。
 ここのサンプルにそのまんま『LBN_DBLCLK』が使われています。
 サンプルでは MessageBox() ですのでここに『OK』ボタンを押したときと同じ処理を書くか、
 『OK』ボタンを押した状態と同じになるようにします。
・以上。参考にして下さい。

参考URL:http://wisdom.sakura.ne.jp/system/winapi/win32/w …

この回答への補足

ご回答ありがとうございました。
サイトをよく読んだ結果実現できました。
ただ一点気になることがあります。
質問では略してしまいましたが、switch文では

switch(LOWORD(wParam)){

と分岐しておりますがこのLBN_DBLCLKはHIWORD(wParam)となっており、
switch文に入れられず、ひとつだけ例文のようなif文でやっています。
キャストや代入などいろいろやってみたのですがうまくいきませんでした。
これを解決する方法がありましたらアドバイスお願いします。

補足日時:2008/02/01 23:33
    • good
    • 0

LBS_NOTIFYスタイルを追加して LBN_DBLCLKメッセージを処理すればいいように思います



これでダブルクリックされると WM_COMMANDで通知が来ますので
wParamのHIWORDがリストボックスのID LOWORDがLBN_DBLCLK
lParamがリストボックスのハンドル
といった具合になります
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報