tratarea mesajelor nedorite..

Intrebari despre programarea cu VC++ incluzand mediul de dezvoltare, instalare, setari, debugger, compilator, linker si documentatie.
Post Reply
User avatar
black_atus
Membru
Membru
Posts: 139
Joined: 20 Jun 2012, 10:20
Judet: Prahova
Location: Ploiesti

tratarea mesajelor nedorite..

Post by black_atus » 07 Feb 2013, 17:33

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...


Cu stima,
Daniel Constantin

User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3776
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

Re: tratarea mesajelor nedorite..

Post by Ovidiu Cucu » 07 Feb 2013, 18:01

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".

User avatar
bu7ch3r
Membru++
Membru++
Posts: 326
Joined: 17 May 2011, 15:17
Judet: Iaşi
Location: Sofia
Contact:

Re: tratarea mesajelor nedorite..

Post by bu7ch3r » 07 Feb 2013, 22:03

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 :)
Cu stima,
Lupu Claudiu

User avatar
black_atus
Membru
Membru
Posts: 139
Joined: 20 Jun 2012, 10:20
Judet: Prahova
Location: Ploiesti

Re: tratarea mesajelor nedorite..

Post by black_atus » 08 Feb 2013, 13:50

Multumesc pentru sfaturi :)

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

User avatar
black_atus
Membru
Membru
Posts: 139
Joined: 20 Jun 2012, 10:20
Judet: Prahova
Location: Ploiesti

Re: tratarea mesajelor nedorite..

Post by black_atus » 08 Feb 2013, 17:00

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 :)
Cu stima,
Daniel Constantin

Viorel
Microsoft MVP
Microsoft MVP
Posts: 286
Joined: 13 Jul 2007, 12:26

Re: tratarea mesajelor nedorite..

Post by Viorel » 08 Feb 2013, 17:59

În mod normal, în partea de sus ar trebui să vină WM_NCRBUTTONDOWN.

User avatar
black_atus
Membru
Membru
Posts: 139
Joined: 20 Jun 2012, 10:20
Judet: Prahova
Location: Ploiesti

Re: tratarea mesajelor nedorite..

Post by black_atus » 11 Feb 2013, 11:11

Asta era ... :)) cat l-am mai cautat ... :)) Mersi :)
Cu stima,
Daniel Constantin

Post Reply