かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

MFC の MDI アプリでタブに表示される名前を変えたい

このタブのところの文字を変えたい。

f:id:okazuki:20190930162603p:plain

やり方は簡単でアプリのドキュメントクラスの プロジェクト名Doc クラスのインスタンスに SetTitle メソッドを呼んでやればいい。

あんまりしないと思うけど プロジェクト名Doc クラスの OnNewDocument で以下のような処理を書くと…

BOOL CMFCApplication6Doc::OnNewDocument()
{
    if (!CDocument::OnNewDocument())
        return FALSE;

    // TODO: add reinitialization code here
    // (SDI documents will reuse this document)
    SetTitle(L"オレオレ!!俺だけど!");
    return TRUE;
}

こんな感じになる。

f:id:okazuki:20190930162832p:plain

もっときめ細やかな制御をしたかったりしたら、CMultiDocTemplate を継承して SetDefaultTitle メソッドをオーバーライドして、その中で CDocument::SetTitle してやる感じになりそう。

作成した CMultiDocTemplate を継承したクラスは、プロジェクト名App クラスの InitInstance メソッド内で CMultiDocTemplate を生成している部分を探して置き換えてやることで有効になる。