S-JIS[1998-02-11/2002-12-07]

キャプション(タイトル)の変え方

AppWizardで作成したSDIのMFCアプリケーションで ウィンドウの左上に表示されるキャプション等の変更方法の例を示します。

作成したアプリケーションには、ふつう 一番上に青い部分があって、

  1. アプリケーションのアイコン
  2. ドキュメント名(ファイル名)
  3. アプリケーション名
  4. 最小化最大化・閉じるためのボタン [2002-12-07]
が表示されています。それらの一部の変え方です。

アイコンの変え方

ウィンドウの左上に出ているアイコンの変え方です。 リソースエディタでアイコンを作っておき、それを使います。

MainFrm.cpp:

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
〜
	HICON hIcon=AfxGetApp()->LoadIcon(アイコンのリソースID);
	SetIcon(hIcon,FALSE);

	return 0;
}

ちなみにIDR_MAINFRAME等の場合、標準(32×32)とスモール(16×16)の2種類があり、 エディタ上部のコンボボックスで切り替えることができます。
ウィンドウの左上や デスクトップの「小さいアイコン」で使うのはスモールサイズ、 デスクトップの「大きいアイコン」は標準サイズです。

余談ですが、デスクトップで使うアイコンは、AppWizardを使わないで作った (つまり IDR_MAINFRAME といったデフォルトのアイコンが無い)アプリケーションでも、 テキトーなIDでアイコンを描いてやってコンパイルすれば、デスクトップに反映されます。
どうやら、一番小さいIDのアイコンがデフォルトで使われるようです。


ドキュメント名の変え方

CDocumentの派生クラスの中から、
CDocument::SetTitle(文字列)
を呼び出します。

SDIの場合、単純にドキュメント名を表示しないだけなら、 CMainFrameに以下のようにコーディングすれば簡単に出来ます。

MainFrm.cpp:

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: この位置で CREATESTRUCT cs を修正して、Window クラスやスタイルを
	//       修正してください。
	cs.style &= ~FWS_ADDTOTITLE;	//ドキュメントの名称を表示しない(SetTitle()は使用できなくなる)

	return CFrameWnd::PreCreateWindow(cs);
}

アプリケーション名の変え方

CMainFrameクラスのメンバー関数の中から、
CWnd::SetWindowText(文字列)
を呼び出します。
CMainFrame::OnCreate()の最後で変えておけば、とりあえずOKかな?

CViewの派生クラスのメンバー関数の中から変えたい場合は
GetParentFrame()->SetWindowText(文字列);
とします。

ちなみに固定値でよければ、文字列リソース(String Table)のIDR_MAINFRAMEの1つめを変えるだけでいいです。
ここの文字列\n〜\n〜\n〜\n〜\n〜\n」


[2002-12-07]

ボタンの変え方

最小化ボタン・最大化ボタンを無効化することは簡単に出来ます。

MainFrm.cpp:

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: この位置で CREATESTRUCT cs を修正して、Window クラスやスタイルを
	//       修正してください。
	cs.style &= ~WS_MINIMIZEBOX;	//最小化ボタンを無効化
	cs.style &= ~WS_MAXIMIZEBOX;	//最大化ボタンを無効化
//	cs.style &= ~WS_SYSMENU;		//全ボタンを無くす

	return CFrameWnd::PreCreateWindow(cs);
}

WS_SYSMENUは、システムメニューを表しています。 これを削除すると、左上のアイコンや右上のボタン類は全て無くなり、 タイトルバーを右クリックすると出てくるメニューも出なくなります。


VC++ページへ戻る / 技術メモへ戻る
メールの送信先:ひしだま