1、安装VS中的MFC框架;
2、新建一个MFC文件,选择单文档,高级功能全部不勾选,其他的不用管,建立(如下图);
3、将OpenGLView.cpp和OpenGLView.h文件放入该新建文件的根目录;
4、在解决方案资源管理器那里添加OpenGLView的头文件和cpp文件;(这里的cpp和h文件内部已经编译好了)
5、在调试——调试属性的编译器——输入那里将opengl32.lib;glu32.lib添加上去;
6、因为VS版本问题,有的OpenGLView和DrawLineView的头文件是“pch.h”,有的是“stdx...h”,需要将“stdx...h”都改成“pch.h”。
/7、将DrawLineView的cpp文件和h文件里面的继承的父类CView都改成COpenGLView,COpenGLView继承自它原本的CView,不用修改。
8、做到这里,如果你的项目没有报错,成功运行之后看到的应该是一个白板,没有Display里面的三角形;
如果想要显示三角形画面,需要将DrawLineView的cpp文件和h文件里面的OnDraw函数给注释掉;
然后再次运行,三角形就可以显示在屏幕上了。
9、在DrawLineView.cpp文件里面的类向导里面添加鼠标响应信息,只有这样 *** 作系统才会自动调用,如下图,再点击确定;(如果鼠标响应消息不是通过类向导添加的,而是直接复制粘贴过来的,系统不会自动调用,即系统不会响应这些函数,画面也不会出现划线功能)
有的同学可能从方法那里添加,那样不行;从cpp和h文件里手工添加,也不行,都会缺失MESSAGEMAP那里的代码,从而不能建立真正的消息映射。
10、在鼠标响应信息里面写上相应代码,并且在DrawLineView.cpp文件里面写上划线的实现算法,比如DDA算法;ps:如果是自己写的鼠标响应信息,鼠标响应消息里面需要调用Invalidate(false);
(后续各种界面交互,都是类似逻辑,在消息响应程序里修改某些变量,而这些变量在绘制程序里使用。
因此在消息响应程序修改变量后,需要调用Invalidate函数通知系统,变量修改导致当前画面失效(即不再反映现实)了,画面需要重绘)
在DrawLineView.cpp文件里面的Display里面写格子的代码(可以用循环实现);
格子和划线功能就实现了。
11、以上记录的是 *** 作步骤,至于具体算法的代码就不放了,避免大家的作业雷同。
具体清屏函数和改变颜色的函数在此也不详细介绍。
12、以下是可能出现的报错:
老师的解决思路:
1、opengl32.lib和glu32.lib可能没有弄好,导致OpenGL那些函数链接出问题;
2、OnSize这个可能是别的原因;
3、包含文件处理的不好,导致函数重复定义了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)