Re: document class
ok
let`s assume that the whole fixture we`re talking about is a video
recorder with an integrated webserver and a display for the user. I
decided to use a SDI application because it is enough for this project
(I don`t need more than one document).
I`ve nothing installed in the application class (so far) - there`s
only what visual studio created installing a sdi document.
In the document class: OnNewDocument() I call my CXmlFile-Class to
open the xml file with the user specific data. These information are
necessary / important for the view class as well as for the
webserver.
class CMIAppDoc : public CDocument
{
protected: // Nur aus Serialisierung erstellen
CMIAppDoc();
DECLARE_DYNCREATE(CMIAppDoc)
protected:
CXmlFile XmlFile;
};
In the view class I will call the CNetwork class to create the thread
for the http webserver in the OnInitialUpdate() method. I didn`t find
any other suitable place to do this, because I need a valid window to
install the UI-threads. But I`m definitly not sure if it is really the
correct place, because the view itself has nothing to do with creating
threads for the webserver or anything else... If I`m right the view
class is only responsible for all kinds of members of buttons
checkboxen etc. which are visible on the display.
Moreover the view class get the xml list, which includes some
information (e.g. which checkbox is checked or not and so on)... from
the document class. And the view class gets the created font, which
will be created in the mainframe OnCreate() method.
void CMIAppView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
net.InitThreads();
m_XmlUserList = ((CMIAppDoc *)GetDocument())->GetList(0);
HFONT hfont = (HFONT)GetParent()-
SendMessage(UWM_ON_GET_FONT, USE_STAT_FONT, 0);
CFont* pStatFont = CFont::FromHandle(hfont);
}
After that everything is initialized.
Assuming that the user will use the webserver to change some values
(network settings, display settings and so on) -> the fixture will
receive a post msg to the specific http connection thread. From there
I will send a PostMessage to a visible window (mainthread), I`ve
created, so that the document class is able to receive messages.
The next step will be to valid the received information from the post
message. The validation for the network settings is only possible in
the network class where I installed the http thread. The display
settings validation is only in the CDisplay class possible and so on.
The com port settings is only possible in the comport class.... but
where (in which class) should I access these classes?
If these recieved information are valid I will store these information
in the xml file by the document class and call updateallviews.
Thats the whole part. My question is now: where is the right place to
call the display class, the network class and so on (which are in the
same thread as the mainthread)?
If I`m straight forward, then the application class sounds suitable
(as you pointed it out before) because all these things are
application dependend and not document depended. If so, then I need a
way to access these classes - installing a protected member in the
application class together with a public function... And which class
should be able to access the application class (in this case)?
I hope you could give me some hints...
best regards
Hans