1. 程式人生 > >將FormView視圖封裝到DLL中

將FormView視圖封裝到DLL中

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中