在其中一个页面里绘图:
void CMyPaint::OnTimer(UINT_PTR nIDEvent)
{
HWND hWnd = this->GetSafeHwnd();
HDC hDC = ::GetDC(hWnd);
m_hDC = hDC; wglMakeCurrent(m_hDC,this->m_hGLContext);
DrawGrid(); //OpenGL绘图程序
glColor4f(1.0f,0,0,1.0f);
selectFont(40, ANSI_CHARSET,"Times New Roman");
if(m_hDC != NULL)
{
wglUseFontBitmaps(m_hDC, 0, 128, 256);
glRasterPos2f(40.0F, 260.0F);
glListBase(256);
glCallLists(5,GL_UNSIGNED_BYTE,"hello");
glRasterPos2f(250.0F, 260.0F);
glCallLists(5,GL_UNSIGNED_BYTE,"hello");
glRasterPos2f(140.0F, 260.0F);
glCallLists(5,GL_UNSIGNED_BYTE,"hello");
}
Invalidate(FALSE);
wglMakeCurrent(NULL,NULL);
if(m_hDC)
::ReleaseDC(hWnd,m_hDC); CDialog::OnTimer(nIDEvent);
}
其中
void CMyPaint::selectFont(int size, int charset, const char* face)
{
HFONT hFont = CreateFontA(size, 0, 0, 0, FW_MEDIUM, 0, 0, 0,
charset, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY, DEFAULT_PITCH | FF_SWISS, face);
if(m_hDC != NULL)
{
HFONT hOldFont = (HFONT)SelectObject(m_hDC, hFont);
DeleteObject(hOldFont);
}
}
如果我调用selectFont函数时,程序运行一段时间后就会出现异常,界面显示不正常,如果不调用selectFont的话,程序就会正常显示。是怎么回事啊?
void CMyPaint::OnTimer(UINT_PTR nIDEvent)
{
HWND hWnd = this->GetSafeHwnd();
HDC hDC = ::GetDC(hWnd);
m_hDC = hDC; wglMakeCurrent(m_hDC,this->m_hGLContext);
DrawGrid(); //OpenGL绘图程序
glColor4f(1.0f,0,0,1.0f);
selectFont(40, ANSI_CHARSET,"Times New Roman");
if(m_hDC != NULL)
{
wglUseFontBitmaps(m_hDC, 0, 128, 256);
glRasterPos2f(40.0F, 260.0F);
glListBase(256);
glCallLists(5,GL_UNSIGNED_BYTE,"hello");
glRasterPos2f(250.0F, 260.0F);
glCallLists(5,GL_UNSIGNED_BYTE,"hello");
glRasterPos2f(140.0F, 260.0F);
glCallLists(5,GL_UNSIGNED_BYTE,"hello");
}
Invalidate(FALSE);
wglMakeCurrent(NULL,NULL);
if(m_hDC)
::ReleaseDC(hWnd,m_hDC); CDialog::OnTimer(nIDEvent);
}
其中
void CMyPaint::selectFont(int size, int charset, const char* face)
{
HFONT hFont = CreateFontA(size, 0, 0, 0, FW_MEDIUM, 0, 0, 0,
charset, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY, DEFAULT_PITCH | FF_SWISS, face);
if(m_hDC != NULL)
{
HFONT hOldFont = (HFONT)SelectObject(m_hDC, hFont);
DeleteObject(hOldFont);
}
}
如果我调用selectFont函数时,程序运行一段时间后就会出现异常,界面显示不正常,如果不调用selectFont的话,程序就会正常显示。是怎么回事啊?
解决方案 »
- DX问题:如果一个窗口创建两个DX设备,如何使一个设备显示另一个设备渲染的suface
- 急!ADO 调用GetCollect()读取空字段时发生错误,该怎么解决???
- 请大家帮忙看一下对话框加载时的界面显示问题?
- 大家认为国内软件开发的最深层次是哪些公司呢?哪个行业呢?
- vc前途怎样?
- 求助:可以不用AT命令,直接对modem编程吗?
- OnLButtonDown 为什么不能是虚函数?
- 如何创建事件的接受器,与别的应用程序的事件关联?
- help!如何在VC中创建一个service application.谢了!
- 急!在COM里怎么访问数据库的问题
- 请高手讨论一下网络数据转发的模型
- VS.NET 2003和.net有什么区别?
void CMyPaint::OnTimer(UINT_PTR nIDEvent)
{
HWND hWnd = this->GetSafeHwnd();
HDC hDC = ::GetDC(hWnd);
m_hDC = hDC; wglMakeCurrent(m_hDC,this->m_hGLContext);
DrawGrid(); //OpenGL绘图程序
glColor4f(1.0f,0,0,1.0f);
/////////////////////////
HFONT hFont = CreateFontA(size, 0, 0, 0, FW_MEDIUM, 0, 0, 0,
charset, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY, DEFAULT_PITCH | FF_SWISS, face);
if(m_hDC != NULL)
{
HFONT hOldFont = (HFONT)SelectObject(m_hDC, hFont); }
////////////////////////
if(m_hDC != NULL)
{
wglUseFontBitmaps(m_hDC, 0, 128, 256);
glRasterPos2f(40.0F, 260.0F); glListBase(256);
glCallLists(5,GL_UNSIGNED_BYTE,"hello");
glRasterPos2f(250.0F, 260.0F);
glCallLists(5,GL_UNSIGNED_BYTE,"hello");
glRasterPos2f(140.0F, 260.0F);
glCallLists(5,GL_UNSIGNED_BYTE,"hello");
} Invalidate(FALSE);
wglMakeCurrent(NULL,NULL);
/////////////////////
SelectObject(m_hDC, hOldFont );
DeleteObject(hFont);
//////////////////////////if(m_hDC)
::ReleaseDC(hWnd,m_hDC); CDialog::OnTimer(nIDEvent);
}