文档,视结构(MVC结构)只是一种设计方法,与你的ocx无关。
如果是使用MFC的文档/视图,应该需要MFC库的支持
如果是使用MFC的文档/视图,应该需要MFC库的支持
解决方案 »
- 数据先后的问题?
- 怎么获得获得选中ListCtrl的内容。急,可以做到就结分
- 哪位高人可以帮我看看这个连接RTSP服务器的SOCKET为什么不工作??
- 急求帮忙,CString比较如何不区分大小写
- 再次高分请求各位支援,下周二要考试!!搞一下个vc题!!
- 明天青岛啤酒节开幕,放点分!!!
- 问:MSDN library 左边的书签选项卡内的内容怎么保存?
- 對話框中獲得使用者擊鍵消息
- 看看我的程序:ADO+存储过程
- mvb2211 请来领分(4)
- 111222 快来http://www.csdn.net/expert/topicview1.asp讨论你的程序
- 急!在VC中怎样播放MP3格式音乐!只提供API函数就可以了.
1 使用ClassWizard创建一个 SDI 的MFC工程
2 使用ClassWizard再创建一个 MFC ActiveX 工程
3 将 SDI工程中 frame, doc, view 相关.h .cpp文件复制到 ocx 工程中
4 在 ocx 的 OnCreate 中加入: ( 其中的XXXX用你的工程中的类名称替换) CXXXXDoc* pDoc;
CXXXXFrame* pFrame;
pDoc=new CXXXXDoc;
pDoc->OnNewDocument( );
CCreateContext* pContext;
RECT rect;
GetClientRect(&rect);
pContext=new CCreateContext;
memset(pContext,0,sizeof(pContext));
pContext->m_pNewViewClass=RUNTIME_CLASS(CXXXXView);
pContext->m_pCurrentDoc=pDoc;
pFrame=new CXXXXFrame;
BOOL bSucess=pFrame->Create(NULL, "ZGrid",WS_CHILD|WS_VISIBLE ,
rect,this, NULL,0,pContext);
/*************************************************
* 设置应用的主窗口目的是:
* 在 MFC 的 ViewPrev.cpp 的第82,83行
* (在函数CView::DoPrintPreview中)有这样的脚本
*
* CFrameWnd* pParent = STATIC_DOWNCAST(CFrameWnd, AfxGetMainWnd());
* ASSERT_VALID(pParent);
*
* 所以必须要有下面的一行 AfxGetApp()->m_pMainWnd= pFrame;
* 否则 PrintPreview()将引发错误
**********************************************************/
AfxGetApp()->m_pMainWnd= pFrame;
//激活视图
POSITION pos=pDoc->GetFirstViewPosition();
if(pos!=NULL)
pView=(CGridView*)pDoc->GetNextView(pos);
pFrame->SetActiveView(pView);
pView->OnInitialUpdate();
delete pContext;
OK
总结: 在MFC程序中通常是由一个 Frame 窗口管理 Doc 和View ,View是嵌在 Frame中的子窗口。所以要在OCX中使用 文档视结构,必须为文档和视找一个安生的窝(Frame) 。最简单的方法就是在 OCX的客户区创建一个Frame ,Frame::Create的最后一个参数是CCreateContext 结构,在该结构中定义了与Frame关联的文档对象和 视的类型 RUNTIME_CLASS(CXXXXView);在 《深入浅出MFC》中的文档视部分的 框架窗口的创建过程中有比较详细的讲述。