@这两天弄了拆分窗口和图片的显示,还有把前面的基础又弄了下。
@之前界面这块用的是动态拆分窗口,可是考虑到别的操作,包括图片的显示区域以及具体操作的时候,窗口的索引等信息会出现莫名其妙现在不理解的问题。而如果用静态窗口,可以方便定制不同类别的视图,也不会有那些问题。动态拆分也可以定制不同的视图,方法好像是重构那个拆分条。
@图片读取这块,要能处理多种图片类型(JPEG,BMP,PNG,,,),然后发现了CImage这个好东东。
@一堆琐碎的细节问题。
1. OpenGL/MFC
OpenGL在MFC上使用的关键就是构建一个能够给OpenGL使用的环境,包括下面几步:
- 往View中增加一个OpenGL渲染句柄变量
- 在OnCreate函数中使用SetPixelFormat设置窗口的像素格式,返回最匹配该像素格式的像素格式索引值,然后依此用wglCreateContext建立RC句柄
- 在OnSize和OnPaint/OnDraw中每次要画的时候,用wglMakeCurrent把View中的句柄赋到当前DC中,然后绘制,并且要记住释放相关的资源
- 这个过程不常用的话,肯定不熟悉,那么找本书或者上网现查
下面几点注意:
- CPaintDC只能用在响应WM_PAINT事件,CClientDC只能用在响应非WM_PAINT事件,关于DC(Device Context),详细见此
- HDC的获取并不只有一种方式
//法1
HWND hWnd = GetSafeHwnd();
HDC hDC = ::GetDC(hWnd);
m_hRC = wglCreateContext(hDC);
//法2
CClientDC dc(this);
m_hRC = wglCreateContext(dc.m_hDC);