2015-10-23 76 views
1

我有一個MDI應用程序。它已經發展了多年。在Windows 7上,一切看起來都是原生的。當我在windows-10上啓動應用程序時,普通對話框將具有windows-10的外觀。但所有的孩子的意見仍然有Windows-7的外觀&的感覺。CMDIChildWnd外觀和感覺在Windows-10

我試圖從CMDIChildWnd更改爲CMDIChildWndEx,但它沒有區別於窗口外觀&的感覺(圍繞客戶端矩形的另一種邊框風格除外)。我不想將所有子視圖更改爲停靠窗格,因爲它會改變用戶體驗。我只是想讓本土看起來&感覺對於孩子的意見。

這甚至可能嗎?我可以輕鬆遷移到docker窗口並將它們配置爲像普通窗口一樣運行(完全沒有對接功能,最小/最大/恢復按鈕)?

回答

0

默認情況下沒有完成。 MDI子窗口的默認實現只是以舊樣式繪製窗口。

查看MFC下一個東西的源代碼時,應該可以通過OnNcPaint實現它。

CMDIChildWndEx已經實現了OnNcPaint。並且,當您使用CMFCVisualManager :: GetInstance() - > IsOwnerDrawCaption()時返回TRUE的樣式時,標題和框架已由可視管理器繪製。

所有組件都在那裏。也許這足以迫使m_Impl.OnNcPaint始終被調用。因此,創建您自己的MDI Child窗口類並強制MDI系統使用它。 (請參閱您的文檔模板類)。

如果這還不夠,您可以調用可視化器的所有組件來自行繪製框架。 PS:我剛剛在BCG實現中重新檢查過它,並且可以讓我以不同的風格顯示MDI子窗口。

+0

對不起,你提到的BCG實現是什麼?我可以在那裏看到一個例子嗎?感謝您的回答,我會嘗試一下 –

+0

BCG只是微軟提供的產品,用於實現VS-2010中引入的新MFC-Next東西。這只是一個評論,我如何檢查解決方案。您可以在void CMDIChildWndEx :: OnNcPaint()中找到當前的實現。你有源代碼! – xMRi