![]() |
|
|
![]()
|
|
| Evgesha |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 181 Регистрация: 2.7.2005 Где: Германия Репутация: нет Всего: нет |
--------------------
Все это хорошо, а как дальше жить!!! |
|||
|
||||
| BreakPointMAN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 15.9.2004 Где: Saratov Репутация: 6 Всего: 24 |
Смотри в сторону следующих Properties формы:
BorderStyle - установить в, скажем, bsSingle, чтобы нельзя было изменять размеры формы, BorderIcons - установить biMaximize в false, дабы разворачивать на весь экран было ее нельзя, ну и FormStyle - в fsStayOnTop, если не хочешь, чтоб она двигалась. А вообще, RTFM: "Программирование с C++ Builder" © А.Я. Архангельский и, в конце концов, хелп встроенный... -------------------- "Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце") |
|||
|
||||
| codelord |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 777 Регистрация: 7.5.2005 Где: ты моя темноглаза я где?! Репутация: 16 Всего: 39 |
BreakPointMAN
c чего ты это взял что она не будет двигаться.?? Если не смущает наверное один из самых не оптимальных способов, но в голову что-то больше не пришло ничего. Смысл в том, чтобы в событии формы onCanResize вставить Abort(); а в один из таймеров запихнуть текущее положение формы, вот и все. Но таймер выстави эдак на 50 мсек. Только пробовал, не двигается. Без таймера двигается маленькими шажечками. А по поводу размеров, BreakPointMAN вроде все правильно говорит. |
|||
|
||||
| Adil' |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 311 Регистрация: 26.8.2004 Где: Питер Репутация: 4 Всего: 15 |
Можно еще Caption у формы убрать, тогда и перемещать не за что будет.
-------------------- Удачи |
|||
|
||||
| Adil' |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 311 Регистрация: 26.8.2004 Где: Питер Репутация: 4 Всего: 15 |
А можно красивее - добавить обработчик сообщения WM_NCLBUTTONDOWN с примерно таким содержимым:
-------------------- Удачи |
|||
|
||||
| MaximNR |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 11.5.2005 Репутация: нет Всего: 1 |
ещё можно отлавливать сообщение, которое отвечает за собственно перемещение окна ченить типа WM_MOVE, так же вполне возможно, что есть сообщение, которое тестирует возможность перемещения окна в определенное место.
|
|||
|
||||
| Evgesha |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 181 Регистрация: 2.7.2005 Где: Германия Репутация: нет Всего: нет |
Всем спосибо за помощь, но
void __fastcall TForm1::OnNCLBTNDOWN(TMessage& Msg) { if(Msg.WParam!=HTCAPTION) Msg.Result=DefWindowProc(Handle,Msg.Msg,Msg.WParam,Msg.LParam); } мне кажется красивей сегодня попробую --------------------
Все это хорошо, а как дальше жить!!! |
|||
|
||||
| Evgesha |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 181 Регистрация: 2.7.2005 Где: Германия Репутация: нет Всего: нет |
Только вариант от codelord работает.
А вот что я нашел Ловим WM_NCHITTEST и внутри функции-обработчика этого сообщения пишем: if(Message.Result == HTCAPTION) Message.Result = HTNOWHERE; но как ловить WM_NCHITTEST --------------------
Все это хорошо, а как дальше жить!!! |
|||
|
||||
| Adil' |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 311 Регистрация: 26.8.2004 Где: Питер Репутация: 4 Всего: 15 |
Хотя, судя по
Как добавить обработчик сообщения виндоуз: 1. Идем в ClassExplorer (Меню View->ClassExplorer). 2. Находим в списке классов проекта нужный класс - пусть это будет класс формы TForm1 3. Щелкаем по нему правой мышкой. В появившемся попуп-меню выбираем пункт New Method. Появляется диалог "Add Method". 4. В поле Method Name пишем название функции-обработчика сообщения - просто имя функции на свой вкус. Пусть это будет OnNCLBTNDOWN 5. Поле Add to Class оставляем как есть (TForm1) 6. В поле Arguments пишем принимаемый обработчиком парметр TMessage& Msg В принципе, для некоторых сообщений определены соответствующие типы - например, для WM_PAINT можно написать TWMPaint& Msg. Можно даже сврой тип определить. В любом случае - если не знаете конкретно, то пишите TMessage - не промахнетесь. 7. В группе Method type оставляем отмеченным Function, а в поле Function result пишем void. 8. В группе Visibility оставляем отмеченным Protected, хотя можно любой дрогой, кроме Published 9. В группе Directives лучше отметить только __fastcall(4) - хотя это и необязательно, а вот отметить Message handler нужно обзательно и в соответствующем полк выбрать (или набить руками) нужное сообщение виндоуз. Пусть это будет WM_NCLBUTTONDOWN. 10. В группе Implementation details остваляем все, как есть, пустым, а имя файла должно соответствовать файлу нашего класса-формы. 11. После описанных действий (точнее - после п. 4) станут доступны кнопки Ok и Apply - жмем Ok В результате в файлы *.h и *.cpp будет добавлен следующий код.
Конечно, можно было и не лезть в класс-эксплорер, а просто набить этот код руками - результат одинаковый. Добавлено @ 10:26 З.Ы. WM_NCHITTEST тоже можно, но мне кажется это более ресурсоёмким способом - эти сообщения посылаются гораздо чаще, чем WM_NCLBUTTONDOWN Это сообщение отредактировал(а) Adil' - 4.7.2005, 10:23 -------------------- Удачи |
||||||
|
|||||||
| codelord |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 777 Регистрация: 7.5.2005 Где: ты моя темноглаза я где?! Репутация: 16 Всего: 39 |
Adil', я попробовал твой способ, все отлично работает, и это конечно гораздо лучше чем предложил я.
|
|||
|
||||
| Evgesha |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 181 Регистрация: 2.7.2005 Где: Германия Репутация: нет Всего: нет |
Спосибо Adil' . Особое спасибо за разъеснение, я действительно не отлавливал событие.
--------------------
Все это хорошо, а как дальше жить!!! |
|||
|
||||
| codelord |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 777 Регистрация: 7.5.2005 Где: ты моя темноглаза я где?! Репутация: 16 Всего: 39 |
Хе оказывается достаточно выставить свойство Align в alCustom
|
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |