c++用mfc应用程序调用创建glut窗口的dll,如何关闭glut窗口而不终止应用程序

c++用mfc应用程序调用创建glut窗口的dll,如何关闭glut窗口而不终止应用程序,第1张

c++用mfc应用程序调用创建glut窗口的dll,如何关闭glut窗口而不终止应用程序

简述遇到的问题:我创建了一个mfc应用程序,并调用自己创建的mfc的dll,mfc的dll里面是用glutCreateWindow函数创建的glut窗口,但是当我开启mfc应用程序时,鼠标点击glut窗口右上角的关闭时,glut窗口和mfc应用程序全部关掉了。

想实现的效果:当我关闭glut窗口后,mfc应用程序不会一起关闭,而是继续存在。

解决方法:

需要在最上面#include “freeglut.h”,并在glutMainLoop()函数前加一句glutSetOption(GLUT_ACTION_ON_WINDOW_CLOSE, GLUT_ACTION_CONTINUE_EXECUTION);

也就是写成下面的形式:
#include “freeglut.h”
glutSetOption(GLUT_ACTION_ON_WINDOW_CLOSE, GLUT_ACTION_CONTINUE_EXECUTION);
glutMainLoop();

自己实际解决问题的流程:
但是glutSetOption函数不在glut.h文件中,而是在freeglut.h中,需要引入freeglut.h文件,但自己创建的mfc的dll里面是引入的glut.h文件,并且当初visual studio项目属性里包含了许多glut的库目录,为了防止glut.h和freeglut.h里面的函数定义冲突,所以我新建了一个mfc dll项目,新建的项目里不在引入glut.h、glu.h、gl.h文件,而是只引入了freeglut.h文件。

下载freegult.h和freeglut.dll以及freeglut.lib的地址:
https://www.transmissionzero.co.uk/software/freeglut-devel/
进去之后点击MSVC-3.0.0的那个下载

下载完后将freeglut\include\GL文件夹下的freeglut.h、freeglut_ext.h、freeglut_std.h这三个和lib文件夹下的freeglut.lib和bin文件夹下的freeglut.dll全部放到一个文件夹下,并将这个文件夹放到项目目录下,然后将文件夹的目录位置设置到项目属性中的vc++目录里的包含目录和库目录中,并在属性中链接器里附加依赖性中加上freeglut.lib,最后将freeglut.dll文件放到C:\Windows\SysWOW64\目录下(如果是32位版本)或C:\Windows\System32\目录下(如果是64位版本)。

提示:下载完后的文件夹下x64里面是64位版本的,不在x64里面的是32位版本的。

最后我重新生成mfc dll文件,然后在从mfc应用程序里调用这个dll,就实现了关闭glut窗口而不会结束mfc应用程序。

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

原文地址: http://outofmemory.cn/langs/3002840.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-09-27
下一篇 2022-09-27

发表评论

登录后才能评论

评论列表(0条)

保存