Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.17;
Скачать: 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 вся ветка

Текущий архив: 2003.07.17;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.018 c
3-55418
AkaSaint
2003-06-21 15:36
2003.07.17
TDataSetProvider.UpdateMode = upWhereKeyOnly не действует


14-55744
vopros
2003-06-30 11:49
2003.07.17
Какую карту видео лучше купитб до 90$


1-55538
3APA3A
2003-07-05 14:16
2003.07.17
Доступ к


1-55535
Salvator
2003-07-05 13:13
2003.07.17
Работа с Word с помощью DLL


14-55846
Kair
2003-06-30 09:52
2003.07.17
Кольцо Kair a