VC 从 CWnd中 派生特任意类,如何用在SDI的拆分窗口中
class CMyXXX : public CWnd
只要添加以下两个动态创建的代码就可以被 m_Splitter创建.
.H文件中
DECLARE_DYNCREATE(CMyXXX);
.CPP文件中
IMPLEMENT_DYNCREATE(CMyXXX, CWnd)
如:
MyXXX.h
class CMyXXX : public CWnd
{
public:
DECLARE_DYNCREATE(CMyXXX);
};
MyXXX.CPP
#include "stdafx.h"
#include "ChildView.h"
IMPLEMENT_DYNCREATE(CMyXXX, CWnd)
在一个非文档/视图支持的框架中使用Splitter拆分窗口
1.在CMainFrame中添加一个CSplitter的变量 m_wndSplitter;
2.覆盖CMainFrame 的 OnCreateClient 函数
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
// 添加创建静态拆分窗口
if (!m_wndSplitter.CreateStatic(this, 1, 2))
return FALSE;
// 创建摇摇拆分窗口.
if (!m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CMyXXX), CSize(100, 100), pContext) ||
!m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CMyXXX), CSize(100, 100), pContext))
{
m_wndSplitter.DestroyWindow();
return FALSE;
}
// 重新设置 第0列的 大小
m_wndSplitter.SetColumnInfo(0,190,100);
m_wndSplitter.RecalcLayout();
//注释掉原来的返回值.
//return CFrameWnd::OnCreateClient(lpcs, pContext);
return TRUE;
}