Splitter CreateStatic问题
当我尝试在 MainFrame 类中创建静态拆分器时出现下一个错误。 错误 C2653: 'CMyView' : 不是类或命名空间名称 c:\projects\mt\mt\mainfrm.cpp 200 1 MT
我尝试在 MainFrm.cpp 的顶部添加 #include "MainFrm.h" 但它又犯了一个关于 CMyDoc 的错误。我该如何解决这个问题?
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/,
CCreateContext* pContext)
{
//calculate client size
CRect cr;
GetClientRect(&cr);
if (!m_wndSplitter.CreateStatic(this, 1, 2))
return FALSE;
if (!m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CMyView), CSize(cr.Width() / 2, cr.Height()), pContext) ||
!m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CMyView), CSize(cr.Width() / 2, cr.Height()), pContext))
{
m_wndSplitter.DestroyWindow();
return FALSE;
}
return TRUE;
}
I have next error when I tried to create a static splitter in MainFrame class.
Error C2653: 'CMyView' : is not a class or namespace name c:\projects\mt\mt\mainfrm.cpp 200 1 MT
I have tried to add #include "MainFrm.h" a the top of the MainFrm.cpp but it make another error about CMyDoc. How I can solve this issue?
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/,
CCreateContext* pContext)
{
//calculate client size
CRect cr;
GetClientRect(&cr);
if (!m_wndSplitter.CreateStatic(this, 1, 2))
return FALSE;
if (!m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CMyView), CSize(cr.Width() / 2, cr.Height()), pContext) ||
!m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CMyView), CSize(cr.Width() / 2, cr.Height()), pContext))
{
m_wndSplitter.DestroyWindow();
return FALSE;
}
return TRUE;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您需要在 MainFrm.cpp 文件中包含定义 CMyView 的标头。确保您不将 MyView.h 包含在 MyDoc.h 中,也不将 MyDoc.h 包含在 MyView.h 中。这会产生循环依赖;如果需要,请使用前向声明,以避免此类循环。
You need to include the header where you defined CMyView in the MainFrm.cpp file. Make sure you don't include MyView.h in MyDoc.h, and MyDoc.h in MyView.h. That would create a cyclic dependency; use forward declaration if needed, to avoid such cycles.