我用CCHATLAYOUT类中setsplitterpane方式加入两页,作为聊天窗口的输入和显示两部分,现在想再加个查看历史记录功能,请问该采用何种方式比较好。感觉QQ的查看聊天记录应该算是比较合理吧?求教了!

解决方案 »

  1.   

    查阅资料后尝试首先创建一个splitterpane,加入两个窗口,再将这个splitterpane作为另外一个splitterpane的子窗口;实现3个窗口的效果,但是显示不出来,是否是参数错误,或者是方法有误?附上两个窗口的实现代码m_chatView.Create(m_hWnd, CWindow::rcDefault, _T("about:blank"), WS_CHILD | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_HSCROLL | WS_VSCROLL | WS_VISIBLE);m_chatHistroy.Create(m_hWnd, CWindow::rcDefault, _T("about:blank"), WS_CHILD | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_HSCROLL | WS_VSCROLL | WS_VISIBLE);m_chatView.LoadFromResource(IDR_HTML);
    baseClass::SetSplitterPane(0,m_chatView);m_chatEdit.Create(m_hWnd, NULL, NULL, WS_CHILD | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_VISIBLE | ES_LEFT | ES_MULTILINE | ES_WANTRETURN,WS_EX_CLIENTEDGE);baseClass::SetSplitterPane(1,m_chatEdit);
      

  2.   

    为何不用折叠窗口呢?
    http://www.3snews.net/bbs/viewthread.php?tid=2839
      

  3.   

    楼上的地址需要帐户权限,没有看到,以下为成功实现嵌套窗口代码,但是如果改变嵌套结构会导致运行错误,正在调试中
    HWND
    CChatLayout::CreateAdapter(HWND parent)
    {
    const DWORD dwSplitStyle = WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN | WS_CLIPSIBLINGS;
    const DWORD dwSplitExStyle = WS_EX_CLIENTEDGE;
    baseClass::Create (parent,rcDefault,NULL,dwSplitStyle, NULL );
    if(::IsWindow(m_hWnd)){
    m_parentPane.Create(m_hWnd,rcDefault,NULL,dwSplitStyle, NULL );
    m_chatView.Create(m_parentPane.m_hWnd, CWindow::rcDefault, _T("about:blank"),    WS_CHILD | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_HSCROLL | WS_VSCROLL | WS_VISIBLE);
    m_chatHistroy.Create(m_parentPane.m_hWnd, CWindow::rcDefault, _T("about:blank"), WS_CHILD | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_HSCROLL | WS_VSCROLL | WS_VISIBLE);
    m_chatView.LoadFromResource(IDR_HTML_CHATSKEL);
    m_chatHistroy.LoadFromResource(IDR_HTML_CHATHISTROY);
    m_parentPane.SetSplitterPane(0,m_chatView);
    m_parentPane.SetSplitterPane(1,m_chatHistroy);
    m_chatEdit.Create(m_hWnd, NULL, NULL, WS_CHILD | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_VISIBLE | ES_LEFT | ES_MULTILINE | ES_WANTRETURN,WS_EX_CLIENTEDGE);
    baseClass::SetSplitterPane(0,m_parentPane);
    baseClass::SetSplitterPane(1,m_chatEdit);
    }
    baseClass::SetSplitterExtendedStyle(SPLIT_PROPORTIONAL);
    return m_hWnd;
    }
      

  4.   

    替你up下
    你可以到网上查一下qq折叠窗口。
    有很多,感觉楼主的这个功能是可以用折叠窗口实现的。