將FormView視圖封裝到DLL中
阿新 • • 發佈:2018-03-19
View 視圖 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中