Отправляет email-рассылки с помощью сервиса Sendsay

Программирование. Форум !!!

WinAPI|Delphi - Moving

-=[6 мая 2004 г.]=-
Здрасте!

Как сделать так, чтоб окно можно было тягать не только за Caption?

--
-=[ -B0rM@N- ]=- ICQ: 239-535-374
~WinAMP шпилит [x 04 Rob Zombie - Two-Lane Blacktop x]~
mailto:BormanSubscri***@u*****.net - т0льк0 для р@((ь|лkи ,)
mailto:Boris_Kolupa***@u*****.net - личнь|й [Redirect to Mobile Phone]
Номер выпуска : 3001
Возраст листа : 229 (дней)
Количество подписчиков : 394
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/140670
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru

http://subscribe.ru/ mailto:ask@subscribe.ru

Ответить   "-=[-B0rMaN-]=-" Thu, 6 May 2004 14:57:52 +0300 (#140670)

 

Ответы:

Тема: WinAPI|Delphi - Moving

Обрабатывать OnMouseXXX: нажал - "зацепил",.... Если не удастся - поишу после
лекций - была статья на эту тему

Ответить   Sat, 8 May 2004 09:20:32 +0400 (#140738)

 

Здоровеньки булы, -=[-B0rMaN-]=-!

6 мая 2004 г., четверг, 16:57:52 (GMT+05:00), пришел ко мне
почтальон Почкин и всучил письмо с пометкой "WinAPI|Delphi - Moving",
в котором сообщалось следующее:

Цитирую

Как сделать окно, которое перетаскивается не за заголовок (caption), а за все
поле

Нужно обрабатывать сообщение WM_NCHITTEST:

TForm1 = class(TForm)
...
private
...
procedure WMNCHitTest(var M: TWMNCHitTest); message wm_NCHitTest;
...
end;

...
procedure TForm1.WMNCHitTest(var M: TWMNCHitTest);
begin
inherited; { вызов унаследованного обработчика }
if M.Result = htClient then { Мышь сидит на окне? }
M.Result := htCaption; { Если да - то пусть Windows думает, что }
{ мышь на caption bar }
end;
...

Окно можно сделать вообще без caption.

Ответить   Томилов Александр Sat, 8 May 2004 14:27:04 +0500 (#140815)

 

-=[Привет!]=-
8 мая 2004 г. /суббота 12:27:04/ Томилов |E-Mail: <mailto:astero***@p*****.ru>|
в мессаге <<WinAPI|Delphi - Moving>> накрапал:
[B~E~G~I~N~>
Томилов> Здоровеньки булы, -=[-B0rMaN-]=-!
Томилов> 6 мая 2004 г., четверг, 16:57:52 (GMT+05:00), пришел ко мне
Томилов> почтальон Почкин и всучил письмо с пометкой "WinAPI|Delphi - Moving",
Томилов> в котором сообщалось следующее:

~~~< Message on address 0x00000000 cannot be read (written) >Томилов> пусть Windows думает, что }
Томилов> { мышь на caption bar
}
Томилов> end;
Томилов> ...
Томилов> Окно можно сделать вообще без caption.

[E|.|N|.|D|.>

А вот еще вопрос... в догонку.
Если на поле есть скажем Label, как тогда?
Вот нажму я на этот Label и потяну и что?

Ответить   "-=[-B0rMaN-]=-" Mon, 10 May 2004 00:52:42 +0300 (#141513)

 

Здоровеньки булы, -=[-B0rMaN-]=-!

10 мая 2004 г., понедельник, 02:52:42 (GMT+05:00), пришел ко мне
почтальон Почкин и всучил письмо с пометкой "WinAPI|Delphi - Moving",
в котором сообщалось следующее:

Ну если вопрос стоит так то вот такой код (стопудово работает и на
TPanel, и на Tlabel, и на TButton):

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
const SC_DragMove = $F012; { a magic number }
begin
ReleaseCapture;
perform(WM_SysCommand, SC_DragMove, 0);
end;

Затем у всех Control-ов ставишь в ObjectInspector
OnMouseDown=FormMouseDown и радуешься жизни.

Ответить   Томилов Александр Mon, 10 May 2004 13:49:10 +0500 (#141643)

 

-=[Хайушки!]=-
10 мая 2004 г. /понедельник 11:49:10/ Томилов |E-Mail: <mailto:astero***@p*****.ru>|
в мессаге <<WinAPI|Delphi - Moving>> накрапал:
[B~E~G~I~N~>
Томилов> const SC_DragMove = $F012; { a magic number }
[E|.|N|.|D|.>

А че за магическое число такое?

Ответить   "-=[-B0rMaN-]=-" Mon, 10 May 2004 22:07:23 +0300 (#141993)

 

Здоровеньки булы, -=[-B0rMaN-]=-!

11 мая 2004 г., вторник, 00:07:23 (GMT+05:00), пришел ко мне
почтальон Почкин и всучил письмо с пометкой "WinAPI|Delphi - Moving",
в котором сообщалось следующее:

Томилов>> const SC_DragMove = $F012; { a magic number }

Работает и ладно ;)
Если честно - енто не мой комментарий. Если очень хочется - поищи в
MSDN (я по хелпу пробежался - не нашел).

Ответить   Томилов Александр Tue, 11 May 2004 19:38:18 +0500 (#142780)

 

Hello Томилов,

Tuesday, May 11, 2004, 6:38:18 PM, you wrote:

Томилов>>> const SC_DragMove = $F012; { a magic number }

WM_SYSCOMMAND
A window receives this message when the user chooses a command from the window
menu
(formerly known as the system or control menu) or when the user chooses the maximize
button, minimize button, restore button, or close button.

A window receives this message through its WindowProc function.

LRESULT CALLBACK WindowProc(
HWND hwnd, // handle to window
UINT uMsg, // WM_SYSCOMMAND
WPARAM wParam, // system command type
LPARAM lParam // horizontal and vertical position
);
wParam
Specifies the type of system command requested. This parameter can be one of
the following values.

SC_MOVE Moves the window.
SC_MAXIMIZE Maximizes the window.
SC_MINIMIZE Minimizes the window.
SC_CLOSE Closes the window.
можно на свои кнопки повесить.
SC_SIZE Sizes the window. - свои контролы для изменения размеров %)
SC_TASKLIST Activates the Start menu. <а вот это забавно ;)

WinUser.h:
#define SC_SIZE 0xF000
#define SC_MOVE 0xF010
#define SC_MINIMIZE 0xF020
#define SC_MAXIMIZE 0xF030
#define SC_CLOSE 0xF060
#define SC_TASKLIST 0xF130

F012 наверно недокументированная фича..

Ответить   Ivan Mikheikin Wed, 12 May 2004 01:52:04 +0400 (#142979)