Форум: "Основная";
Текущий архив: 2007.02.25;
Скачать: [xml.tar.bz2];
ВнизФорма всегда поверх рабочего стола Найти похожие ветки
← →
Грибоед (2006-12-28 23:06) [0]Нужно сделать так чтобы главная форма приложения всегда находилась поверх рабочего стола и не сворачивалась при нажатии кнопки "свернуть все окна", а так же не выходила на передний план, когда пользователь делает её активной. То есть, попросту говоря, форма всегда должна висеть над рабочим столом ниже всех окон и не сворачивается в панель задач.
Подскажите, как можно подобное реализовать?
← →
GrayFace © (2006-12-29 13:25) [1]Попробуй поместить внутрь рабочего стола:
windows.SetParent(Handle, FindWindow("Progman", nil));
← →
Elen © (2006-12-29 16:03) [2]
> Попробуй поместить внутрь рабочего стола:
... и запретить кнопки сворачивания ;)
← →
Грибоед (2007-01-06 18:11) [3]Мне удалось найти решение...
Форма всегда ниже всех окон:
protected
procedure WndProc(var Message:TMessage); override;
...
procedure TForm1.WndProc(var Message: TMessage);
begin
if Message.Msg = WM_WINDOWPOSCHANGING then begin
with PWindowPos(Message.lParam)^ do begin
if FormStyle = fsStayOnTop then hwndInsertAfter := HWND_TOPMOST
else hwndInsertAfter := HWND_BOTTOM;
end;
end;
inherited;
end;
Запрещаем сворачивание формы при нажатии кнопки "Свернуть все окна":
Windows.SetParent(Form1.Handle, FindWindowEx(FindWindowEx(FindWindowEx(GetDesktopWindow, 0,"Progman","Program Manager"), 0, "SHELLDLL_DefView", nil), 0, "SysListView32", nil));
← →
antonn © (2007-01-06 22:08) [4]Грибоед (06.01.07 18:11) [3]
Windows.SetParent(Form1.Handle, FindWindowEx(FindWindowEx(FindWindowEx(GetDesktopWindow, 0,"Progman","Program Manager"), 0, "SHELLDLL_DefView", nil), 0, "SysListView32", nil));
останется отработать случай, когда explorer перезагрузится:)
← →
Грибоед (2007-01-07 03:02) [5]> останется отработать случай, когда explorer перезагрузится:)
А как узнать что explorer перезагрузился?
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2007.02.25;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.042 c