我用的单文档多视图,转换视图的代码如下:
void CMainFrame::OnMultiline()
{
ischecked=!ischecked; CJNoteDoc* pDoc=(CJNoteDoc*)GetActiveDocument(); if(m_pNoMultiView==0)
{
m_pDefaultView=(CJNoteView*)GetActiveView();//获取默认视图
m_pNoMultiView=new NoMultiView;//创建新视图
m_pNoMultiView->Create(NULL,NULL,AFX_WS_DEFAULT_VIEW,rectDefault,this,AFX_IDW_PANE_FIRST+1);//创建新视图窗口
}
if(ischecked)//允许自动换行
{
pDoc->AddView(m_pDefaultView); m_pDefaultView->SetDlgCtrlID(AFX_IDW_PANE_FIRST);
m_pNoMultiView->SetDlgCtrlID(AFX_IDW_PANE_FIRST+1); m_pDefaultView->ShowWindow(SW_SHOW);
m_pNoMultiView->ShowWindow(SW_HIDE); SetActiveView(m_pDefaultView); pDoc->RemoveView(m_pNoMultiView); this->RecalcLayout();
}
else //不允许自动换行
{
pDoc->AddView(m_pNoMultiView);到这一行就出错了//添加视图 m_pDefaultView->SetDlgCtrlID(AFX_IDW_PANE_FIRST+1);
m_pNoMultiView->SetDlgCtrlID(AFX_IDW_PANE_FIRST); m_pDefaultView->ShowWindow(SW_HIDE);
m_pNoMultiView->ShowWindow(SW_SHOW); SetActiveView(m_pNoMultiView);
pDoc->RemoveView(m_pDefaultView); this->RecalcLayout();
}
}
提示错误是0x01554d1c 处最可能的异常: 0xC0000005: 读取位置 0xfeeefeee 时发生访问冲突。
我在调试过程中发现到pDoc->AddView(m_pNoMultiView)这一行(见代码)就会出错,而且在出错之前有Warning: Window creation failed: GetLastError returns 0x00000579。那应该是m_pNoMultiView->Create有问题,导致创建不成功。同时我发现m_pNoMultiView的hWnd=0xfeeefeee。
请问这是什么问题?
先谢过大家了
void CMainFrame::OnMultiline()
{
ischecked=!ischecked; CJNoteDoc* pDoc=(CJNoteDoc*)GetActiveDocument(); if(m_pNoMultiView==0)
{
m_pDefaultView=(CJNoteView*)GetActiveView();//获取默认视图
m_pNoMultiView=new NoMultiView;//创建新视图
m_pNoMultiView->Create(NULL,NULL,AFX_WS_DEFAULT_VIEW,rectDefault,this,AFX_IDW_PANE_FIRST+1);//创建新视图窗口
}
if(ischecked)//允许自动换行
{
pDoc->AddView(m_pDefaultView); m_pDefaultView->SetDlgCtrlID(AFX_IDW_PANE_FIRST);
m_pNoMultiView->SetDlgCtrlID(AFX_IDW_PANE_FIRST+1); m_pDefaultView->ShowWindow(SW_SHOW);
m_pNoMultiView->ShowWindow(SW_HIDE); SetActiveView(m_pDefaultView); pDoc->RemoveView(m_pNoMultiView); this->RecalcLayout();
}
else //不允许自动换行
{
pDoc->AddView(m_pNoMultiView);到这一行就出错了//添加视图 m_pDefaultView->SetDlgCtrlID(AFX_IDW_PANE_FIRST+1);
m_pNoMultiView->SetDlgCtrlID(AFX_IDW_PANE_FIRST); m_pDefaultView->ShowWindow(SW_HIDE);
m_pNoMultiView->ShowWindow(SW_SHOW); SetActiveView(m_pNoMultiView);
pDoc->RemoveView(m_pDefaultView); this->RecalcLayout();
}
}
提示错误是0x01554d1c 处最可能的异常: 0xC0000005: 读取位置 0xfeeefeee 时发生访问冲突。
我在调试过程中发现到pDoc->AddView(m_pNoMultiView)这一行(见代码)就会出错,而且在出错之前有Warning: Window creation failed: GetLastError returns 0x00000579。那应该是m_pNoMultiView->Create有问题,导致创建不成功。同时我发现m_pNoMultiView的hWnd=0xfeeefeee。
请问这是什么问题?
先谢过大家了
解决方案 »
- C+如何自定义菜单栏样式、界面?
- MFC中关于edit控件显示的问题
- 跪求局域网多线程传输大文件源代码VC的
- 怎么在鼠标移上按纽时改变按纽上的文字
- 如何显示list control 列表头?
- ===> 那有讲 dsp dsw mak 文件(文本方式)语法的?特别是 Custom build 有什么用?
- 批处理文件为何可以删除自身?
- 请问在运行一个MFC(单文档)程序时,如何设置窗体的大小?
- VC控件的问题
- 用opencv的stitcher类, 0x0f508331 处有未经处理的异常: 0xC0000005: 读取位置 0x00000014 时发生访问冲突
- 如何让CView能够继承CDockPane
- 求助,VC调用VC写的动态库dll,大大们看看哪有问题
无效的菜单句柄
你看看m_pNoMultiView->Create语句指定的菜单是不是有问题
m_pNoMultiView->Create是创建一个新视图,函数参数里面没有指定菜单,为什么会ERROR_INVALID_MENU_HANDLE呢?
m_pNoMultiView->Create(NULL,NULL,AFX_WS_DEFAULT_VIEW,rectDefault,this,AFX_IDW_PANE_FIRST+1);
成功否?