Re: document class
 
my class CMIAppView : public CFormView is now complete free from every
class - except the document class.
void CMIAppView::OnInitialUpdate()
{
     CFormView::OnInitialUpdate();
    //start http, thread from the document class in the init method
    GetDocument()->Init();
                 //get information from the xml file for the view at
startup
    CStringArray *m_XmlUserList = GetDocument()->GetDocData(0);
                 //update all controls with this Array
                //maybe its also a good decision to get the font of
each view also from the document
                m_ViewFont = GetDocument()->GetFont();
}
Next function is the OnUpdate() -> to update all view controls as well
as the font - only a small installation.
void CMIAppView::OnUpdate(CView* pSender, LPARAM lHint, CObject*
pHint )
{
    if(lHint == 0 && pHint == NULL)
    { /* do nothing */
        CFormView::OnUpdate(pSender, lHint, pHint);
        return;
    } /* do nothing */
    switch(lHint)
    {
    //setfont for this view
    case CMIAppDoc::SetFont:
        break;
                 case CMIAppDoc::SetControls:
                          //pHint will be a CStringList including all
params for all view controls
                                 break;
    default:
        ASSERT(FALSE);
        return;
    }
}
now talking about the doc class::
class CMIAppDoc : public CDocument
{
protected:
    CMIAppDoc();
    DECLARE_DYNCREATE(CMIAppDoc)
public:
                 typedef enum {
        SetFont			= 1,
        SetControls		= 2,
    }DocRequests;
protected:
                 CXmlFile XmlFile;
                 CNetwork m_network;
                 CDisplay m_display;
protected:
    DECLARE_MESSAGE_MAP()
}
As you can see, I`ve still a member variable of each class (CDisplay,
CNetwork, CXmlFile) in the document class, because I don`t know where
I have to install these members and how do I access their specific
classes...  It would be nice if you could show me a small example for
e.g. the CDisplay class.
BOOL CMIAppDoc::OnNewDocument()
{
    if (!CDocument::OnNewDocument())
        return FALSE;
               // specify xml file name
               CString strFileName (_T("userdata.xml"));
                //load xml data from CXmlFile Class
               if(XmlFile.LoadUserXml(strFileName))
                   return FALSE;
             //init brightness (stored in the xml file)
             POSITION pos = XmlFile.FindIndex(CMIAppDoc::Brightness);
             CString bright = XmlFile.GetAt(pos);
             m_display.Init(bright);
   return TRUE;
}
BOOL CMIAppDoc::Init(void)
{
     //start http thread (called from OnInitialUpdate())
     m_network.InitThread();
}
The next method will be called if the client user has changed some
settings by the webserver or by the display menue. CStringList slist
includes the new information.
BOOL CMIAppDoc::SetParam(CStringList& slist, UINT nbr)
{
   switch(nbr)
   {
   case SET_NETWORK:
            //set new network params
            if(!(m_network.SetParam(slist)))
                   return FALSE; //error during set network params
           break;
   case SET_DISPLAY:
          if(!(m_display.SetParam(slist);))
              return FALSE;
         break;
     default:
        ASSERT(false);
       return FALSE;
      }
}
This function will be called, if the user sends a get message to the
webserver: -> we need the required information which were displayed on
this page from the xml file. For example, the user called the page
where he can change the display settings, the list-Array will include
all these information.
CStringArray* CMIAppDoc::GetArray(UINT nbr)
{
    return(XmlFile.GetXmlData(nbr));
}
best regards
Hans