Page 1 of 1

Argument pointer CView

Posted: 20 Aug 2010, 13:25
by mesajflaviu
As putea folosi ca argument al unei metode de clase generice , un pointer de un anume tip de CView ?

Code: Select all

void CMyGenericClass::NumeMetoda(arg1,...,RuntimeClass* pView)
{
...
...
       pView->MetodaView();
...
...
}
iar metoda sa recunoasca tipul pointer-ului daca este de tip CMyFormView1 , sau CMyFormView2 , etc. ?
Apoi , in interiorul acestei metode , pot recunoaste ( fara eroare ) un obiect de pe view dupa ID , daca exista si de ce tip este ( CEdit sau CComboBox ) ?

Re: Argument pointer CView

Posted: 20 Aug 2010, 13:59
by neagu_laurentiu
1) Cu functii virtuale. Defineste o clasa a ta, MyBaseCView (derivata din CView), functiile virtuale dorite apoi derivezi din nou cate CMyFormView1,2,3 vrei.
2) __hook si evenimente

Re: Argument pointer CView

Posted: 21 Aug 2010, 14:05
by Ovidiu Cucu

Re: Argument pointer CView

Posted: 21 Aug 2010, 22:51
by mesajflaviu
Ovidiu Cucu wrote:Vezi si articolul asta: http://www.codexpert.ro/articole.php?id=10
Cred ca o sa adopt ultima solutie a acestui articol ... excelent ! ( care de fapt e prima varianta a lui Laurentiu ).

Re: Argument pointer CView

Posted: 22 Aug 2010, 09:30
by neagu_laurentiu
Cand nu ai o ierarhie de clase (nu neaparat) dar vrei ca la un moment dat / eveniment in clasa A sa-ti apeleze ceva din B, la momentul definitiei lui A nu se stie de B, __hook poate fi util. Iar cine vrea ceva pur C++ poate apela la template-uri: http://www.tweakbits.com/articles/events/index.html

(__closure e implementarea din C++Builder, __hook a aparut mult mai tarziu in VC++)