[c# winforms] Sizable form without caption

ruben-69

Необходимо сделать форму с изменяемыми размерами(за границы двигать is true но без заголовка, сохраняя при этом контекстное меню в основном тулбаре(уменьшить, увеличить, раскрыть, закрыть..).
Проблема в том, что если поставить состояние в None (это без границ то ни подвигать, ни меню.
По-другому убрать caption не получается.
Вот тут http://channel9.msdn.com/forums/TechOff/250417-Hide-window-caption-in-c/ предлагают как бы решение:
//Finds a window by class name
[DllImport("USER32.DLL")]
public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
//Sets a window to be a child window of another window
[DllImport("USER32.DLL")]
public static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
//Sets window attributes
[DllImport("USER32.DLL")]
public static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);
//Gets window attributes
[DllImport("USER32.DLL")]
public static extern int GetWindowLong(IntPtr hWnd, int nIndex);
//assorted constants needed
public static int GWL_STYLE = -16;
public static int WS_CHILD = 0x40000000; //child window
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
/*
 This function sets the parent of the window with class
 ClassClass to the form/control the method is in.
*/
public void Reparent
{
//get handle of parent form (.net property)
IntPtr par = this.Handle;
//get handle of child form (win32)
IntPtr child = FindWindow("ClassClass", null);
//set parent of child form
SetParent(child, par);
//get current window style of child form
int style = GetWindowLong(child, GWL_STYLE);
//take current window style and remove WS_CAPTION from it
SetWindowLong(child, GWL_STYLE, (style & ~WS_CAPTION;
}

Но я никак не придумаю, как бы его прикрутить, чтобы заработало.
Вопрос раз: как решить проблему?
Вопрос два: можно ли прикрутить данный вариант к форме(пустой, новосозданной чтобы получилось то, что хочется.

ruben-69

забила.
взяла более простое решение:
if ( WindowState != FormWindowState.Maximized )
{
this.ControlBox = false;
this.Text = String.Empty;
this.WindowState = FormWindowState.Maximized;
}
else
{
this.ControlBox = true;
this.Text = "Hey";
this.WindowState = FormWindowState.Normal;
}

Alexander08

ты монстр :ooo:
Оставить комментарий
Имя или ник:
Комментарий: