Page 1 of 1

tratarea mesajelor nedorite..

Posted: 07 Feb 2013, 17:33
by black_atus
Nu stiu daca se intelege ceva din titlu ... probabil ca nu.. dar am urmatoarea intrebare:
Daca derivez o clasa din , de exemplu , CDialog si vreau ca unele mesaje sa nu fie tratate nici de clasa mea nici de clasa CDialog, de exemplu WM_RBUTTONDOWN, cum pot sa fac mai simplu decat mapez si sa scriu pt fiecare mesaj o functie goala, exemplu aici OnRButtonDown() ???
Trebuie sa fie o metoda mai simpla sa fac clasa mea si nici cea de baza sa reactioneze la unele mesaje...

Re: tratarea mesajelor nedorite..

Posted: 07 Feb 2013, 18:01
by Ovidiu Cucu
Metoda "mai simpla" decat sa folosesti wizard-ul ca sa-ti mapeze mesaje nu exista. :)
Altfel, poti suprascrie WindowProc, ceea ce nu-ti recomand daca nu stii bine ce se intampla acolo.
Altfel, poti suprascrie PreTranslateMessage.
Exemplu

Code: Select all

BOOL CMyDialog::PreTranslateMessage(MSG* pMsg)
{
   switch(pMsg->message)
   {
   case WM_LBUTTONDOWN:
   case WM_LBUTTONUP:
   // ... other messages
      if(pMsg->hwnd == m_hWnd)
      {
         return TRUE; // no further dispatched
      }
      break;
   }
   return CDialog::PreTranslateMessage(pMsg);
}
Eu zic sa ramai totusi la a mapa fiecare mesaj in parte. N-or fi ele chiar asa de multe si vor fi mai usor de tinut "sub control".

Re: tratarea mesajelor nedorite..

Posted: 07 Feb 2013, 22:03
by bu7ch3r
Eu zic sa ramai totusi la a mapa fiecare mesaj in parte. N-or fi ele chiar asa de multe si vor fi mai usor de tinut "sub control".
Adica sa nu-ti faci un obicei din asta, cand o sa ai multe, multe, foarte multe dialoguri o sa ametesti editand metoda aia :)

Re: tratarea mesajelor nedorite..

Posted: 08 Feb 2013, 13:50
by black_atus
Multumesc pentru sfaturi :)

E buna de stiut si metoda cu suprascrierea metodei PreTranslateMessaje()... Nu m-am gandit la asta. :)

Re: tratarea mesajelor nedorite..

Posted: 08 Feb 2013, 17:00
by black_atus
Mai am inca o intrebare. Ce mesaj se transmite atunci cand dau click dreapta pe partea de sus al unei ferestre, acolo unde sunt butoanele Close, Minimize si Restore Down.. Dialogul meu are un comportament ciudat cand dau click dreapta in partea de sus.. Am un progress bar in el si niste text ... functioneaza bine dar cand dau click dreapta pe el pare ca se opreste pana la urmatorul click dreapta. Mi se pare foarte ciudat comportamentul :)

Re: tratarea mesajelor nedorite..

Posted: 08 Feb 2013, 17:59
by Viorel
În mod normal, în partea de sus ar trebui să vină WM_NCRBUTTONDOWN.

Re: tratarea mesajelor nedorite..

Posted: 11 Feb 2013, 11:11
by black_atus
Asta era ... :)) cat l-am mai cautat ... :)) Mersi :)