Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> DefWindowProc, ne Pashet 
:(
    Опции темы
Гость_Raven
Дата 7.10.2003, 01:09 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Pomogite, perehvatil v Builder sobitije WM_SYSCOMMAND, mne nado bilo obrabotatj tolko SC_MINIMIZE, ostalnije podsobitija po ideje dolzhna obrabativatj f-ja DefWindowProc, no ona vozvraschajet 0 i nichego ne delajet vot kod:

Objavlenije klassa svjazannogo s oknom:
class TMSGGW : public TForm

Makros obrabotchika soobschenija:
BEGIN_MESSAGE_MAP
VCL_MESSAGE_HANDLER(WM_SYSCOMMAND, TMessage, OnSysCommand) // <<--
END_MESSAGE_MAP(TForm)

Objavlenije proceduri i jej telo:
void __fastcall TMSGGW::OnSysCommand(TMessage& msg)
{
// HWND HiddenWindow = AllocateHWnd(&MSGGW)
DefWindowProc((HWND)MSGGW, msg.Msg, msg.WParam, msg.LParam);
switch(msg.WParam){
case SC_MINIMIZE:
Hide();
TrayMessage(NIM_ADD);
TrayMessage(NIM_MODIFY);
break;
default:
break;
}
}

proboval takzhe vmesto MSGGW this, no ne pomogajet. V chjem delo, gde oshibka? Help.
Zaraneje spasibo.
  Вверх
Ars
Дата 7.10.2003, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 28.8.2003
Где: Московская обл.

Репутация: 2
Всего: 2



Цитата
DefWindowProc((HWND)MSGGW, msg.Msg, msg.WParam, msg.LParam);

MSGGW - совсем не HWND, а указатель на класс окна. HWND - это MSGGW->Handle
Но, ихмо, лучше вызывать дефолтовый обработчик так же, как описано в макросе END_MESSAGE_MAP(TForm), т.е. TForm::Dispatch(Msg)
Можно еще так:
Код

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
WindowProc=DoMessage;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::DoMessage(TMessage &Msg)
{
if(Msg.Msg==WM_SYSCOMMAND && Msg.WParam==SC_MINIMIZE) DoSomething();
else WndProc(Msg);
}
//---------------------------------------------------------------------------



Это сообщение отредактировал(а) Ars - 7.10.2003, 10:00


--------------------
Есть многое на свете, друг Горацио,
С чем очень долго можно прое..!
PM MAIL   Вверх
Гость_Raven
Дата 7.10.2003, 20:28 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











U menja ni odin iz etih metodov ne srabotal, vidajet stack overflow. Mne tut podskazali chto dolyhna bitj standartnaja funkcija OnMinimize, no ja jeje nigde ne nashel, ni v helpe ni v Object Inspector. Zato u menja zarabotal DefWindowProc cherez ->Handle, hotja vchera cherez nego vidaval division by zero smile.gif. Spasibo za pomosch.
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0464 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.