Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.10.2011, 18:36   #1
harimambura
Пользователь
 
Регистрация: 05.11.2009
Сообщений: 45
По умолчанию обработка WM_SYSCOMMAND

вобщем проблема следующая: отлавливаю сообщение WM_SYSCOMMAND для обработки SC_MINIMIZE для сворачивания в трей. всё хорошо, вот только перестало работать перетаскивание формы за заголовок. как можно исправить?
при наличии претензий перейдите сюда
harimambura вне форума Ответить с цитированием
Старый 21.10.2011, 01:29   #2
Airou
Форумчанин
 
Регистрация: 09.04.2008
Сообщений: 151
По умолчанию

Ты бы код запостил, тут не телепаты все-таки.
Airou вне форума Ответить с цитированием
Старый 21.10.2011, 13:25   #3
harimambura
Пользователь
 
Регистрация: 05.11.2009
Сообщений: 45
По умолчанию

ну если он что то даст...)

Код:
хэдер файл:
public:	
virtual void onminimize(TMessage & Msg);

protected:
    BEGIN_MESSAGE_MAP
 MESSAGE_HANDLER(WM_SYSCOMMAND, TMessage, onminimize)
    END_MESSAGE_MAP(TForm)

процедура отлова сообщения

void TForm3::onminimize(TMessage & Msg)
{

if (Msg.WParam==SC_MINIMIZE)
{
TrayIcon1->Minimize();
TrayIcon1->Visible=True;
}
else
        if (Msg.WParam==SC_CLOSE)
        Close();
}
все отлавливает, всё что надо работает, но сообщение после процедуры не обрабатывается дальше, следовательно sc_dragmove не доходит туда куда надо, а как его обработать незнаю
при наличии претензий перейдите сюда
harimambura вне форума Ответить с цитированием
Старый 21.10.2011, 14:43   #4
Airou
Форумчанин
 
Регистрация: 09.04.2008
Сообщений: 151
По умолчанию

сейчас перепишу свой код и возможно одновременно и тебе помогу

Последний раз редактировалось Airou; 21.10.2011 в 14:48.
Airou вне форума Ответить с цитированием
Старый 21.10.2011, 14:49   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

по аналогии с билдером, должно быть чтото типа inherited;
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 21.10.2011, 15:29   #6
harimambura
Пользователь
 
Регистрация: 05.11.2009
Сообщений: 45
По умолчанию

аналогов данной фунуции не имеется..
при наличии претензий перейдите сюда
harimambura вне форума Ответить с цитированием
Старый 21.10.2011, 23:22   #7
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

WM_SIZE не подойдет?
counter вне форума Ответить с цитированием
Старый 22.10.2011, 19:33   #8
harimambura
Пользователь
 
Регистрация: 05.11.2009
Сообщений: 45
По умолчанию

что WM_SIZE? куда WM_SIZE? про него речи нет вообще, т.к. не нужно. я же написал, обработка SC_DRAGMOVE
при наличии претензий перейдите сюда
harimambura вне форума Ответить с цитированием
Старый 22.10.2011, 21:50   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
перестало работать перетаскивание формы за заголовок
Да, потому что ты стандартный обработчик переопределил своим, но в своем не описал обработку сообщений перетаскавания.
Ты лучше в конце своего обработчика вызывай стандартный оконный обработчик (фот только не помню как эта функа называется CallWindowProc(DefWndProc,...)кажис ь)
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.10.2011, 23:45   #10
Airou
Форумчанин
 
Регистрация: 09.04.2008
Сообщений: 151
По умолчанию

MESSAGE_HANDLER(WM_MOVING, TMessage, CatchDrag); пишешь какое именно сообщение тебе нужно перехватить. У меня WM_MOVING. Таким способом все остальные сообщения переопределять не нужно.

А затем
Код:
void __fastcall TForm6::CatchDrag(TMessage &Msg)
  {

    TForm::Dispatch(&Msg);
    if(Msg.Msg == WM_MOVING)
   { 
    // ...
   }
}
Airou вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка файлов WennY Общие вопросы Delphi 2 30.04.2011 15:10
Обработка чисел в БД Siluet Помощь студентам 11 31.03.2010 09:58
Массивы - обработка. С++ . Беата Помощь студентам 7 30.03.2010 15:35
Как работает WM_SYSCOMMAND & SC_MOUSEMENU? TwiX Win Api 3 08.12.2009 17:01
Обработка данных Deni55 Microsoft Office Excel 0 20.04.2009 12:41