[VC++] Cum mapez HDN_XXX pentru un CListView? (VS6.0)

Mediul de dezvoltare Visual C++, instalare, setari, debugger, compilator, linker si documentatie (forum moderat)
Post Reply
User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3776
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

[VC++] Cum mapez HDN_XXX pentru un CListView? (VS6.0)

Post by Ovidiu Cucu » 20 Jun 2008, 11:49

Problema
Folosesc ClassWizard-ul pentru a adauga handlere pentru notificarile de la controlul header (HDN_ITEMCLICK, HDN_ENDTRACK, etc) intr-o clasa derivata din CListView. Acesta imi adauga functiile si macro-urile corespunzatoare dar programul nu intra niciodata in functia handler.

Rezolvare
ClassWizard-ul mapeaza incorect mesajele de notificare provenite de la controlul header folosind macro-ul ON_NOTIFY_REFLECT. Pentru a "prinde" aceste mesaje, ON_NOTIFY_REFLECT trebuie inlocuit manual cu ON_NOTIFY.

Exemplu

Code: Select all

  ON_NOTIFY_REFLECT(HDN_ITEMCLICK, OnItemclick)
trebuie inlocuit cu

Code: Select all

  ON_NOTIFY(HDN_ITEMCLICK, 0, OnItemclick)
unde 0 este identificatorul controlului header.

Note:
  • Problema descrisa mai sus a existat pana la Visual Studio 6.0 inclusiv. In versiuni mai noi de Visual Studio, cum ar fi 2005 sau 2008, aceasta a fost corectata.

Next FAQ >>



Post Reply