在我的MDI應用我加載一個DialogBar在mainframe.But我想表明DialogBar當一些子窗口被調用(GroupView,TrendView)。對於其他窗口應該被隱藏(GraphView)因此,用於從CMainFrame調用子窗口的所有函數都像這樣隱藏了DialogBar。類名在MFC
void CMainFrame::OnGroupview()
{
.
.
.
m_RecentAlarms.ShowWindow(SW_HIDE);
}
對於一些觀點
void CMainFrame::OnGroupview()
{
.
.
.m_RecentAlarms.ShowWindow(SW_SHOW);
}
所以,當我點擊TrendView我得到的DialogBar,當我點擊GraphView的DialogBar被hidden.But當我再次點擊TrendView我沒有得到Dialogbar。因爲應用程序是多個窗口。以前的TrendView位於GraphView的後面,當我調用它時顯示在前面。
所以我的想法是我在Mainframe中有一個線程,這個函數更新了所有視圖中的一些值。在那我將檢查Active View是否是TrendView,如果是這樣的話那麼DialogBar會顯示爲其他方式,隱。
我用這個..
CMDIChildWnd* pChild = ((CMainFrame*)AfxGetMainWnd())->MDIGetActive();
但我不知道如何得到活動視圖是TrendView只有....
請幫助我在這個問題上。
如果比較的不是一個具體實例,但只是視圖類型,那麼我建議這個答案! –
我用這個代碼..它顯示了像這樣使用的MDIGetActive()中的錯誤** CMDIFrameWnd * pMainWnd =(CMDIFrameWnd *)AfxGetApp() - > m_pMainWnd; CMDIChildWnd * pChild =(CMDIChildWnd *)pMainWnd-> GetActiveFrame(); CView * pView =(CView *)pChild-> GetActiveView(); if(NULL!= pView)**但pView返回NULL.Im在MainFrame類中使用這段代碼。 – Anu