MFCをVC6.0で作成しています。現在、ダイアログボックスを作成しているのですが、ダイアログボックスの中のリストボックスについて、教えてください。
void CFileReadeDlg::GetIndex()
{
UpdateData(TRUE);
m_nCount = m_xcList.GetCurSel();
if(m_nCount==LB_ERR)
{
AfxMessageBox("選択してください");
}
}
の関数で、リストボックス内に存在するカーソルの位置を割り出したいのですが、
この関数は、
void CFileReadeDlg::OnSelchangeDatatable()
{
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
GetIndex();
}
のようにリストボックスの中のセルを変更した際に稼動する関数内で呼び出しています。
ですが、実際、このm_nCountには、0しか入りません。
これは、単にOnSelchangeDatatable()の関数を何処かの関数内にも呼び出していないからでしょうか。
そもそも、呼び出す必要はないかと思っていたのですが。
又、VCのヘルプに『単一選択リスト ボックスで、現在選択されている項目があれば、その項目の 0 から始まるインデックスを取得します』
とありましたが、0から始まるインデックスとは、どういうことを意味しているのでしょうか。
よろしくお願いします。
No.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から始まる~のくだりに関しては、初歩的なことなのにも関わらず、ご丁寧にお答えくださり、ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エディットコントロールの色の...
-
フォーム上のリストボックスに...
-
AfxMessageBoxにヘルプボタンを...
-
コンボボックスのドロップダウ...
-
マインクラフト(pc版)で座標...
-
エクセルで作った新しいウイン...
-
コントロールの書式設定で、“コ...
-
作成したウインドウのサイズを...
-
Minecraft 統合版(PC)の描画距...
-
コンボボックス内の文字サイズ変更
-
「アイテムは収集されました」...
-
ブレゼンハムのアルゴリズムに...
-
カーソルが自分のウィンドウか...
-
vbaから他のアプリを終了
-
C言語 配列で座標
-
グラフの交点の求め方(Excel)
-
スクロールバーを点滅させない方法
-
panelのスクロール表示について
-
勝手にウィンドウが開いて止ま...
-
描画を透明にする方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
メッセージボックスを大きくす...
-
コンボボックスのドロップダウ...
-
ボタンの表示の色、フォントを...
-
'int' から 'LPCSTR' に変換で...
-
ダイアログの上のテキストボッ...
-
フォーム上のリストボックスに...
-
C# ボタンコントロール内で文字...
-
MFCダイアログボックスを最前面...
-
ダイアログの表示位置の保存
-
confirmダイアログの表示文字に...
-
ボタンの配置を変更したい
-
vbscriptで、ファイル選択ダイ...
-
ダイアログの一部を半透明化す...
-
ダイアログボックスで指定した...
-
【VC++2005】ダイアログサイズ...
-
メッセージボックスのボタン文...
-
ダイアログにプレビュー表示
-
SetWindowLong()でタイトルバー...
-
リソースファイルとは・・・
-
エディットコントロールの色の...
おすすめ情報