我打开一个窗口在0,0。 当航空和窗口阴影被禁用时,这工作得很好。 如果启用了窗口阴影,则窗口边框(和标题)的一部分隐藏在桌面左上angular左上方的上方。
有没有办法来检测阴影是否打开,以及需要多less像素来调整窗口位置?
我已经尝试了GetSystemMetrics()中几乎所有可用的东西,而且没有任何意义。
创buildWindows用户编程,不用硬编码密码
LoadFrame(MFC)仅在澳大利亚失败
IAT挂钩但挂钩function没有被调用
Linux上的POSIX函数“stat”的定义在哪里?
我可以不使用pinvoke在C#中获取系统颜色的RGB?
Visual Studio 2008错误c2039:'set_new_handler':不是'std'的成员
我包括错了什么? undefined引用al_init_image_addon错误,
航空谎言在窗口位置。 这是一个很重要的应用程序兼容功能,窗口边界已经有相同的宽度很长一段时间。 这是不可持续的,在Vista时代,重要的是不要将窗口边界变成一个像素宽。 显示器技术的进步,有一个1600×900分辨率的显示器(我的笔记本电脑)并不非凡。 将鼠标光标移动到我的键盘上,使其达到一个像素,使窗口变宽。
所以Vista中一个很大的设计目标就是创建具有很好的边框的窗口。 轻松击中我的鼠标垫。
然而,这引起了一个令人讨厌的应用程序compat问题,有很多软件用CreateWindows / Ex()创建一个窗口来指定窗口的外部大小。 客户区域加上边界。 发胖现在是一个问题,它不会使窗口更大,它使客户区域更小 。 不好的是,客户区域是您填写内容和/或控制窗口时的重要因素。 在那里有一个巨大的计划,希望从一个给定的外部窗口大小有一定规模的客户区域。 截断的控件和滚动条(如果你幸运的话)将会猖獗。
Vista程序员可以做的唯一合理的事情就是保持客户端的大小,并将窗口延伸到所要求的边界之外。 没有应用程序要求。 当应用程序询问GetClientRect()时,必须伪装它。
修复这种行为是可能的,你必须告诉Vista你知道它的行为。 不幸的是,这从C ++项目设置中是不可用的。 您必须运行editbin.exe /子系统来告诉您在后期构建事件中与6,0兼容。 副作用是它不能在XP和更早的版本上运行。 这不是一个明显的选择是非常非常草率的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。