0

これらの 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 が呼び出されたこれらのウィンドウのスタイルが少し奇妙に見えることに気付きました。新しい Windows 8 の色ではなく、古い SystemColors.ActiveCaption および SystemColors.ActiveCaptionGradient の色を使用してタイトルバーを表示しているようです。

これにより、子ウィンドウが少し奇妙に見えます。

子ウィンドウで Windows 8 スタイルを取得する方法を知っている人はいますか?

注: Windows 7 でも同じだと思います。

どうもありがとう

4

1 に答える 1

0

私がやったことはこれです:

  • 開いているフォームを境界線なしに設定する
  • 2 番目の「ホスト」フォームには、境界線はありませんが、Win7/Win8 のタイトル バーとウィンドウの閉じるボタンのように見えるいくつかのラベルとボタンが端に付いています。
  • ホスト フォームのパネルに最初のフォームを追加します (パネル内を埋めるためにドッキングされます)。
  • ユーザーがフォームの端を使用してフォームのサイズを変更できるように、マウス ダウン時にいくつかのコードを追加しました。

また、SetWindowLong API 呼び出しの使用をやめ、これを実行しました。

ParentForm.Controls.Add(ChildForm)

これは、フォーカスとアクティブ化されたウィンドウに関する奇妙な副作用が少なく、少しうまく機能しているように見えました。

于 2012-10-31T15:22:36.673 に答える