2013-05-04 39 views
0

我有使用MFC功能包編寫的應用程序。它使用文檔/視圖。由於這些類是從「正常」MFC類派生的,因此這些問題可能不是Feature Pack的特定功能。VS 2008 MFC功能包 - 我如何

當做出改變,我一個星號*添加到標籤上的名稱,並使用下面的代碼字(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); 

但標籤之間切換時,該原文返回。第一個問題:我如何使變化變得粘稠?

第二個問題:左側有一個樹形視圖,右側有一個屬性窗口。在它們之間切換(un)突出顯示標題欄以顯示哪一個是活動的。用戶也可以激活文檔窗口並與其交互,但似乎沒有任何方式可以給出視覺反饋,即文檔窗口實際上是活動的。我怎樣才能做到這一點?

回答

0

目前尚不清楚你的變量是什麼類型的,但你有pDocframe,我假設前者是你CDocument派生類,而後者可能是一個CFrameWndCMDIFrameWnd派生類。

如果我不遠矣,那麼爲什麼標籤的標題都沒有堅持的理由是,你應該在CDocument這是每個標籤查看後面叫SetTitle,所以像

tabval = "Report_" + pDoc->rptData.reportId.Strip(); 
winval = tabval; 
if (changed) { 
    tabval += " *"; 
    winval += " (modified)"; 
} 
pDoc->SetTitle(tabval); // set tab title on CDocument 
+0

照顧了選項卡,但主窗口標題只有'*'而不是'(修改)'。如果有必要,我可以接受這一點,但有什麼方法可以覆蓋它嗎?謝謝! – 2013-05-05 17:47:02

+0

我做了一些挖掘工作,並且發現了幾種修改主窗口標題的方法,但它們都相當參與,不值得麻煩。 – 2013-05-05 18:45:10

0

我過去也有類似的問題。主窗口標題文本改回的原因是功能CFrameWndEx::OnUpdateFrameTitle。由於它是虛擬的,你可以在你自己的派生類上覆蓋它以獲得你想要的行爲。這是一個爲我工作的解決方案。