- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:MFCのリストボックスについて)
MFCのリストボックスについて
このQ&Aのポイント
- VC6.0で作成したMFCアプリケーションのリストボックス内に存在するカーソルの位置を取得する方法について質問があります。
- リストボックスの選択位置を取得するためには、OnSelchangeDatatable関数内でGetIndex関数を呼び出す必要があります。
- しかし、現在の実装ではm_nCount変数には常に0が入ってしまいます。この原因はOnSelchangeDatatable関数が他の関数内から呼び出されないためだと思われます。また、0から始まるインデックスとは、選択された項目のリストボックス内での位置を示すものです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
OnSelchangeDatatableはメッセージマップに登録されているのでしょうか? BEGIN_MESSAGE_MAP(CXXXDlg, CDialog) //{{AFX_MSG_MAP(CXXXDlg) ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_LBN_SELCHANGE(IDC_LIST1, OnSelchangeDatatable) //}}AFX_MSG_MAP END_MESSAGE_MAP() といった具合にメッセージマップが記述されていないとOnSelchangeDatatableへ制御が移りませんよ IDC_LIST1、CXXXDlgは 実際のリソースIDやクラス名と読み替えてください ClassWizardから追加するなら オブジェクトIDでリストボックスのリソースIDを選択 メッセージでLBN_SELCHANGEを選択 関数の追加をクリック メンバ関数の追加で必要なら関数名を修正 といった手順で追加しましょう メッセージマップとヘッダーでの宣言、CPPファイルへの関数スケルトンを作成してくれます 0から始まるインデックスとは リストボックスに5項目あるなら 1番目 ... 0 2番目 ... 1 3番目 ... 2 4番目 ... 3 5番目 ... 4 といった値になるということです
お礼
素早いご解答&適切なご解答ありがとうございます。 ご指摘の点を修正しましたところ、立派に機能し始めました。ありがとうございます。 また、0から始まる~のくだりに関しては、初歩的なことなのにも関わらず、ご丁寧にお答えくださり、ありがとうございます。