WIN32 程序中支持MFC的窗口
2017-07-10 18:32
190 查看
项目中需要封装一个dll,但是库里面需要窗口,对画框之类的界面,如果用win32的API取实现画出窗口来, 当然Ok了,但是你不觉得win32 画起来超级烦吗,如果你的win32API开发用的666,当然随便了。
如果不想画,则可以用MFC的东西了。
怎么用?
1、从创建工程说起:
首先应该创建一个win32的动态库工程或者控制台工程,看你需要了。但是需要注意点是:有一个选项需要勾选;
如果所示,勾选MFC的选项即可;
2、如何显示MFC窗口
win32中使用MFC窗口显示需要一个宏声明:
AFX_MANAGE_STATE(AfxGetStaticModuleState());
就是这个宏了;
AFX_MANAGE_STATE(AfxGetStaticModuleState());一定是作为接口函数的第一条语句。
其功能是在栈上(这意味着其作用域是局部的)创建一个AFX_MODULE_STATE类的实例,并将其指 针pModuleState返回。
AFX_MODULE_STATE类利用其构造函数和析构函数进行存储模块状态现场及恢复现场的工作。
该宏用于将pModuleState设置为当前的有效模块状态。当离开该宏的作用域时(也就离开了pModuleState所指栈上对象的作用域),先前的模块状态将由类AFX_MODULE_STATE的析构函数恢复。(即自动恢复)
缺省情况下MFC使用主应用程序的资源句柄来载入资源模板,而DLL中的资源模板是存在于DLL模板中,因此要使用这一语句切换到由AfxGetStaticModuleState返回的正确的模块状态,得到正确的句柄。
如果不想画,则可以用MFC的东西了。
怎么用?
1、从创建工程说起:
首先应该创建一个win32的动态库工程或者控制台工程,看你需要了。但是需要注意点是:有一个选项需要勾选;
如果所示,勾选MFC的选项即可;
2、如何显示MFC窗口
win32中使用MFC窗口显示需要一个宏声明:
AFX_MANAGE_STATE(AfxGetStaticModuleState());
就是这个宏了;
AFX_MANAGE_STATE(AfxGetStaticModuleState());一定是作为接口函数的第一条语句。
其功能是在栈上(这意味着其作用域是局部的)创建一个AFX_MODULE_STATE类的实例,并将其指 针pModuleState返回。
AFX_MODULE_STATE类利用其构造函数和析构函数进行存储模块状态现场及恢复现场的工作。
该宏用于将pModuleState设置为当前的有效模块状态。当离开该宏的作用域时(也就离开了pModuleState所指栈上对象的作用域),先前的模块状态将由类AFX_MODULE_STATE的析构函数恢复。(即自动恢复)
缺省情况下MFC使用主应用程序的资源句柄来载入资源模板,而DLL中的资源模板是存在于DLL模板中,因此要使用这一语句切换到由AfxGetStaticModuleState返回的正确的模块状态,得到正确的句柄。
相关文章推荐
- 在MFC,Win32程序中向控制台(Console)窗口输出调试信息
- 在MFC,Win32程序中向控制台(Console)窗口输出调试信息
- 在MFC,Win32程序中向控制台(Console)窗口输出调试信息
- MFC程序对win32的封装总结(窗口类的注册,窗口的创建,窗口的窗口过程指定)
- WIN32项目中MFC程序窗口居中
- 在MFC,Win32程序中向控制台(Console)窗口输出调试信息
- 在MFC,Win32程序中向控制台(Console)窗口输出调试信息
- 在MFC,Win32程序中向控制台(Console)窗口输出调试信息
- Win32控制台程序如何获取MFC库支持
- GUI程序如何使用控制台输出调试信息[zz][MFC调用win32窗口显示调试信息,使用AllocConsole 函数 ]
- mfc(win32)gui程序中添加console信息输出输出窗口
- 同时支持控制台和MFC窗口程序的APP
- 在MFC,Win32程序中向控制台(Console)窗口输出调试信息
- MFC,Win32程序向控制台(Console)窗口输出调试信息
- MFC程序对win32的封装总结(窗口类的注册,窗口的创建,窗口的窗口过程指定)
- 如何从Win32环境编写MFC程序?
- [VC/MFC]一条语句实现程序运行时隐藏窗口
- 新建一个win32空工程,然后使用MFC创建程序
- Win32 或 MFC 下初始化OGRE 窗口
- [VC/MFC]一条语句实现程序运行时隐藏窗口