调用SetParent使用现代窗口颜色停止表单

时间:2012-10-09 15:05:00

标签: .net winapi

我调用这些User32.DLL API调用将windows窗体窗体嵌入另一个窗口的子窗口...

SetWindowLong(frm.Handle.ToInt32, GWL_STYLE, WS_CHILD Or WS_DLGFRAME Or WS_BORDER)
SetParent(frm.Handle.ToInt32, m_intOldParent)

我在Windows 8中注意到这些具有SetParent的窗口的样式看起来有点奇怪,它们似乎使用旧的SystemColors.ActiveCaption和SystemColors.ActiveCaptionGradient颜色来显示Titlebar而不是新的Windows 8色。

这让我的孩子的窗户看起来有点奇怪。

任何想法如何在我的孩子的窗户中获得Windows 8风格?

注意:想想它在Windows 7中也是一样的。

非常感谢

1 个答案:

答案 0 :(得分:0)

我最终做的是:

  • 将我打开的表单设置为无边框
  • 第二个“主机”表单也没有边框,但边缘周围有一些标签和按钮,看起来有点像Win7 / Win8 标题栏和窗口关闭按钮。
  • 将第一个表单添加到主机表单上的面板(停靠以填充面板内)
  • 在鼠标按下时添加了一些代码,允许用户使用表单边缘
  • 调整表单大小

我也停止使用SetWindowLong API调用,只是这样做:

ParentForm.Controls.Add(ChildForm)

这似乎有点好用,焦点较少的奇怪副作用以及哪个窗口被激活。