0

MFC 機能パックを使用して作成しているアプリケーションがあります。ドキュメント/ビューを使用します。これらのクラスは「通常の」MFC クラスから派生しているため、これらの質問は Feature Pack 固有のものではない場合があります。

変更が加えられると、次のコードを使用して*、タブの名前にアスタリスクを追加し、メイン ウィンドウのタイトルに単語を追加します。(modified)

tabval = "Report_" + pDoc->rptData.reportId.Strip();
winval = tabval;
if (changed) {
    tabval += " *";
    winval += " (modified)";
}
frame->SetTitle(tabval);
frame->SetWindowText(tabval);
name = mainFrame->GetTitle();
mainFrame->SetWindowText(name + " - " + winval);

しかし、タブを切り替えると元のテキストに戻ります。最初の質問: 変更をスティッキーにするにはどうすればよいですか?

2 番目の質問: 左側にツリー ビューがあり、右側にプロパティ ウィンドウがあります。それらを切り替えると、タイトル バーが強調表示 (非表示) され、どちらがアクティブであるかが示されます。ユーザーはドキュメント ウィンドウをアクティブにして対話することもできますが、ドキュメント ウィンドウが実際にアクティブであるという視覚的なフィードバックを提供する方法はないようです。どうやってやるの?

4

2 に答える 2

0

変数の型は明確ではありませんが、pDocとがあるので、前者は派生クラスであり、後者はおそらくまたは派生クラスであるとframe想定しています。CDocumentCFrameWndCMDIFrameWnd

私がそれほど間違っていなければ、タブのタイトルが固定されていない理由は、各タブ付きビューの背後SetTitleにあるを呼び出す必要があるためです。CDocument

tabval = "Report_" + pDoc->rptData.reportId.Strip();
winval = tabval;
if (changed) {
    tabval += " *";
    winval += " (modified)";
}
pDoc->SetTitle(tabval);    // set tab title on CDocument
于 2013-05-05T08:12:59.690 に答える
0

私は過去に同様の問題を抱えていました。メイン ウィンドウのタイトル テキストが元に戻る原因は、関数CFrameWndEx::OnUpdateFrameTitleです。仮想であるため、独自の派生クラスでオーバーライドして、必要な動作を実現できます。それは私のために働いた解決策です。

于 2016-02-19T01:15:45.177 に答える