将FormView视图封装到DLL中
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将FormView视图封装到DLL中相关的知识,希望对你有一定的参考价值。
在多文档编程框架中,要显示多个视图,如果将视图类封装到DLL中,调用时将视图嵌入到主框架中,能实现模块编程。(1)创建一个MFC的控展DLL工程,在资源中添加一个FormView窗口,并创建相应的类CDeviceManageView。添导出函数如下:
extern "C" AFX_EXT_API UINT Create(CRuntimeClass * * view,CWnd * p) { new CDynLinkLibrary(DeviceManageDLL); *view = RUNTIME_CLASS(CDeviceManageView); return(0); }
(2)调用DLL函数创建视图
HINSTANCE hDllInst = AfxLoadLibrary(CScale3DCGlobal::GetApplicationPath() + _T("\\DeviceManage.DLL")); if (hDllInst) { typedef UINT(*MYFUNC)(CRuntimeClass**,CWnd *parent); MYFUNC CreateViewUI = NULL; CreateViewUI = (MYFUNC)GetProcAddress(hDllInst, "Create"); if (CreateViewUI) { CRuntimeClass* pNewViewClass; CreateViewUI(&pNewViewClass,AfxGetMainWnd()); ASSERT(pNewViewClass); CCreateContext context; context.m_pNewViewClass = pNewViewClass; pChildFrame = new CScale3DCChildFrame; if (!pChildFrame->LoadFrame(32000,//与DLL中的资源ID一致 WS_OVERLAPPEDWINDOW | FWS_PREFIXTITLE, AfxGetMainWnd(), &context)) return; pChildFrame->SetWindowText(_T("通信连接")); pChildFrame->InitialUpdateFrame(NULL, TRUE); } //FreeLibrary(hDllInst); } }
以上是关于将FormView视图封装到DLL中的主要内容,如果未能解决你的问题,请参考以下文章
Android当中的MVP模式终篇---关于对MVP模式中代码臃肿
Android当中的MVP模式终篇---关于对MVP模式中代码臃肿