Я пытаюсь полностью удалить все границы внешнего окна с помощью 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/invoke RedrawWindow() с флагом RDW_FRAME. – Tim
@Tim: Нет, вам нужно выполнить [документацию] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms644898.aspx) и вызвать [SetWindowPos] (https: // msdn .microsoft.com/en-us/library/windows/desktop/ms633545.aspx) для новых стилей фрейма. – IInspectable