リストボックスで右クリック – プログラミング – Home

リストボックスで右クリック
 
通知
すべてクリア

[解決済] リストボックスで右クリック


NNN
 NNN
(@NNN)
ゲスト
結合: 23年前
投稿: 4
Topic starter  

リストボックス上で右クリックした際に、
メニューを表示させる処理を行いたいのですが、
この右クリックを受け取る方法が分かりません…。

リストボックス自体は、
VCのリソースエディタでダイアログ上に張り付けて
そのダイアログをDialogBox関数で呼び出しています。

単純に親ダイアログのコールバック関数の
WM_COMMANDでリストボックスを受け取った時に
HIWORD(wParam)で受け取れないかと思ったのですが、
それらしい物がみあたらなくて…。

それとも、この方法では右クリックを受け取る事は
できないのでしょうか?
(MFC関係はさっぱりな物で…)


引用未解決
トピックタグ
ku
 ku
(@ku)
ゲスト
結合: 24年前
投稿: 312
 

こういう場合、どうするのが一番簡単なのか知らないのですが
一応実現できる方法を

1.ClassWizardの「クラスの追加」-「新規」
 クラス名:CMyListBox
 基本クラス:CListBox
 で作成
2.ClassWizardのメンバ変数の追加でリストボックスに
 メンバ変数:m_ListBox
 カテゴリ:コントロール
 変数のタイプ:CMyListBox
3.ダイアログのヘッダに
 #include MyListBox.h
 を追加する
4.CMyListBoxのWM_RBUTTONDOWN(OnRButtonDown)で
 メニューを表示する


返信引用
NNN
 NNN
(@NNN)
ゲスト
結合: 23年前
投稿: 4
Topic starter  

アドバイスありがとうございます。

これってMFCでしか使えないと言うことでしょうか?
通常のSDKだと、クラスの追加が上手くいかないのですが…。

SDKでリストボックス自体がWM_KEYDOWNを受け取る
方法はないのでしょうか?

やっぱりMFCを使えという事なのかな…。


返信引用
sugar
 sugar
(@sugar)
ゲスト
結合: 23年前
投稿: 448
 

DialogBox関数で...とありますが、もしかしてSDKですか?
(MFCかSDKかは、書いておいた方がいいですよ、ホントに。)

SDKということを前提で話しますと、
リストボックスのサブクラス化を行う事でできないでしょうか。
SetWindowLong()でリストボックスのウィンドウプロシジャを自作のものと交換します。
リストボックス用自作ウィンドウプロシジャのなかで、WM_RBUTTONDOWNを処理します。

MFCなら、kuさんの方法でいいと思います。


返信引用
Bun
 Bun
(@Bun)
ゲスト
結合: 24年前
投稿: 761
 

SDKはわかりませんが

WM_CONTEXTMENU は使えませんかね?


返信引用
NNN
 NNN
(@NNN)
ゲスト
結合: 23年前
投稿: 4
Topic starter  

仰る通りSDKで作っております。
MFCには今ひとつ馴染みが薄くて…。

>リストボックスのサブクラス化を行う事でできないでしょうか。

なるほど。サブクラス化の概念がいまひとつ分かっていなかったのですが、
調べて見るとメッセージを割り込ませる事ができるんですね。
おかげで右クリックを取得できました。ありがとうございます。


返信引用
NNN
 NNN
(@NNN)
ゲスト
結合: 23年前
投稿: 4
Topic starter  

解決をつけ忘れていました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました