MDI中无模式对话框中,创建视图(CStatic),出现异常,(带源代码的),请高手帮忙! MDI中无模式对话框中,创建视图(CStatic),出现异常,(带源代码的),请高手帮忙!请看附件源代码! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 CCreateContext cc; cc.m_pNewViewClass = RUNTIME_CLASS(CModelessView); cc.m_pCurrentDoc = m_pView->GetDocument(); cc.m_pNewDocTemplate = NULL; cc.m_pLastView = NULL; cc.m_pCurrentFrame = NULL; m_pView = (CModelessView*)CreateNewView(&cc, this, CRect(0, 0, 0, 0), 0); if (m_pView == NULL) EndDialog(IDCANCEL); // place the View in the view rectangle CRect rect; CStatic *s = (CStatic*)GetDlgItem(IDC_STATIC_MAP); s->GetWindowRect (&rect); ScreenToClient(rect); m_pView->MoveWindow(&rect); s->ShowWindow(SW_HIDE); 这样还是不行阿 view和dialog最好别混用,两者差别很大。对话框是用对话框模板来创建的,对话框本身是在代码中构造并创建的,初始化是通过WM_INITDIALOG消息响应函数OnInitDialog来进行的;view是一种用于文档-视图模型的特殊窗口类,本身支持动态创建和自我删除特性,创建不是由用户进行的,而是通过定义在文档模板里面,然后由框架自动创建的,初始化是通过OnInitialUpdate虚拟函数来进行的。view和dialog都提供了一些功能相似的类,比如基于对话框模板的CDialog和CFormView;显示HTML的CDHtmlDialog和CHtmlView;CEditView和有edit控件的dialog;CListView和有CListCtrl控件的dialog。如果你使用MDI或者SDI,请尽量使用view类,而不要使用Dialog类 楼主为啥不用FormView呢,和你现在的效果一样啊 代码大概看了.你的Dialog的风格应该设置为WS_CHILD.这样一来就可以创建了.出错的地方也看了.但是绝对不是对话框造成的。是在View的OnDraw的时候GetDocument()这个函数中错的,。把这里注释就可以绘制出来对话框了。你用向导再生成一个,然后使用你的方法再创建个Dialog试试看注意设置风格为WS_CHILD。感觉你的CModelessViewEx和CModellessView以及Document这里的关系似乎错了。另外个人认为,你的Dialog应该放在Document中,因为Document应该是来存放数据的。而View的责任只是显示数据。 cc.m_pCurrentDoc = m_pView->GetDocument();int CModelessView::OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT message){ // TODO: Add your message handler code here and/or call default return CWnd::OnMouseActivate(pDesktopWnd, nHitTest, message);}建议 CModelessView 直接派生于CWnd opencv 中怎样改变图片 的大小? Tree Control 中,点击节点时,如何获得父节点的名称 modbus问题!发送RTU串下位机不响应? dcom的跨多台主机调用 CreateDispatch出错,错误号为2,高手帮忙~~~~ 自定义的工具栏为什么是灰的 WIN32下删除指定目录下的*.bmp???不用MFC类 vc中怎么实现两各类中的成员相互是用呢? 高手请教:哪里有关于locale及facet的经典样例?我对这个实在玩的不好。 怎样得到当前的CDC? 全屏后,如何显示工具栏? 动态创建的编辑框,改变窗口大小,编辑框为何就不显示了
cc.m_pNewViewClass = RUNTIME_CLASS(CModelessView);
cc.m_pCurrentDoc = m_pView->GetDocument();
cc.m_pNewDocTemplate = NULL;
cc.m_pLastView = NULL;
cc.m_pCurrentFrame = NULL;
m_pView = (CModelessView*)CreateNewView(&cc, this, CRect(0, 0, 0, 0), 0);
if (m_pView == NULL)
EndDialog(IDCANCEL);
// place the View in the view rectangle
CRect rect;
CStatic *s = (CStatic*)GetDlgItem(IDC_STATIC_MAP);
s->GetWindowRect (&rect);
ScreenToClient(rect);
m_pView->MoveWindow(&rect);
s->ShowWindow(SW_HIDE);
这样还是不行阿
对话框是用对话框模板来创建的,对话框本身是在代码中构造并创建的,初始化是通过WM_INITDIALOG消息响应函数OnInitDialog来进行的;
view是一种用于文档-视图模型的特殊窗口类,本身支持动态创建和自我删除特性,创建不是由用户进行的,而是通过定义在文档模板里面,然后由框架自动创建的,初始化是通过OnInitialUpdate虚拟函数来进行的。
view和dialog都提供了一些功能相似的类,比如基于对话框模板的CDialog和CFormView;显示HTML的CDHtmlDialog和CHtmlView;CEditView和有edit控件的dialog;CListView和有CListCtrl控件的dialog。如果你使用MDI或者SDI,请尽量使用view类,而不要使用Dialog类
你的Dialog的风格应该设置为WS_CHILD.
这样一来就可以创建了.
出错的地方也看了.但是绝对不是对话框造成的。
是在View的OnDraw的时候GetDocument()这个函数中错的,。
把这里注释就可以绘制出来对话框了。
你用向导再生成一个,然后使用你的方法再创建个Dialog试试看注意设置风格为WS_CHILD。
感觉你的CModelessViewEx和CModellessView以及Document这里的关系似乎错了。另外个人认为,你的Dialog应该放在Document中,因为Document应该是来存放数据的。而View的责任只是显示数据。
{
// TODO: Add your message handler code here and/or call default return CWnd::OnMouseActivate(pDesktopWnd, nHitTest, message);
}建议 CModelessView 直接派生于CWnd