Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.12.11;
Скачать: CL | DM;

Вниз

Как сделать мою форму позади всех?   Найти похожие ветки 

 
NikNet ©   (2005-09-26 16:47) [0]

А также как сделать что  бы при сворачиваний
сворачивоалсь не в TaskBar?


 
umbra ©   (2005-09-26 16:52) [1]

а куда?


 
NikNet ©   (2005-09-26 17:02) [2]

// umbra ©   (26.09.05 16:52) [1]

Как  MDI формы... (Как WORD) в угол.


 
DVM ©   (2005-09-26 17:27) [3]


>  Как сделать мою форму позади всех?

SetShellWindow() или WM_WINDOWPOSCHANGING


> А также как сделать что  бы при сворачиваний
> сворачивоалсь не в TaskBar?

SetShellHookWindow() + HSHELL_GETMINRECT


 
umbra ©   (2005-09-26 19:05) [4]

Принцип такой (спасибо aplet за информацию):

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type
 TForm1 = class(TForm)
 private
   { Private declarations }
   procedure SysCommand(var Msg: TWMSysCommand); message WM_SYSCOMMAND;
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

{ TForm1 }

procedure TForm1.SysCommand(var Msg: TWMSysCommand);
begin
 if (Msg.CmdType <> SC_MINIMIZE) and (Msg.CmdType <> SC_RESTORE) then
   inherited;
 if Msg.CmdType = SC_MINIMIZE then
     begin
       ClientHeight := 0;
       Width := 50;
       Left := 0;
       Top := Screen.Height - Height;
       WindowState := wsMinimized;
     end;
  if Msg.CmdType = SC_RESTORE then
     begin
       Top := 50;
       Left := 150;
       ClientHeight := 500;
       Width := 500;
       WindowState := wsNormal;
     end;
end;

end.

Но для кооректного восстановления окна надо еще где-то хранить информацию
о предыдущем состоянии, ну и остается иконка в панели задач.


 
NikNet ©   (2005-09-26 19:07) [5]

А как  все свернутые окна поместить в ToolBar? учытывая что Explorer(а) нет!


 
umbra ©   (2005-09-26 19:21) [6]


> Explorer(а) нет!

В каком смысле?


 
umbra ©   (2005-09-26 19:31) [7]

Если надо при сворачивании окон вообще их убирать и создавать соответствующие кнопки на тулбаре в другом окне, то тогда, в общем, делать надо не совсем так.


 
NikNet ©   (2005-09-26 20:25) [8]

umbra ©   (26.09.05 19:31) [7] А как?


 
DVM ©   (2005-09-27 10:30) [9]


> А как  все свернутые окна поместить в ToolBar? учытывая
> что Explorer(а) нет!

Я уже ответил, ты и будешь продолжать спрашивать тупо одно и то же?
Имхо за непосильную задачу взялся.

> учытывая что Explorer(а) нет!

На год работы примерно.


 
NikNet ©   (2005-09-27 13:36) [10]

DVM ©   (27.09.05 10:30) [9]

Хватит! Я уже нашол компонент ТаскБар точно такой же как и Винь
только вот приходится все что сверрху делать самому!

Сделал быстрый запуск программ! Теперь надо сделать
что бы все сворачивающие окна поподали в мой ТоллБар

Как это сделать!

И ещё из кокого контрола создан ТрайИкон?


 
Antonn ©   (2005-09-27 13:40) [11]

NikNet ©   (27.09.05 13:36) [10]
почему-то мне кажется, что для вас это задача, на данный момент, трудновата. может стоит написать блокнот?


 
DVM ©   (2005-09-27 13:43) [12]


> Теперь надо сделать
> что бы все сворачивающие окна поподали в мой ТоллБар
>
> Как это сделать!

HSHELL_GETMINRECT + WH_SHELL + RegisterShellHookWindow()

> И ещё из кокого контрола создан ТрайИкон?

Из чего сделан ТрайИкон я не знаю, потому как на таскбаре нет такого окна, а вот окно области уведомлений в Win2000/xp сделано из ToolBar, в Win98/95 это просто окно, безо всяких контролов иконки отрисовываются прямо на нем.

> только вот приходится все что сверрху делать самому!

Ну-ну. Зря ты меня не слушаешь, поверь уж мне, человеку много времени потратившему на написание шеллов, подобных эксплореру - непростая это задача.


 
umbra ©   (2005-09-27 13:49) [13]


> все сворачивающие окна поподали в мой ТоллБар



procedure TForm1.SysCommand(var Msg: TWMSysCommand);
begin
if (Msg.CmdType <> SC_MINIMIZE) then
  inherited;
if Msg.CmdType = SC_MINIMIZE then
    begin
       Hide;
       Enabled := false;
       {добавляем на тулбар кнопку и сохраняем где-нибудь ссылку на окно,
        соответствующее кнопке}
    end;
end;


После этого окно скроется (и из панели задач)  и перестанет обрабатывать сообщения.
Для кнопок на тулбаре в обработчике щелчка мышкой берем ссылку на соответствующее окно и пишем


procedure ToolButtonclick(............);
begin
 Windowref.Enabled := true;
 Windowref.Show;
end;


Но вообще-то работать все это должно только в винде (т.е. с эксплорером?). Не в винде обработчик сообщения должен быть другой (если вообще есть сообщения). нельзя ли подробней, что означает "нет эксплорера"?


 
DVM ©   (2005-09-27 13:52) [14]


> Но вообще-то работать все это должно только в винде (т.е.
>  с эксплорером?). Не в винде обработчик сообщения должен
> быть другой (если вообще есть сообщения). нельзя ли подробней,
>  что означает "нет эксплорера"?

Он хочет шелл (эксплорер) заменить своим. А за анимацию сворачивающегося окна в произвольный прямоугольник на экране отвечает именно структура передающаяся с HSHELL_GETMINRECT


 
NikNet ©   (2005-09-27 18:34) [15]

DVM ©   (27.09.05 13:43) [12]
Зря ты меня не слушаешь, поверь уж мне

Мог бы и поделится :(


 
DVM ©   (2005-09-28 10:16) [16]


> Мог бы и поделится :(

Советом пожалуйста, некоторыми функциями пожалуйста, но готовой разработкой - не вижу смысла ни для себя ни для тебя (половину там ты не поймешь все равно, без обид)


 
DVM ©   (2005-09-28 10:29) [17]


> NikNet ©  

вот готовый экзешник (не самый новый, но уже достаточно функциональный), пароль там 3141592653
Запускать лучше закрыв эксплорер, но можно и вместе с ним.
инсталляция как шелл myshell.exe -install, удаление myshell -uninstall

http://213.33.194.5/files/shell.zip


 
NikNet ©   (2005-09-29 06:19) [18]

DVM ©   (28.09.05 10:29) [17] Ну и какой толк от неё?
Может даш? Я разбирусь а как сделаю так и тебе дам (Исходник)

NikNet@yandex.ru


 
NikNet ©   (2005-10-02 12:29) [19]

DVM ©   (26.09.05 17:27) [3] А где взять этот SetShellWindow?


 
DVM ©   (2005-10-03 10:14) [20]


> NikNet ©   (02.10.05 12:29) [19]

function SetShellWindow(Handle: HWND): HWND; stdcall; external "User32.dll";


 
NikNet ©   (2005-10-03 17:12) [21]

DVM ©   (03.10.05 10:14) [20]

Что-то  она не   работает... :(

<офтоп> Почту смотрел </офтоп>


 
DVM ©   (2005-10-04 10:34) [22]


> Что-то  она не   работает... :(

И не будет, так как ты неправильно ее используешь.

1) Работать она будет только в отсутствии эксплорера или др оболочки.
2) Окно должно быть создано на WinAPI, т.к. с VCL окнами она почему-то (я не разбирался почему) не работает.


 
NikNet ©   (2005-10-04 16:05) [23]

DVM ©   (04.10.05 10:34) [22]
А я та думаю чё он не работает =)

А как без этой ф-ций выставить и что бы все элементы на форме работали!

Ато сколько не дают не работают!


 
DVM ©   (2005-10-05 10:16) [24]


> А как без этой ф-ций выставить и что бы все элементы на
> форме работали!

http://hardware.org.ru/faq/answ.php?id=4415



Страницы: 1 вся ветка

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

Наверх




Память: 0.53 MB
Время: 0.042 c
1-1131793569
<PREDATOR>
2005-11-12 14:06
2005.12.11
Как запустить прогу из командной строки


9-1121556269
Conferno
2005-07-17 03:24
2005.12.11
GL Blur (GLScene)


2-1132926394
Graf
2005-11-25 16:46
2005.12.11
Перехват разрешения экрана


14-1132669311
XsID
2005-11-22 17:21
2005.12.11
Немного об английском


1-1131808969
Gennadiy
2005-11-12 18:22
2005.12.11
Проблема печати картинки на принтере!