【问题标题】:MFC Add thin border to WS_CHILD windowMFC 为 WS_CHILD 窗口添加细边框
【发布时间】: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?

标签: mfc dialog childwindow


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2018-04-22
    • 1970-01-01
    • 1970-01-01
    • 2018-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-20
    • 2015-02-05
    相关资源
    最近更新 更多