关于Invalidate的问题
我的一个程序,需要在每0.1秒内调用Invalidate刷新屏幕。前面一直都没问题。但到16分钟多后,就出现异常了,界面不刷新了。就边点击菜单都会先出来一块黑块,过几秒钟才出来,窗口上的其它控件也不刷新。
在VC2010下调试运行时,在出错的时候,输出窗口中显示有如下错误。
0x74e7812f 处最可能的异常: Microsoft C++ 异常: 内存位置 CResourceException
OnPaint中代码如下
CPaintDC dcMic(GetDlgItem(IDC_PIC_MIC));
CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP1);
//得到图片信息
BITMAP bmpInfo;
bmp.GetBitmap(&bmpInfo);
//在内存中创建一个位图兼容设备
CDC dcMemory1,dcMemory2;
dcMemory1.CreateCompatibleDC(&dcMic);
//将图片选入兼容设备
CBitmap *pOldBmp=dcMemory1.SelectObject(&bmp);
//将兼容设备的内容copy到屏幕设备中,实现真正的Paint
dcMic.BitBlt(0, 0, bmpInfo.bmWidth, bmpInfo.bmHeight, &dcMemory1, 0, 0, SRCCOPY);
dcMemory1.SelectObject(pOldBmp);
dcMic.FillSolidRect(0,0,(int)(280*g_fInPic),18,RGB(51,0,51));
显示问题出在bmp.GetBitmap。
软件断在afxwin1.inl中GetBitmap下的ASSERT(m_hObject != NULL),我怀疑可能是bmp.LoadBitmap(IDB_BITMAP1)没有成功。