[C++][ActiveX] Gdzie większość funkcjonalności

0

Piszę sobie ostatnio kontrolkę ActiveX jest ona dosyć rozbudowana, ale operuje głównie na obiektach jednej dość dużej klasy, mam w związku z tym takie pytanie (nie wiem czy nie za oczywiste): czy jak największa część funkcjonalności kontrolki powinna zostać w jej wnętrzu (tj podczas tworzenia przekazuję do niej tylko obietk mojej klasy i operuję na nim) czy przez metody, które udostępnia, czyli na podstawie np kliknięcia w jakiś przycisk aplikacja, która posiada kontrolkę wykonuje jakąś akcję? Logiczniejsze wydaje mi się pierwsze podejśćie, ponieważ wtedy pisząc nowy program ogranicza się do minimum (tylko do wczytania danych) operacje jakie musi wykonać kolejny programista gdyby chciał ponownie użyć mojego komponentu, w przeciwnym wypadku sam musiał by wszystko oprogramowywać (trochę tego jest), tj każde zdarzenie nadchodzące z kontrolki do okna dialogowego itp. Czy udostępnić z kontrolki tylko najważniejsze metody np w stylu wczytaj dane z pliku, zapisz plik, a resztę realizować wewnątrz (wszystkie kliknięcia w przyciski akcje itp)? Dla mnie takie podejście nie ukrywam było by łatwiejsze do zrealizowania. Mam nadzieję, że w miarę jasno udało mi się wyjaśnić o co mi chodzi ;) Które z rozwiązań jest lepsze?

0

Mi się wydaje, żebyś komunikaty itp. zostawił w środku, a rzeczy, które wpłyną na działanie komponentu do wykorzystania.

0

Też mi się tak wydaje, tyle, że wtedy ta zewnętrzna funkcjonalność będzie o wiele większa niż to co zawiera w sobie kontrolka sama w sobie, z drugiej strony nie da się przekazać do niej od zewnątrz przy pomocy metody obiektu dowolnej klasy jeżeli chce się używać później w innych językach (c#) a u mnie tak będzie. W takim razie mam pytanie, jak wysłać event np. w comboboxie zmieniono wybrany element?

0

cos w stylu

event EventHandler MyEvent;
...
if(MyEvent!=null) MyEvent(this, EventArgs.Empty);

przyczym typ i nazwe eventu dobierz wedlug swoich potrzeb.

ps. to bedzie temat o IO [podzial na komponenety] czy C# [skladnia] ?

0

w złym dziale założyłem temat? ;) Nie rozumiem tego twojego kodu, co on robi?

0

ups.. ostatnia Twoja linijka zasugerowala mi C#.. to jest kod odpalenia eventu w C#, pardon:) w c++/activex, http://www.codeguru.com/forum/archive/index.php/t-275475.html post numer 5 (FireEvent) oraz 8 (poprzez Com)

0

Spoko, C# znam, pytałem raczej o to, napisałem tak, bo to w końcu dział C++ ;] Już patrzę na tamten wątek ;] Chyba to dokładnie to czego szukałem, nie wiem jak ja przeglądam to codeguru, ale nie znalazłem tego ;] A dokładnie opisuje mój problem, to dokładnie to samo potrzebuję zrobić ;]

0

Nie ma to jak zmarnować parę godzin na złe poszukiwania, stwierdziłem jednak, że będę przekazywał całą klasę do mojego pliku ocx ;]

1 użytkowników online, w tym zalogowanych: 0, gości: 1