Максимизация окон под моей формой

У меня есть панель инструментов, которая всегда находится сверху (самый верхний = true), но когда я разворачиваю другие программы, верхняя часть их окон скрыта за ней. Я хочу, чтобы они максимизировались ПОД моей панелью инструментов, чтобы я мог закрыть / свернуть их и т. Д. Как перевернутая панель задач, буквально меняющая рабочую область экрана ...

Это возможно? Я видел это в "Cairo Shell".


person Ash    schedule 24.03.2011    source источник
comment
Вы имеете в виду, что вам нужно окно, которое пристыковывается к боковой части рабочего стола?   -  person Dan Puzey    schedule 24.03.2011


Ответы (2)


Я не думаю, что вы добьетесь успеха, используя свойство TopMost формы. Вместо этого вам может понадобиться использовать вызов API WIN32 SetWindowPos().

[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, SetWindowPosFlags uFlags);
static readonly IntPtr HWND_TOPMOST = new IntPtr(-1);
person Anuraj    schedule 24.03.2011
comment
Спасибо за это, пришлось искать vb и т. д., но получил то, что мне было нужно. Очень признателен. - person Ash; 24.03.2011

Если вы хотите зарезервировать область на рабочем столе для своей программы и сделать так, чтобы все другие программы не использовали эту область при развертывании, вам необходимо зарегистрировать свое приложение в списке панели приложений Windows с помощью API SHAppBarMessage.

Я не нашел хорошего кода для этого в .Net, но если вы погуглите, возможно, вам повезет.

Вот один из них: http://www.tek-tips.com/viewthread.cfm?qid=1202570&page=1

person Stefan    schedule 24.03.2011