掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ペイン内でのアクセラレータキー入力 (ID:72712)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> Ctrl+OやCtrl+Pなど、ダイアログ自身が処理していないはずのメッセージも、 > IsDialogMessageで処理されてしまうものなのでしょうか? http://msdn.microsoft.com/en-us/library/ms645498.aspx 「IsDialogMessage sends WM_GETDLGCODE messages to the dialog box procedure to determine which keys should be processed.」 http://msdn.microsoft.com/en-us/library/ms645425.aspx 「By default, the system handles all keyboard input to the control.」 とある。 > ・ところがこの状態だと、クラスビューのツリー上で上キーを押しても、 > ツリー内の移動ではなくバージョン情報ダイアログが表示されてしまう。 MFC使ってるなら GetDefaultAccelerator() をオーバーライドしてやれば良い。 CDocument 単位で切り替えたいなら CDocument::GetDefaultAccelerator() で対応する HACCEL 返せば良いし、 そうで無いなら↓な感じで切り替えてやっても良い。 HACCEL m_wndClassView::GetAccelerator() { return ::LoadAccelerators(, m_wndClassView専用のアクセラレータ); } HACCEL CMainFrame::GetDefaultAccelerator() { HWND wnd = ::GetFocus(); if (wnd == m_wndClassView || ::IsChild(m_wndClassView, wnd)) { return m_wndClassView.GetAccelerator(); } return CFrameWndEx::GetDefaultAccelerator(); }
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.