MFC窗口边框问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC窗口边框问题相关的知识,希望对你有一定的参考价值。
个性化设置主题是属于DWM里面的吗?我在window areo主题上正常显示无标题栏的窗口,但是在其他主题就不行,边框是透明的。放大缩小后有其它图像的残影
不同的个性化设置的主题效果不同,如何调节一样的?
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
边框类型在对话框编辑器中添加边框,但它不起作用。
我也试过SetWindowLong
和ModifyStyle
。但结果是,添加了 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
。
我最终选择ModifyStyle
将WS_BORDER
添加到我的WS_CHILD
窗口并将SWP_DRAWFRAME
标志传递给第三个参数:m_wndMainPage.ModifyStyle(0, WS_BORDER, SWP_DRAWFRAME)
。它在内部调用SetWindowPos
并更新子窗口。窗口边框按预期绘制。
【讨论】:
以上是关于MFC窗口边框问题的主要内容,如果未能解决你的问题,请参考以下文章