2016-01-13 81 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)。

参见: