Вниз
Скачать: CL | DM;

Как в 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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.012 c
14-55714
Мазут Береговой
2003-07-01 19:03
2003.07.17
Притча от Мазута. Быль. 20 век.


6-55693
baracuda
2003-05-12 16:47
2003.07.17
send mail


6-55703
sfairat
2003-05-11 00:26
2003.07.17
http-server


14-55827
yura
2003-07-01 05:12
2003.07.17
Почта


3-55402
DBDev
2003-06-23 16:02
2003.07.17
Коллеги, помогите с запросом ПЛИЗ!!!




   Наверх