深入研究OpenGL后,才发现自己以前所用的光照和纹理都是皮毛!!!
头疼,就接着上一篇界面设置,今天记录一下菜单的设置。
一、打开资源视图/Menu/IDR_StudyTYPE
手动加入一个“图形学实验”,再加入一个选项“绘图一”
假如绘图一就是上一次绘制的图形,这样的话就需要把开始界面的图形清空,当然这很容易,我们注释掉drawpicture()函数里面的代码即可
二、加入事件处理程序
为了方便,记为OnOne()函数,不过要注意这是对视图类View.h进行操作的(还是建议了解一下View.h、App.h等)
这样我们直接把刚才注释的代码copy到OnOne()函数就行了?当然不可以啊!我们可以在View.cpp里面设置一个变量Case来标记绘图,这样在OnOne()函数里面,加入一句话Case = 1,然后在DrawPicture()函数里面加个判断,if(Case == 1)就执行那段被注释的代码。
我们运行一下结果,咦?还是没变化?
当然啦~~~这里简要说下原因,这是没有调用OnDraw()函数的原因。
OnDraw()函数的调用,(1)窗口刚创建的时候(2)视图窗口改变(3)向系统发送WM_PAINT消息。
这样的话,我们在OnOne()函数再加一句SendMessage(WM_PAINT);即可。
如果你还想加入其他绘图实验,都是一个套路。
但是如果加入的图形中既有二维图形,又有三维图形,要怎么办呢?为了保证图形显示无误,我们就舍弃掉OnSize()、OnInitialUpdate()函数,在绘图的时候加上OpenGL中的Init()、Reshape()函数即可。
二维和三维的Reshape()写法在在Visual Studio 2013下利用MFC框架配置OpenGL可以找到。