请问MFC封装成dll,基于单文档的可以封装吗如果不好封装,那么基于对话框的呢

请问MFC封装成dll,基于单文档的可以封装吗如果不好封装,那么基于对话框的呢,第1张

对话框的可以

你找到BOOL xxxx::InitInstance()

里的(CStudentDlg 对话框类名不同)

CStudentDlg dlg;

m_pMainWnd = &dlg;

int nResponse = dlgDoModal();

if (nResponse == IDOK)

{

// TODO: Place code here to handle when the dialog is

// dismissed with OK

}

else if (nResponse == IDCANCEL)

{

// TODO: Place code here to handle when the dialog is

// dismissed with Cancel

}

把这段代码放到一个导出的函数里即可

比如:

extern "C" __declspec(dllexport)

int WINAPI dispDailog()

{

CStudentDlg dlg;

m_pMainWnd = &dlg;

int nResponse = dlgDoModal();

if (nResponse == IDOK)

{

// TODO: Place code here to handle when the dialog is

// dismissed with OK

}

else if (nResponse == IDCANCEL)

{

// TODO: Place code here to handle when the dialog is

// dismissed with Cancel

}

return 0;

}

你的对话框再调用别的对话框都没问题

封装的目的之一就是隐藏,在程序上,隐藏对象的属性和实现细节。

封装的大致原则:

1把尽可能多的东西藏起来对外提供简捷的接口

2把所有的属性藏起来

CWinApp中包含了WinMain函数的定义。可在VC提供的代码中找到,如果楼主想深入了解可以参考一下资料:

《深入浅出MFC》270页——290页有详细的解释

MFC封装WinMain的原理:>

mfc是微软公司提供的一个基础类库。

以C++类的形式封装了WindowsAPI,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。

mfc特性

Visual C++包含MFC应用程序向导,可用于兼容MFC的应用程序。在ATL程序中也可以手动添加MFC支持。在向导中有各种选项以定制生成的程序的功能,例如界面风格、语种、数据库开发支持、打印支持、自动化支持、ActiveX支持、网络支持、基于HTML的帮助文档支持等等。

在COM开发方面,相对于ATL来说,MFC的组件比较大,代码不够短小精悍,但是支持的功能也比较多,例如有对ActiveX Document的封装类。在界面开发方面,MFC提供对消息循环的封装,使用消息映射来避免虚函数的开销。MFC也提供常用Windows通用控件的封装类。

MFC扩展DLL的接口使得MFC程序可以直接调用MFC扩展DLL中的MFC类。MFC也支持在标准DLL中被使用。

以上内容参考 百度百科--mfc

是不是没有使用 AFX_MANAGE_STATE(AfxGetStaticModuleState());

在任何导出函数中必须有这个宏。

例如

extern "C" BOOL PASCAL EXPORT ExportedFunction()

{

AFX_MANAGE_STATE(AfxGetStaticModuleState());

// normal function body here

}

这是用MFC开发的程序的默认图标,本身不能代表什么,如果他阻止关机可能是后台在执行什么,可以用Process Explorer强制结束它。

微软基础类库(英语:Microsoft Foundation Classes,简称MFC)是微软公司提供的一个类库(class libraries),以C++类的形式封装了Windows API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。

MFC(MicrosoftFoundationClasses)是微软基础类库的简称,是微软公司实现的一个c++类库,主要封装了大部分的windows API函数,vc++是微软公司开发的c/c++的集成开发环境,所谓集成开发环境,就是说利用它可以编辑,编译,调试,而不是使用多种工具轮换 *** 作,灵活性较大。vc也指它的内部编译器,集成开发环境必须有一个编译器内核,例如DevC++其中一个编译器内核就是gcc。

MFC除了是一个类库以外,还是一个框架,在vc++里新建一个MFC的工程,开发环境会自动帮你产生许多文件,同时它使用了mfcxxdll。xx是版本,它封装了mfc内核,所以你在你的代码看不到原本的SDK编程中的消息循环等等东西,因为MFC框架帮你封装好了,这样你就可以专心的考虑你程序的逻辑,而不是这些每次编程都要重复的东西,但是由于是通用框架,没有最好的针对性,当然也就丧失了一些灵活性和效率。但是MFC的封装很浅,所以效率上损失不大。

参考资料:

百度百科-MFC

以上就是关于请问MFC封装成dll,基于单文档的可以封装吗如果不好封装,那么基于对话框的呢全部的内容,包括:请问MFC封装成dll,基于单文档的可以封装吗如果不好封装,那么基于对话框的呢、mfc中mian,我觉得用隐藏正确点。还是封装、mfc是什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10092776.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存