MFC下OpenGL编程有用的小代码片段

1、MFC画图测试

void Codemo21View::draw(void)//画图测试
{
    HWND hWnd = GetSafeHwnd();
    HDC hDC = ::GetDC(hWnd);
    wglMakeCurrent(hDC,m_hGLContext);

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);   
    glLoadIdentity();

    glTranslatef(1.5f,0.0f,-6.0f);
    glBegin(GL_QUADS);    //  绘制正方形
    glColor3f(-1.0f,-1.0f,-1.0f);
    glVertex3f(-1.0f, 1.0f, -100.0f);    // 左上
    glColor3f(0.0f,255.0f,0.0f);
    glVertex3f( 1.0f, 1.0f,-100.0f);    // 右上
    glColor3f(0.0f,0.0f,255.0f);
    glVertex3f( 1.0f,-1.0f, -100.0f);    // 左下
    glColor3f(1.0f,1.0f,-1.0f);
    glVertex3f(-1.0f,-1.0f, -100.0f);    // 右下
    glEnd();     // 正方形绘制结束

    SwapBuffers(hDC);
}

2、OpenGL初始化

BOOL Codemo21View::PreCreateWindow(CREATESTRUCT& cs)

    cs.style |= (WS_CLIPCHILDREN | WS_CLIPSIBLINGS);//openGL必需的
    return CView::PreCreateWindow(cs);
}

3、

// 分析标准外壳命令、DDE、打开文件操作的命令行
CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);

//取消MDI运行时默认新建文件。
if(cmdInfo.m_strFileName == "")
cmdInfo.m_nShellCommand = CCommandLineInfo::FileNothing;

4、

//对象类型判断
//oTe是oFireworks的父类,只有一个虚函数
oFireworks *p_osh = dynamic_cast<oFireworks *>((oTe *)pView->TreeCtrl->GetItemData(pView->TreeCtrl->GetSelectedItem())); 
if(NULL == p_osh) 

    //pObject不能指向一个oFireworks对象
    AfxMessageBox(_T("no"));

else

    //pObject被安全的转换成了oFireworks对象
    AfxMessageBox(_T("yes"));
}

5、非模式对话框

if(m_playdialog == null)
{
    m_playdialog = new oaplaydialog();
    m_playdialog->create(idd_oaplaydialog,this);
    m_playdialog->showwindow(sw_show);
}
else
{
    m_playdialog->showwindow(sw_show);
    m_playdialog->setactivewindow();
}

6、

“\ntt3\ntt5\ntt4 Files (*.tt0)\n.tt0\ntt1.Document\ntt6.Document ”
“\n文档类型名称\n新文件简称\n筛选器名\n扩展名\n文件类型\n文件类型全称”

7、

无论是调用DestroyWindow()还是发送WM_CLOSE消息,窗口关闭后一定要删除CWND对象,否则它将成为内存中的垃圾。

原文地址:https://www.cnblogs.com/afarmer/p/2033646.html