окно со сплиттером
От: Аноним  
Дата: 22.02.09 16:54
Оценка:
при создании этого окна нет ни сплиттера ни панелей. что я делаю не так?
#pragma once

#include "top_view.h"
#include "bottom_view.h"

class first_pane : public ATL::CWindowImpl<first_pane>
{
private:
    CSplitterWindow            m_splitHorizonal;
    CPaneContainer            m_paneTop;
    CPaneContainer            m_paneBottom;
    top_view                m_viewTop;
    bottom_view                m_viewBottom;

public:
    enum { WM_POSTCREATE = WM_APP + 1 };
    DECLARE_WND_CLASS(L"first_pane")
    
    first_pane() { }
    ~first_pane() { }
    BOOL PreTranslateMessage(MSG* pMsg) { return FALSE; }

    BEGIN_MSG_MAP(first_pane)
        MESSAGE_HANDLER(WM_CREATE, OnCreate)
        MESSAGE_HANDLER(WM_POSTCREATE, OnPostCreate)
    END_MSG_MAP()

// Handler prototypes (uncomment arguments if needed):
//    LRESULT MessageHandler(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
//    LRESULT CommandHandler(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
//    LRESULT NotifyHandler(int /*idCtrl*/, LPNMHDR /*pnmh*/, BOOL& /*bHandled*/)

    LRESULT OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
    {
        m_splitHorizonal.Create(m_hWnd, rcDefault, NULL, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN);

        m_paneTop.Create(m_splitHorizonal, L"Исходные данные");
        m_viewTop.Create(m_paneTop, rcDefault, NULL
            , WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN
            | LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS, WS_EX_CLIENTEDGE);
        m_paneTop.SetClient(m_viewTop);

        m_paneBottom.Create(m_splitHorizonal, L"Исходные данные");
        m_viewBottom.Create(m_paneBottom, rcDefault, NULL
            , WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN
            | LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS, WS_EX_CLIENTEDGE);
        m_paneBottom.SetClient(m_viewBottom);

        m_splitHorizonal.SetSplitterPanes(m_paneTop, m_paneBottom);
        PostMessage(WM_POSTCREATE);

        return 0;
    }
    LRESULT OnPostCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
    {
        m_splitHorizonal.SetSplitterPos(100);
        return 0;
    }

};
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.