Skocz do zawartości

Re: Mam pytanie do SDI (VC++6.0)


Recommended Posts

Napisano

W wielkim skrócie wygląda to mniej więcej tak (za mało czasu i miejsca, żeby to wszystko dokładniej opisać, także moja wiedza na ten temat niestety nie jest kompletna :P):

CMainFrame - jest to klasa opakowująca okno główne aplikacji (bez obszaru roboczego); znajdują się w niej więc informacje na temat wszelkich toolbarów, statusbarów; tutaj możesz też modyfikować wygląd onka (czy ma przyciski minimalizacji i maxymalizacji, czy da się rozciągać itp)

CDoc - to klasa opakowująca dane wykorzystywane w Twojej aplikacji (bez sposobów ich wyświetlania); w niej powinna znajdować cała warstwa logiki Twojej aplikacji (wszystkie funkcje modyfikujące dane); udostępnia ona funkcję Serialize służącą do zapisywania dokumentu (a ściślej jego zmiennych)

CView - klasa opakowująca warstwę interfejsu aplikacji; powina służyć do wyświetlania danych znajdujących się w dokumencie (interpretować te dane i podawać je w postaci łatwo dostępnej dla użytkownika - np.: w dokumencje masz tablicę punktów, a klasa CView wyświetla je jako wykres)

Nie wiem tego na pewno, ale z tego co zdołałem wywnioskować z budowy aplikacji SDI, to jedynymi klasami, które się ze sobą komunkują są klasa widoku i klasa dokumentu. Po prostu w klasie widoku pobierasz wskaźnik do aktywnego dokumentu, przy użyciu funkcji GetDocument i wyświetlasz zawarte w nim dane.

Pobieranie wskaźnika wygląda tak:
W Swojej klasie CView, albo w którejś z jej funkcji, tworzysz sobie wskażnik do obiektu klasy Twojego dokumentu np.: CMyDoc* pMyDoc. Następnie przypisujesz tej zmiennej wskaźnik do bieżącego dokumentu np.: pMyDoc=GetDocument(); i w ten sposób masz już dostęp do wszystkich pól i metod Swojej klasy dokumentu poprzez operator -> np.: pMyDoc->WyznaczPunkty();.

Architektura Document-View została zaprojektowana po to żeby oddzielić logikę aplikacji (dane i operacje na nich) od interfejsu (sposób wyświetlania tych danych). Ma to ułatwić zmiane interfejsu (np.: nie chcemy oglądać wykresu tylko tablekę z współrzędnymi punktów), bez potrzeby zmiany całej aplikacji oraz bez ryzyka namieszania w częci logicznej.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gość
Odpowiedz...

×   Wkleiłeś zawartość bez formatowania.   Usuń formatowanie

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Utwórz nowe...