この記事では編集中のファイル名をタイトルバーに表示する方法について説明します。
編集中のファイルが変わったら更新する
タイトルバーの表示はファイルの名称の変更時に行えば良いです。ファイルの名称が変わるのは次の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();
}
動作確認

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