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

Вниз

свернуть и восстановить   Найти похожие ветки 

 
Змей ©   (2005-12-11 18:22) [0]

Привет Мастера!
есть функции свернуть и восстановить! кнопок в правом верхнем углу окна!
ведь это не hide & show
как этими функциями управлять? и как они называются?
Спасибо


 
злобная танька ©   (2005-12-11 18:51) [1]

Application.Minimize?


 
злобная танька ©   (2005-12-11 18:52) [2]

.. и Application.Restore


 
begin...end ©   (2005-12-11 18:57) [3]

> Змей ©   (11.12.05 18:22)

Это системное меню окна. Что нужно -- отследить использование пунктов меню или сымитировать выбор пунктов? Если первое, то перехватывайте WM_SYSCOMMAND. Если второе, то отправляйте WM_SYSCOMMAND в DefWindowProc (или см. [1], [2]).


 
sniknik ©   (2005-12-11 19:28) [4]

begin...end ©   (11.12.05 18:57) [3]
> WM_SYSCOMMAND

не совсем нажатие кнопок, а всетаки уже команды. в основной както пытались разделить закрытие программы произошло от нажатия кнопки либо от другого события (команды в программе), так Шевченко приводил событие именно от кнопок окна вроде WM_CBLBUTTONCLICKED но не уверен точно (не мне нужно было, забыл ;)
стоит поискать если нужны именно нажатия кнопок.


 
begin...end ©   (2005-12-11 19:47) [5]

> sniknik ©   (11.12.05 19:28) [4]

Выделить именно нажатие кнопок можно с помощью WM_NCHITTEST. Более того -- могу ошибаться, но кое-что можно определить по младшим четырём битам параметра wParam у WM_SYSCOMMAND.


 
sniknik ©   (2005-12-11 21:24) [6]

> Выделить именно нажатие кнопок можно с помощью WM_NCHITTEST.
выделял по WM_NCLBUTTONUP\WM_NCLBUTTONDOWN но както убого получалось надо было "извертываться" даже не ложил в качетве ответа. NCHITTEST судя по хелпу тоже самое (надо извертываться) и по значениям wParam то же самое что в них и в WM_NCMOUSEMOVE; (смотрел ->)

procedure WMNCMOUSEMOVE(var Message: TMessage); message WM_NCMOUSEMOVE;

procedure TForm1.WMNCMOUSEMOVE(var Message: TMessage);
var s : string;
begin
 case Message.wParam of
   HTERROR          : s:= "HTERROR";
   HTTRANSPARENT    : s:= "HTTRANSPARENT";
   Windows.HTNOWHERE: s:= "HTNOWHERE";
   HTCLIENT         : s:= "HTCLIENT";
   HTCAPTION        : s:= "HTCAPTION";
   HTSYSMENU        : s:= "HTSYSMENU";
   HTSIZE           : s:= "HTSIZE";
   HTMENU           : s:= "HTMENU";
   HTHSCROLL        : s:= "HTHSCROLL";
   HTVSCROLL        : s:= "HTVSCROLL";
   HTMINBUTTON      : s:= "HTMINBUTTON";
   HTMAXBUTTON      : s:= "HTMAXBUTTON";
   HTLEFT           : s:= "HTLEFT";
   HTRIGHT          : s:= "HTRIGHT";
   HTTOP            : s := "HTTOP";
   HTTOPLEFT        : s:= "HTTOPLEFT";
   HTTOPRIGHT       : s:= "HTTOPRIGHT";
   HTBOTTOM         : s:= "HTBOTTOM";
   HTBOTTOMLEFT     : s:= "HTBOTTOMLEFT";
   HTBOTTOMRIGHT    : s:= "HTBOTTOMRIGHT";
   HTBORDER         : s:= "HTBORDER";
   HTOBJECT         : s:= "HTOBJECT";
   HTCLOSE          : s:= "HTCLOSE";
   HTHELP           : s:= "HTHELP";
 else
   s:= "";
 end;
 Form1.Caption:= s;
 Message.Result:= 0;
end;


предложенное тогда событие, в том то и дело, было гораздо проще (один "перехват" без вычислений где была мыша, кнопку нажали/отпустили, ...)
сам не пробовал тогда но автор показал как получилось.
надо бы в дайджесты ради интереса залезть... но лень. ;)

> определить по младшим четырём битам параметра wParam у WM_SYSCOMMAND.
а вот этого не получалось у нас тогда (это была именно моя идея по "разделению". но насколько помню "не шло")


 
begin...end ©   (2005-12-11 21:36) [7]

> sniknik ©   (11.12.05 21:24) [6]
> NCHITTEST судя по хелпу тоже самое (надо извертываться)

procedure TForm1.WMSysCommand(var Message: TWMSysCommand);
begin
 if (Message.CmdType and $FFF0) = SC_MINIMIZE then
   if SendMessage(Handle, WM_NCHITTEST, 0, TMessage(Message).LParam) = HTMINBUTTON then
     ShowMessage("Окно свёрнуто кнопкой")
   else
     ShowMessage("Окно свёрнуто не кнопкой");
 inherited
end

Изврата не вижу.


 
sniknik ©   (2005-12-11 22:52) [8]

> Изврата не вижу.
хм... я тоже. но тогда до этого не додумался, все пытался непосредственно событие перехватить, потому изврат и был...



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

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

Наверх




Память: 0.49 MB
Время: 0.056 c
2-1133885039
oleggar
2005-12-06 19:03
2005.12.25
быстрая запись


6-1126863529
nokk
2005-09-16 13:38
2005.12.25
IP адрес


14-1133597407
Knight
2005-12-03 11:10
2005.12.25
Архивация файлов с русскими именам в TurboPower Abbrevia...


1-1133224429
Мастер Ломастер
2005-11-29 03:33
2005.12.25
Как сохранить созданные в ScrollBoxe компоненты в виде рисунка?


11-1095406419
Shadow HuntEr
2004-09-17 11:33
2005.12.25
UDP и всё такое