2016-01-13 115 views
3

後不同的對話框邊框我剛纔移植從Visual Studio 6一個基於對話框的MFC程序到Visual Studio 2013年沒有發生重大問題,並在程序運行VS下完美編譯一次2013年從Visual Studio 6代碼移植到Visual Studio 2013

唯一明顯的區別是對話框的邊框(請參閱Windows 7下的下面進行截屏)的厚度。

enter image description here

更多的事實:

  • 這不是一個明顯的問題,在新舊版本都體現是嚴格相同的。
  • 的.RC沒有被VS2012項目轉換過程中搞砸了。如果我用VS6再次編譯轉換後的項目,我會得到精簡的邊框。
  • 我可以在Visual Studio中再現與新鮮嚮導生成程序的問題6.
  • AfxMessageBox所示的消息框也具有薄邊界時VS6和編譯 與VS2013當粗邊框編譯。
+0

在新版本的Windows,爲邊框厚度的系統參數被斷成兩截。這一變化的向上兼容性在微軟方面沒有得到充分考慮。很可能VS2013正確補償變化,而VS6不補償。 –

+0

@MarkRansom您能更具體地瞭解您所寫的關於邊界思考的東西嗎?即使是使用原始':: MessageBox'顯示的消息框也表現出這種行爲差異;這就像是有一些應用程序的廣泛設置被應用在某種程度上 - 有[另一個SO問題](http://stackoverflow.com/questions/34768621/win32-control-distortion-in-visual-studio-2013)處理類似問題。 –

+2

我想到的參數是'SM_CXPADDEDBORDER',當VS6出來時它不存在。我現在沒有更多的信息,對不起 - 如果我做了,我會留下一個答案。如果有幫助,我認爲VS6邊框太薄,VS2013邊框是正確的。 –

回答

2

我也經歷過類似的問題,它與PE header的子系統標誌有關。

我需要調試Windows有點找到原因:功能win32k!_GetWindowBorders檢查PE標誌6.0(可能支持新標誌SM_CXPADDEDBORDER)。

參見: