以前的程序因为没有释放DC造成资源泄露而死机.查到问题以后,
释放了DC,最近又出现新的毛病----白屏!
这回我是真的不懂了.因为这涉及了显卡等硬件问题.
来求助,希望有懂的人能给我指个方向.着急要做实验,时间不多了.
谢谢给予我帮助的人了
释放了DC,最近又出现新的毛病----白屏!
这回我是真的不懂了.因为这涉及了显卡等硬件问题.
来求助,希望有懂的人能给我指个方向.着急要做实验,时间不多了.
谢谢给予我帮助的人了
CDC *pDC=GetDC();
CBrush greenBrush(RGB(0,255,0)),redBrush(RGB(255,0,0)),whiteBrush(RGB(2,100,30));
CBrush* pOldBrush;
switch(ColorNum)
{
case 0:pOldBrush=pDC->SelectObject(&redBrush);
break;
case 1:pOldBrush=pDC->SelectObject(&greenBrush);
break;
case 2:pOldBrush=pDC->SelectObject(&whiteBrush);
break;
}
pDC->Ellipse(&m_LightRect);
pDC->SelectObject(pOldBrush);
之前是因为这个pDC没有释放.现在释放了pDC.跑死的情况不出现了.
加了句ReleaseDC(pDC);
现在就是会白屏.我现在想知道什么原因会导致白屏呢
通常应该响应WM_PAINT消息,在OnPaint函数中绘制,可以先调用基类的OnPaint函数,然后加入这段代码。
之前死机是其中一个绘图的线程造成的资源泄露.而且之前跑的时候根本没有白屏的情况出现.
当我找到死机的原因之后,把DC释放了.
现在就是这个白屏的问题出现了. 程序是从串口接收数据,解算数据以后进行线程的同步.
运行程序的时候还在运行着ccx6000 2个cpu的程序.
不知道这会不会是造成白屏的原因.
对这个白屏的问题没有解决的思路,希望有人能给我个思路也成啊。
if((m_Zitai.m_hWnd)&&(m_Zitai.IsWindowVisible()))
//m_Zitai.InvalidateRect(m_Zitai.m_DrawZiTaiRect,FALSE);
m_Zitai.DrawZiTaiEvent.SetEvent();
if(m_CalibrationBeganQuery)
m_MakeCalibrationData();
if(!m_timefreshflag)
{
m_MakeDrawDataForDisplay();
DrawMainWindowEvent.SetEvent();
DrawDepthEvent.SetEvent();
m_DlgFeature.DrawFeatureEvent.SetEvent();
SendAndShowDataEvent.SetEvent();
}
这是同步线程的代码,还有个线程是进行绘制一个小灯,只在应用程序退出后才挂起.