winapiを使用して、外部ウィンドウのすべての境界線を完全に削除しようとしています。外部ウィンドウの境界を完全に削除する
は、今のところ私はこのコードを使用することにより、以下の結果を達成した:
public static int GWL_STYLE = -16;
public static int WS_BORDER = 0x00800000; //window with border
public static int WS_DLGFRAME = 0x00400000; //window with double border but no title
public static int WS_CAPTION = WS_BORDER | WS_DLGFRAME; //window with a title bar
private const int WS_SYSMENU = 0x00080000; //window with no borders etc.
private const int WS_MAXIMIZEBOX = 0x00010000;
private const int WS_MINIMIZEBOX = 0x00020000; //window with minimizebox
public static void HideWindowBorders(IntPtr hWnd)
{
int style = GetWindowLong(hWnd, GWL_STYLE); //gets current style
SetWindowLong(hWnd, GWL_STYLE, (style & ~WS_CAPTION)); //removes caption from current style
}
これは、キャプションと(妙にのみウィンドウをリサイズ後の)最小/最大/クローズボタンを削除します。ただし、ウィンドウのサイズ変更を可能にする細い枠線は削除されません。
どのように枠線を削除できますか?
WS_THICKFRAMEウィンドウスタイルをクリアしましたか?ウィンドウが "サイズ変更"ボーダーを持っているかどうかを制御しています。限り、サイズ変更後に変更する限り、ウィンドウの非クライアント領域を無効にする必要があります。 p/RDW_FRAMEフラグを指定してRedrawWindow()を呼び出してみてください。 – Tim
@Tim:いいえ、[documentation](https://msdn.microsoft.com/en-us/library/windows/desktop/ms644898.aspx)に従い、[SetWindowPos](https:// msdn新しいフレームスタイルを適用するには、マイクロソフトのWebサイト(.microsoft.com/ja-jp/library/windows/desktop/ms633545.aspx)を参照してください。 – IInspectable