2012-03-12 19:33:35|?次阅读|上传:wustguangh【已有?条评论】发表评论
关键词:C/C++, 图形/图像, MFC|来源:唯设编程网
Step 6、完成测试用MFC应用程序glGobang。
#include "..OpenGLLibOpenGLLib.h" #pragma comment (lib,"..debugOpenGLLib.lib")
// CglGobangDlg 对话框
class CglGobangDlg : public CDialog
{
private:
COpenGLLib* pOpenGL;
CClientDC* pImgDC;
//...
}
CglGobangDlg::CglGobangDlg(CWnd* pParent /*=NULL*/)
: CDialog(CglGobangDlg::IDD, pParent),
pOpenGL(NULL),pImgDC(NULL)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
// CglGobangDlg 消息处理程序
BOOL CglGobangDlg::OnInitDialog()
{
//......
// TODO: 在此添加额外的初始化代码
RECT recIMG; //画布区域
//在其它控件中画图,将下面两行的this改成其它控件的CWnd即可
pImgDC=new CClientDC(this);
this->GetWindowRect(&recIMG);
pOpenGL=new COpenGLLib(pImgDC);
pOpenGL->resetCanvasSize(recIMG.right-recIMG.left,recIMG.bottom-recIMG.top);
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}
void CglGobangDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // 用于绘制的设备上下文
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
// 使图标在工作区矩形中居中
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// 绘制图标
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
//进行OpenGL绘图
pOpenGL->draw();
}
}