高手们:
    我用CSplitterWnd将一个单文档(SDI)分成几个窗口,为了在不同的窗口中保存不同的数据,我是不是需要建立不同的CDomument类啊,如果是怎么建立,如果不是,怎么获取各自的数据啊,还有:
我在其中的一个窗口建立了一个空间,但是问题是:如果运行程序后显示界面和控件,然后我打开其他的程序:比如QQ,然后QQ的界面覆盖那个控件,当我移动QQ界面时,控件却发生大小变化,原因在哪里啊,很着急啊,谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢

解决方案 »

  1.   

    一个Document可以处理多个view,第二个问题应该不是控件大小发生变化而是现实发生变化, 可能是没有重载WM_PAINT
      

  2.   

    为不同的窗口添加相应的视图类
    在CMainFrame成员中添加各视图类的指针
    如:
    //用定义之前先声明
    class CLeftTreeView;
    class CUsersListView;
    class CMainFrame : public CFrameWnd
    {
    //local add
    protected:
    CSplitterWnd m_wndSplitter;
    public:
    CLeftTreeView* m_pLeftView; //树视图
    CUsersListView* m_pUsersView; //用户列表视图
    ………………
    }
    要用到视图的地方
    CMainFrame *pFrame=(CMainFrame *)AfxGetApp()->m_pMainWnd;
    CListCtrl* p = &((pFrame->m_pUsersView)->GetListCtrl()); //获得视图中的LIST控件
    p->InsertItem(i,"A Name");  //相应的操作
    p->SetItemText(i,1,"Sex");   //……
    p->SetItemText(i,2,"age");   //……
      

  3.   

    把所有的数据放在同一个doc里面不就可以了
      

  4.   

    WM_PAINT
    重载可否给一个例子啊。我是分割的窗口,需要单独对一个窗口操作啊。
    还有一个问题是
    如何在MainFrame的菜单兰里面使某个窗口响应菜单兰的一项:
    比如:
    点击"line"
    则就可以在指定的窗口划线;
    我就是找不到如何在“指定“的窗口上画线啊
      

  5.   

    你不用在MainFrame里写画线。
    你只要在你希望画线的窗口类里重载“画线”菜单项函数就可以啊。如果你非要在MainFrame里写
    那就用m_SplitterWnd的GetActiveView()获得当前激活的窗口的句柄