Как сделать окно, которое не имеет перемещения строки заголовка - PullRequest
1 голос
/ 22 августа 2009

Существует ли какой-либо элемент управления, который может перемещать окно без строки заголовка (верхняя часть) / без рамки вообще.

Я делаю приложение для заметок, как вы знаете, поэтому я хочу, чтобы оно было компактным.

Ответы [ 4 ]

4 голосов
/ 22 августа 2009

Вам необходимо вернуть HTCAPTION из WM_NCHITTEST в вашем WndProc:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }
    const int WM_NCHITTEST = 0x0084;
    const int HTCLIENT = 1;
    const int HTCAPTION = 2;
    protected override void WndProc(ref Message msg)
    {
        base.WndProc(ref msg);
        if (msg.Msg == WM_NCHITTEST && msg.Result == (IntPtr)HTCLIENT)
        {
            msg.Result = (IntPtr)HTCAPTION;
        }
    }
}

Это заставит клиентскую область вашего окна Windows казаться панелью заголовка.

3 голосов
/ 23 августа 2009

Я написал для этого компонент, вы можете найти его здесь .

Может использоваться для перемещения любого элемента управления, а не только окна. Вы можете явно использовать его в коде или просто перетащить его на поверхность конструктора и установить свойство EnableDragMove в окне или элементе управления, как показано ниже:

Screenshot

0 голосов
/ 23 августа 2009

Если вы собираетесь создавать приложение с нуля, я бы порекомендовал создать его с помощью WPF.

Тодд Миранда прекрасно демонстрирует создание приложения, похожего на гаджет, на windowsclient.net.

Ссылка на демонстрацию: http://windowsclient.net/learn/video.aspx?v=5177

0 голосов
/ 22 августа 2009

Попытка сделать что-то подобное, прежде чем я скажу вам, что это не особенно легко. То, что вам нужно сделать, предоставляется в событии OnMouseDown / OnMouseMove / OnMouseUp самой форме (или некоторому элементу управления в форме), которая обновляет позицию элемента управления, когда пользователь щелкает и перетаскивает. Насколько мне известно, нет встроенного элемента управления, который позволит вам щелкнуть и перетащить окно, отличное от заголовка.

...