[MFC]編集中のファイル名をタイトルバーに表示する

MFC
この記事は約3分で読めます。

この記事では編集中のファイル名をタイトルバーに表示する方法について説明します。

編集中のファイルが変わったら更新する

タイトルバーの表示はファイルの名称の変更時に行えば良いです。ファイルの名称が変わるのは次の2パターンが考えられます。

  1. ファイルを開く
  2. ファイルを閉じる

それぞれの操作を行う処理タイミングでタイトルバーの表示内容を変更する実装としましょう。

まずはファイルのオープン/クローズがあった場合にタイトルバーの更新を行うUpdateTitleBar()を実装しましょう。

void CMyEditorDlg::UpdateTitleBar()
{
	// ファイルが有る場合
	if (m_file.m_hFile != CFile::hFileNull)
	{
		SetWindowText(m_file.GetFileName());
	}
	// ファイルがない場合
	else
	{
		SetWindowText(DEFAULT_WIN_TITLE);
	}
}

簡単ですね。オープン中を管理するCFile型のメンバm_fileから、(1)現在ファイルがオープンしているか?、(2)オープンしているファイルの名前は?を取得しています。

そしてファイルが有る場合にはファイル名を、そうでない場合はDEFAULT_WIN_TITLEをタイトルバーに設定するようにしています。

ちなみにDEFAULT_WIN_TITLEは今回新たに追加したdefineで、タイトルバーにデフォルトで表示する文字列になっています。

#define DEFAULT_WIN_TITLE	TEXT("テキストエディタ")

次はファイルのオープン/クローズをするタイミングでUpdateTitleBar()を呼ぶように修正します。

ファイルオープン処理

void CMyEditorDlg::OnMOpenfile()
{
	// TODO: ここにコマンド ハンドラー コードを追加します。

~~~省略(ファイルのオープン処理)~~~

	// タイトルバーの更新をする
	UpdateTitleBar();
}

ファイルクローズ処理

void CMyEditorDlg::OnClose()
{
	// TODO: ここにメッセージ ハンドラー コードを追加するか、既定の処理を呼び出します。
	// ファイルがOpen済の場合はクローズする
	if (QuitFileEdit() == FALSE)
	{
		return;
	}

	// タイトルバーの更新をする
	UpdateTitleBar();

	CDialogEx::OnClose();
}


void CMyEditorDlg::OnMClosefile()
{
	// TODO: ここにコマンド ハンドラー コードを追加します。
	// ファイルがOpen済の場合はクローズする
	if (QuitFileEdit() == FALSE)
	{
		return;
	}

	// タイトルバーの更新をする
	UpdateTitleBar();

}


void CMyEditorDlg::OnMCreatefile()
{
	// TODO: ここにコマンド ハンドラー コードを追加します。
	// ファイルがOpen済の場合はクローズする
	if (QuitFileEdit() == FALSE)
	{
		return;
	}
	// タイトルバーの更新をする
	UpdateTitleBar();
}

動作確認

タイトルバーに編集中のファイル名を表示することができました。

コメント

  1. […] […]

タイトルとURLをコピーしました