0

我调用这些 User32.DLL API 调用来嵌入一个窗体窗体作为另一个窗口的子窗口......

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 颜色来显示标题栏,而不是新的 Windows 8 颜色。

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

有人知道如何在我的子窗口中获得 Windows 8 样式吗?

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

非常感谢

4

1 回答 1

0

我最终做的是这样的:

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

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

ParentForm.Controls.Add(ChildForm)

这似乎工作得更好一点,关于焦点和激活哪个窗口的奇怪副作用更少。

于 2012-10-31T15:22:36.673 回答