開発環境 : WinXP SP2 VS2005 MFC使用 MDIアプリケーション
以前ゆうという名前で投稿させていただいた者です。他にもゆうという名前の人が
いたので変更いたしました。というわけで質問です。
メインフレームのタイトルなのですが、普段は設定した任意のタイトルが表示されて
います。ところが、子ウィンドウを最大化すると
任意のタイトル - [子ウィンドウのタイトル]
のようにハイフンが入ってしまいます。どうにかこれを
任意のタイトル[子ウィンドウのタイトル]
のような形にしたいのです。解決方法をお願いいたします。
メインフレームにOnUpdateFrameTitleをオーバーライドしてあげれば出来かと思います。
いろはさん
レスありがとうございます。
>メインフレームにOnUpdateFrameTitleをオーバーライドしてあげれば出来かと思いま
す。
ためしに以下のような処理を記述してみましたが変化なしでした。
void CMainFrame::OnUpdateFrameTitle(BOOL bAddToTitle)
{
if( (GetStyle() & FWS_ADDTOTITLE) == 0 )
return;
UpdateFrameTitleForDocument(NULL);
}
他にも何か必要な処理があるのでしょうか?
ちなみに・・・
タイトルの設定方法ですが、CWinAppのInitInstance()内で
AfxGetMainWnd()->SetWindowText( _T(任意のタイトル) );
して、CMainFrameのPreCreateWindow()内で
cs.style ^= FWS_ADDTOTITLE;
しております。
今では動かない過去のソースを見てみると。。。汗
OnUpdateFrameTitle()の中で表示したい文字列をSetWindowText()をしてるようです。
OnUpdateFrameTitle()内でタイトルの変更を行ってみたのですが
やはり変化がありませんでした。
うーむ・・・。別のアプローチを考えた方がいいのかも。
ためしにやってみました。
私が以前にやったのと状況がちょっと違ったのかもしれません。
子ウィンドウが最大化されたときは子フレームの方でOnUpdateFrameTitle()をオーバーライトしな
いといけないようです。
試してみました。が、これもだめでした。
いくらタイトルを変更してみてもデフォルトで入ってしまうようです。
なので、子フレームの最大化のイベントを拾ってその中で子フレームのタイトルを
消去し、メインフレームのタイトルに子フレームのタイトルを付加する。という
方法で行くことにします。
いろはさん、長々と当スレにお付き合いいただきありがとうございました。
一応これで解決とさせていただきます。
解決と言うことなので良いのですが…
UpdateFrameTitleForDocumentが呼ばれちゃうのが良くないのかと思うのです。
void CChildFrame::OnUpdateFrameTitle(BOOL bAddToTitle)
{
//CMDIChildWnd::OnUpdateFrameTitle(bAddToTitle);
}
↑とすると最大化したときに子ウィンドウのタイトルがメインウィンドウのタイトル上に表示されな
かったので、ここで設定したい文字列をSetWindowTextすればいけるかと思ったのですが。。
(先にソース書いたほうが良かったですかね。コメントが短くてすみませんでした。)
もし時間があったら試してみてください。