![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
BOTTOMMOST OKHO [D3, Win2k]
Шубин С. © (2004-06-01 23:14:00)Здравствуйте!
Мне нужно сделать окно, которое должно находиться под всеми окнами, даже если оно активно. Я нашел вот что:
procedure WMWindowPosChanging(var Message:TWMWindowPosChanging);
message WM_WINDOWPOSCHANGING;
//а вот это в implementation
procedure TForm1.WMWindowPosChanging(var Message:TWMWindowPosChanging);
begin
with message.WindowPos^ do flags:=flags or SWP_NOZORDER;
inherited;
end;
НО! Как это сделать без VCL?
Заранее благодарен, Шубин С.
DVM (2004-06-02 20:49:00) [1]
> ХВНД окна на таскбаре НЕ СОВПАДАЛ с ХВНД видимого окна.
> Может быть поэтому эта ф-ция и не работает для ВЦЛ.
Да, я знаю, из-за скрытого окна объекта Application она не работает.
> Прошу прощения за ТРАНСЛИТ. У меня почему-то в ХР раскладка
> перестала переключаться, а копи/пасте задолбался делать...
PuntoSwitcher поставь.:) Глюк часто возникает, когда с эксплорером экспериментируют.
Шубин С. (2004-06-02 20:28:00) [2]Благодарю! А с VCL она не работает может быть вот почему:
Я написал приложение, которое показывает список окон, которые находятся на таскбаре в виде кнопок. Всё бы хорошо, но мне нужно было определить еще и активное приложение. Так получилось вот что: какая-то ВинАПИ функция возвращает ХВНД активного окна, и для не-ВЦЛ приложений этот ХВНД совпадал с тем ХВНД, окно которого было на таскбаре, а для ВЦЛ ХВНД окна на таскбаре НЕ СОВПАДАЛ с ХВНД видимого окна. Может быть поэтому эта ф-ция и не работает для ВЦЛ.
З.Ы.
Прошу прощения за ТРАНСЛИТ. У меня почему-то в ХР раскладка перестала переключаться, а копи/пасте задолбался делать...
DVM (2004-06-02 20:11:00) [3]
> Что она будет делать при запущенном Эксполрером?
Ничего не будет. Без эксплорера закрепит окно на заднем плане.
С VCL не работает, кстати.
Шубин С. (2004-06-02 19:33:00) [4]To DVM:
Большое спасибо за ответ.
Сейчас проверю.
А что делает функция SetShellWindow?
Что она будет делать при запущенном Эксполрером?
А без него?
З.Ы.
Простите за назойливость...
Sceptic (2004-06-02 19:29:00) [5]To Gero:
Я вот тоже хочу узнать...
DVM (2004-06-02 19:22:00) [6]
> А SetShellWindow я почему-то в MSDN'e не нашел, хотя многие
> на неё отсылают..
function SetShellWindow(hWnd: HWND): dword; stdcall; external 'User32.dll' name 'SetShellWindow';
DVM (2004-06-02 19:08:00) [7]WM_WINDOWPOSCHANGING:
begin
PWindowPos(lParam)^.flags:= PWindowPos(lParam)^.flags or SWP_NOZORDER;
Result:=0;
end
Gero (2004-06-02 18:08:00) [8]
> Не поверю, что глубокоуважаемые Мастера Delphi не знают,
> что на самом деле делает VCL...
А Вы раскроете мне эту тайну?
Что же на самом деле делает VCL?
Я хоть и не мастер, но все равно интересно.
Sceptic (2004-06-02 18:03:00) [9]Не поверю, что глубокоуважаемые Мастера Delphi не знают, что на самом деле делает VCL...
Шубин С. (2004-06-02 17:31:00) [10]Так же - не получается.
( я пробовал вот как:
WM_WINDOWPOSCHANGING:
WINDOWPOS * ppos = (WINDOWPOS*) lparam;
ppos->flags |= SWP_NOZORDER;
Не работает. Поэтому такой вопрос и задал.
)
А SetShellWindow я почему-то в MSDN'e не нашел, хотя многие на неё отсылают..
DVM (2004-06-01 23:49:00) [11]Да так же. Вы меня извините, но раз вы пишете на API, то в сообщениях надо же разбираться чуть чуть.
А еще советую поискать в сторону SetShellWindow()
DVM (2004-06-01 23:47:00) [12]Да так же. Вы меня извините, но раз вы пишете на API, то в сообщениях надо же разбираться чуть чуть.
А еще советую поискать в сторону SetShellWindow()