MFC窗口边框问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC窗口边框问题相关的知识,希望对你有一定的参考价值。

个性化设置主题是属于DWM里面的吗?我在window areo主题上正常显示无标题栏的窗口,但是在其他主题就不行,边框是透明的。放大缩小后有其它图像的残影
不同的个性化设置的主题效果不同,如何调节一样的?

参考技术A 试一试设置为无边框窗口。

MFC 为 WS_CHILD 窗口添加细边框

【中文标题】MFC 为 WS_CHILD 窗口添加细边框【英文标题】:MFC Add thin border to WS_CHILD window 【发布时间】:2016-08-22 09:10:41 【问题描述】:

如何将边框添加到具有 (WS_CHILD | DS_CONTROL) 样式的嵌入式子窗口,该样式由 CFormView 冲洗?

我尝试通过选择Thin 边框类型在对话框编辑器中添加边框,但它不起作用。

我也试过SetWindowLongModifyStyle。但结果是,添加了 WS_BORDER 样式但仍然没有边框。

是否可以通过选择样式为嵌入的子窗口添加边框?还是我自己画?

谢谢, 关

【问题讨论】:

来自SetWindowLongPtr:“某些窗口数据被缓存,因此您使用SetWindowLongPtr所做的更改在调用SetWindowPos函数之前不会生效。” 需要将SWP_DRAWFRAME 传递给SetWindowPos。 @IInspectable 谢谢!我将我的代码更改为ModifyStyle(0, WS_BORDER, SWP_DRAWFRAME),它现在可以工作了。 (SetWindowPos 在内部由 ModifyStyle 调用)。 你应该把它写下来作为答案。如果您想知道是否可以,请参阅Can I answer my own question?。 【参考方案1】:

正如@IInspectable 指出的那样,更改窗口样式后需要将SWP_DRAWFRAME 传递给SetWindowPos

我最终选择ModifyStyleWS_BORDER 添加到我的WS_CHILD 窗口并将SWP_DRAWFRAME 标志传递给第三个参数:m_wndMainPage.ModifyStyle(0, WS_BORDER, SWP_DRAWFRAME)。它在内部调用SetWindowPos 并更新子窗口。窗口边框按预期绘制。

【讨论】:

以上是关于MFC窗口边框问题的主要内容,如果未能解决你的问题,请参考以下文章

MFC 为 WS_CHILD 窗口添加细边框

MFC中无边框窗口的拖动 怎么添加WM_NCLBUTTONDOWN消息映射

猎豹MFC--拖动无边框窗体

VC/MFC 无边框鼠标拉伸改变窗口大小

如何去除窗口客户区的边框?

MFC 调整大小对话框和子窗口绘制问题