Есть MainFrm в нем сплиттер, и я хочу в леовой части, например, прикрутить контрол, который содержит в себе сплиттер (просто запихать второй детенышем — не правильно)
Итак, MainFrm.h
class CMainFrame : public CFrameWindowImpl<CMainFrame>, public CUpdateUI<CMainFrame>,
public CMessageFilter, public CIdleHandler
{
public:
DECLARE_FRAME_WND_CLASS(NULL, IDR_MAINFRAME)
CSplitterWindow m_splitter;
CSplitContainer m_panels;
BEGIN_MSG_MAP(CMainFrame)
MESSAGE_HANDLER(WM_CREATE, OnCreate)
// ...
CHAIN_MSG_MAP(CFrameWindowImpl<CMainFrame>)
END_MSG_MAP()
LRESULT OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{ // ...
m_hWndClient = m_splitter.Create(m_hWnd, rcDefault, NULL, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN);
m_panels.Create(m_splitter, rcDefault, NULL, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, WS_EX_CLIENTEDGE);
m_view.Create(m_splitter, rcDefault, NULL, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, WS_EX_CLIENTEDGE); // some view
m_splitter.SetSplitterPanes(m_pane, m_view);
UpdateLayout();
m_splitter.SetSplitterPosPct(25);
// ...
}
CSplitContainer
class CSplitContainer : public CWindowImpl<CSplitContainer>
{
protected:
CHorSplitterWindow m_Splitter;
CSSSView m_View1, m_View2; // some views
public:
BEGIN_MSG_MAP_EX(CSplitContainer)
MSG_WM_CREATE(OnCreate)
END_MSG_MAP()
int OnCreate(LPCREATESTRUCT)
{
m_Splitter.Create(*this, rcDefault, NULL, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN);
m_View1.Create(m_Splitter, rcDefault, NULL, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN);
m_View2.Create(m_Splitter, rcDefault, NULL, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN);
m_Splitter.SetSplitterPane(SPLIT_PANE_TOP, m_View1);
m_Splitter.SetSplitterPane(SPLIT_PANE_BOTTOM, m_View2);
m_Splitter.SetSplitterPos(200);
return 0;
}
};
Во все OnCreate заходим, все m_hWnd получаем, а вот слева в основном сплиттере — пусто (темно серый такый фон... нулевое окно, вобщем). Сплиттера нет.
Что надо сделать, что бы получилось нормально?
Здравствуйте, fregate, Вы писали:
[]
Можно попробовать вот так:
m_splitter.m_cxyMin = 100;
F> m_splitter.SetSplitterPanes(m_pane, m_view);
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>