Форум: "KOL";
Текущий архив: 2003.07.17;
Скачать: [xml.tar.bz2];
ВнизКак в KOL Найти похожие ветки
← →
Ал (2002-11-13 15:45) [0]Чтобы родительским было окно рабочего стола и само окно ничем не сворачивалось (в т. ч. кнопкой "Свернуть все окна" и Win-клавишей + D).
В VCL это несложно.
procedure TForm1.Button1Click(Sender: TObject);
var h:Integer;
begin
h := FindWindow("ProgMan", nil);
if h = 0 then exit;
Windows.SetParent(Handle, h);
end;
procedure TForm1.WMWinPosChanging(var Message: TWMWINDOWPOSCHANGING);
begin
Message.WindowPos^.flags := Message.WindowPos^.flags and not SWP_HIDEWINDOW;
inherited;
end;
В KOL ничего не получается.
По совету Gandalfa:
function TForm1.KOLForm1Message(var Msg: tagMSG;
var Rslt: Integer): Boolean;
var
Message:TWMWINDOWPOSCHANGING;
begin
Result := false;
case msg.message of
WM_WINDOWPOSCHANGING:
begin
Message:=TWMWINDOWPOSCHANGING(Pointer(msg.lParam)^);
// Следующий оператор не работает - ломается в RunTime.
// Message.WindowPos^.flags := Message.WindowPos^.flags and not SWP_HIDEWINDOW;
// Что делать?
inherited;
end;
end; // case
end;
Уважаемые мастера, по возможности, напишите работающий код. Я в KOL недавно.
← →
Ал (2002-11-13 15:50) [1]StayOnTop, вероятно, не подходит - другие приложения вполне могут (и должны) перекрывать это окно.
← →
Gandalf (2002-11-13 16:20) [2]
> Message:=TWMWINDOWPOSCHANGING(Pointer(msg.lParam)^);
> // Следующий оператор не работает - ломается в
> RunTime.
> // Message.WindowPos^.flags := Message.WindowPos^.flags
> and not SWP_HIDEWINDOW;
> // Что делать?
Ошибочка вышла (память она не резиновая, иногда что нибуть да забудешь), тип перепутал, потому чтение за пределами памяти :(, надо так:
function TForm1.KOLForm1Message(var Msg: tagMSG;
var Rslt: Integer): Boolean;
var
Message:PWindowPos;
begin
Result := false;
case msg.message of
WM_WINDOWPOSCHANGING:
begin
Message:=PWindowPos(msg.lParam);
// Следующий оператор не работает - ломается в RunTime.
// Message.WindowPos^.flags := Message.WindowPos^.flags and not SWP_HIDEWINDOW;
Message.flag:=Message.flags and not SWP_HIDEWINDOW;
// Что делать?
inherited; // вот inherited я твой не пойму
end;
end; // case
end;
Теперь кажысь верно.
← →
Ал (2002-11-13 16:47) [3]Извините, Gandalf, хотя ничего не ломается - окно все равно сворачивается и кнопкой "Свернуть все окна" и Win + D.
Флаги то изменили, но обрабатывается ли все это?
Есть ли другой способ предотвратить сворачивание окна сообщением WM_WINDOWPOSCHANGING?
Страницы: 1 вся ветка
Форум: "KOL";
Текущий архив: 2003.07.17;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c