MFC CView в CDockablePane

Мне нужно поместить производный класс CView в CDockablePane. Есть ли где-нибудь пример кода или кто-то может предоставить такой код?

Что я пробовал:

По-видимому, все должно быть просто, в Интернете я нашел совет, такой как «просто создайте представление и установите его родительский элемент в качестве диалогового окна или панели для закрепления или какого типа окна вы хотите». Но по какой-то причине это не работает, может быть потому, что ему нужен CFrameWnd, я не знаю.

В любом случае, я должен быть в состоянии сделать это без создания другого класса шаблона документа. Просто для работы с уже существующим документом и просмотра классов.

2

Решение

Вот пример:

класс, производный от CDockablePane:

// CRichEditPane .h

class CRichEditPane : public CDockablePane
{
DECLARE_DYNAMIC(CRichEditPane)

public:
CRichEditPane();
virtual ~CRichEditPane();

protected:
void AdjustLayout();
protected:
DECLARE_MESSAGE_MAP()
public:
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnSize(UINT nType, int cx, int cy);
};

// CRichEditPane .cpp

IMPLEMENT_DYNAMIC(CRichEditPane, CDockablePane)

CRichEditPane::CRichEditPane()
{

}

CRichEditPane::~CRichEditPane()
{
}BEGIN_MESSAGE_MAP(CRichEditPane, CDockablePane)
ON_WM_CREATE()
ON_WM_SIZE()
END_MESSAGE_MAP()// CRichEditPane message handlersint CRichEditPane::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDockablePane::OnCreate(lpCreateStruct) == -1)
return -1;

CRuntimeClass *pClass = RUNTIME_CLASS(CRichEditViewInPane);

// calling constructor using IMPLEMENT_DYNCREATE macro
CRichEditViewInPane *pView = (CRichEditViewInPane*)pClass->CreateObject();if (!pView->Create(NULL, NULL, AFX_WS_DEFAULT_VIEW, CRect(0,0,0,0), this, AFX_IDW_PANE_FIRST, NULL))
{
return -1;
}

CRichEditCtrl ctrl;
ctrl.Create(WS_CHILD, CRect(0, 0, 0, 0), this, 10991);

return 0;
}void CRichEditPane::OnSize(UINT nType, int cx, int cy)
{
CDockablePane::OnSize(nType, cx, cy);

AdjustLayout();
}

класс представления, производный от CView:

// CRichEditViewInPane .h

class CRichEditViewInPane : public CRichEditView
{
DECLARE_DYNCREATE(CRichEditViewInPane)

protected:
CRichEditViewInPane();           // protected constructor used by dynamic creation
virtual ~CRichEditViewInPane();

public:
#ifdef _DEBUG
virtual void AssertValid() const;
#ifndef _WIN32_WCE
virtual void Dump(CDumpContext& dc) const;
#endif
#endif

protected:
DECLARE_MESSAGE_MAP()
};

// CRichEditViewInPane. CPP

IMPLEMENT_DYNCREATE(CRichEditViewInPane, CRichEditView)

CRichEditViewInPane::CRichEditViewInPane()
{

}

CRichEditViewInPane::~CRichEditViewInPane()
{
}

BEGIN_MESSAGE_MAP(CRichEditViewInPane, CRichEditView)
END_MESSAGE_MAP()
2

Другие решения


По вопросам рекламы [email protected]