通常、MDIやSDIのメインフレームのキャプションは、

のように、自動的に「子ウィンドウのタイトル - アプリケーション名」となっています。

たしかに楽なのですが、場合によってはキャプションを全て自分で変更したい場合があります。
(アプリケーション名だけなら、SetTitle()で変更出来ます。)

そんな場合にどうしたらよいかを紹介します。

今回は、「自動的にタイトルを変更する」フラグである(?)「FWS_ADDTOTITLE」を、ウィンドウスタイルから外す事で実現します。
PreCreateWindow関数内でウィンドウスタイルを変更します。

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
	if( !CFrameWnd::PreCreateWindow(cs) )
		return FALSE;

	cs.style^= FWS_ADDTOTITLE;

	return TRUE;
}

あとは、メインフレームからSetWindowTextを呼び出せば、希望通りのキャプションに変更する事が出来ます。

SetWindowText("たかぼーそふと");

MFC AppWizardを使ってMDI/SDIのプロジェクトを作成すると、
デフォルトで1つのツールバーがくっついてきます。
IEのように、ボタン1つ1つにテキストを挿入しようと思い、
ツールバー作成コードのすぐ後へ次のようなコードを書きました。

m_wndToolBar.SetButtonText(0,"新規作成");
m_wndToolBar.SetButtonText(1,"開く");

ところがどっこい、実行してみると・・・

という感じでテキストが埋もれてしまいます。

ここで詰まった方も多いはず。。。

マニュアルにも特に記載されてません。

というわけで、次のが直す方法。

CRect rect;
m_wndToolBar.GetToolBarCtrl().GetItemRect(0,rect);
m_wndToolBar.SetSizes(rect.Size(),CSize(16,15));

これを、テキスト設定後に実行すると、ちゃんと表示されるようになります(CSize(16, 15)はボタン画像のサイズです)。

記事検索

アーカイブ