在创建mfc向导的时候,去掉 Doc/View 前面的钩.
就生成了一个 没有 Doc 的工程,该 ChildView 继承自 CWnd,
如果直接使用 以下方法,运行时候会出错.BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
// TODO: Add your specialized code here and/or call the base class
UNREFERENCED_PARAMETER(lpcs); m_splitterWnd1.CreateStatic(this,2,1);
m_splitterWnd2.CreateStatic(&m_splitterWnd1,1,2,
WS_CHILD | WS_VISIBLE | WS_BORDER,
m_splitterWnd1.IdFromRowCol(1, 0)); int nClientHeight = GetSystemMetrics(SM_CYSCREEN) -
GetSystemMetrics(SM_CYMENU) -
GetSystemMetrics(SM_CYCAPTION);
int nClinetWidth = GetSystemMetrics(SM_CXSCREEN);
//过程信息窗口
m_splitterWnd1.CreateView(0, 0,
RUNTIME_CLASS(CChildView),
CSize(0,nClientHeight*3/5), pContext);
//设备状态信息窗口
m_splitterWnd2.CreateView(0, 0,
RUNTIME_CLASS(CChildView),
CSize(nClinetWidth*2/5, 0), pContext);
//事件和状态信息窗口
m_splitterWnd2.CreateView(0, 1,
RUNTIME_CLASS(CChildView),
CSize(nClinetWidth*3/5, 0), pContext);
return TRUE;
// return CFrameWnd::OnCreateClient(lpcs, pContext);
}出错位置:
/////////////////////////////////////////////////////////////////////////////
// CSplitterWnd attributesCWnd* CSplitterWnd::GetPane(int row, int col) const
{
ASSERT_VALID(this); CWnd* pView = GetDlgItem(IdFromRowCol(row, col));
ASSERT(pView != NULL); // panes can be a CWnd, but are usually CViews
return pView;
}现在请教大家,如何在 这种情况下切分窗口?这是类的继承结构,单文档,非文档/视图结构
class CChildView : public CWnd
class CMainFrame : public CFrameWnd
就生成了一个 没有 Doc 的工程,该 ChildView 继承自 CWnd,
如果直接使用 以下方法,运行时候会出错.BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
// TODO: Add your specialized code here and/or call the base class
UNREFERENCED_PARAMETER(lpcs); m_splitterWnd1.CreateStatic(this,2,1);
m_splitterWnd2.CreateStatic(&m_splitterWnd1,1,2,
WS_CHILD | WS_VISIBLE | WS_BORDER,
m_splitterWnd1.IdFromRowCol(1, 0)); int nClientHeight = GetSystemMetrics(SM_CYSCREEN) -
GetSystemMetrics(SM_CYMENU) -
GetSystemMetrics(SM_CYCAPTION);
int nClinetWidth = GetSystemMetrics(SM_CXSCREEN);
//过程信息窗口
m_splitterWnd1.CreateView(0, 0,
RUNTIME_CLASS(CChildView),
CSize(0,nClientHeight*3/5), pContext);
//设备状态信息窗口
m_splitterWnd2.CreateView(0, 0,
RUNTIME_CLASS(CChildView),
CSize(nClinetWidth*2/5, 0), pContext);
//事件和状态信息窗口
m_splitterWnd2.CreateView(0, 1,
RUNTIME_CLASS(CChildView),
CSize(nClinetWidth*3/5, 0), pContext);
return TRUE;
// return CFrameWnd::OnCreateClient(lpcs, pContext);
}出错位置:
/////////////////////////////////////////////////////////////////////////////
// CSplitterWnd attributesCWnd* CSplitterWnd::GetPane(int row, int col) const
{
ASSERT_VALID(this); CWnd* pView = GetDlgItem(IdFromRowCol(row, col));
ASSERT(pView != NULL); // panes can be a CWnd, but are usually CViews
return pView;
}现在请教大家,如何在 这种情况下切分窗口?这是类的继承结构,单文档,非文档/视图结构
class CChildView : public CWnd
class CMainFrame : public CFrameWnd
解决方案 »
- 关于CListctrl的使用问题
- 为什么调试会出错?
- 用MFC做出的小程序好占硬盘空间啊!怎么办?
- 哪有 《Visual C++ 实践与提高——COM和COM+篇》下载
- CMenu的Detach和destory要在什么时候用?LoadMenu完以后,要什么时候释放资源?
- constant的问题!
- 请问有谁知道在TURBO C2.0下怎样实现不让输入的字符不显出来(回显*号--输入密码用的)?
- 求助,VS2012控制台程序下无法使用windows api
- 服务器使用UDP套接字在一个端口能不能和多用户通信?
- 准备搞一个专业的VC技术基地,诚邀相关人事(事先声明,我们都没有钱)
- 急!!我的HTML文件老是解析不了XML文件
- 第一次实习面试的经历。。。
希望对你有帮助。
应该能找到你能用的
出错应该和doc没关系。
GetPane在哪使用的?也许参数设置不对。