VC++とかで自動生成されたコードはほっといても
CMainFrameにくっついているCToolBarの「ツールチップ」が
ステータスバーに表示されると思います。
ただ、CSplitterWndで区切られたサブ「フレーム」ウィンドウ上の
ツールバーのツールチップがそのままでは表示されないのです。
何か良い方法などあるのでしょうか?
ご教授宜しくお願い致します。
ウィンドウの階層がどのようになっているのか分かりづらいです。
とりあえず、以下、SDIであると仮定して進めます。
> ただ、CSplitterWndで区切られたサブ「フレーム」ウィンドウ上の
ということは、以下のような階層になっているのでしょうか?
メインフレームウィンドウ(CFrameWnd)
+-- 分割ウィンドウ(CSplitterWnd)
| +-- サブフレームウィンドウ(CFrameWnd)
| | +-- ツールバー(CToolBar)
| | +-- ビュー(CView)
| +-- サブフレームウィンドウ(CFrameWnd)
| +-- ツールバー(CToolBar)
| +-- ビュー(CView)
+-- ステータスバー(CStatusBar)
このようになっているのであれば、サブフレームウィンドウから
メインフレームウィンドウのステータスバーを参照できるように
してやる必要があります。
CFrameWnd::GetMessageBar()を以下のようにオーバーライド
しましょう。
class CSubFrameWnd : public CFrameWnd
{
public:
virtual CWnd* GetMessageBar();
};
CWnd* CSubFrameWnd::GetMessageBar()
{
return GetToplevelFrame()->GetMessageBar();
}
お返事ありがとうございます。
GetMessageBar()はとても有効的でした。
今判ったのですが、単純なミスで、
ダイアログバーのコマンドUI内で
UIを無効→UIを有効とコードを記述してました。。。
そのためにどうやらツールチップが表示されなかったらしいです。
お騒がせしました。。。
解決です。