実現したいこと
マウスホイール操作で選択を変更できるリストボックスをCListBoxから派生させて作成しました。さらに、マウスホイール操作によって選択が変更されたということを、親のダイアログでキャッチしたいです。
発生している問題・分からないこと
マウスホイール操作があったら、リストボックスでSetCurSelを行って親ダイアログでON_WM_LBN_SELCHANGEでキャッチしようとしましたが、WM_LBN_SELCHANGEにが飛んでこないようです。なお、ウィンドウスタイルにLBS_NOTIFYは指定しています。
該当のソースコード
C++
1BOOL MyListBox::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt) 2{ 3 int select{ 0 }; //仮 ここで選択位置を計算 4// 試したことその① 5 SetCurSel(select); 6// 試したことその② 7 GetParent()->SendMessage(LBN_SELCHANGE, GetDlgCtrlID(), reinterpret_cast<LPARAM>(m_hWnd)); 8// 試したことその③ 9 SendMessage(LB_SETCURSEL, select, 0); 10 return TRUE; 11}
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
Microsoftのドキュメントには、「CListBox::SetCurSelメンバー関数によって選択が変更された場合、この通知(ON_LBN_SELCHANGE)は送信されません。」と書いてありました。他のサイトではLBN_SELCHANGEを親にSendMessageしてもダメで、この通知はユーザーが選択を変更したときに通知されるものだと書いてありました。
ソースコードに記載しましたが、SetCurSelの代わりにLB_SETCURSELをSendMessageしてもやはりだめでした。
補足
特になし
回答2件
あなたの回答
tips
プレビュー