GDI对象选入多个设备景象导致显示失足的题目
添加时间:2013-6-16 点击量:
比来才开端写图形化的法度。
不禁感慨道固然也有很多不足,Windows作为一个操纵体系是多么的强大!当然,这也导致写法度很麻烦,尤其是关系到unicode编码的时辰。
今天碰到的题目是关于GDI对象的,代码如下:
1 void Cls_OnPaint(HWND hDlg)
2 {
3 PAINTSTRUCT ps;
4 HDC hDc, memDc;
5 HBITMAP hOldBitmap;
6
7 hDc = BeginPaint(hDlg, &ps);
8
9 SetStretchBltMode(hDc, COLORONCOLOR);
10 memDc = CreateCompatibleDC(hDc);
11 //hOldBitmap = SelectBitmap(memDc, g_hBitmap);
12 StretchBlt(hDc, 200, 6, 640, 480, memDc, 0, 0, g_Camera.iStreamWidth, g_Camera.iStreamHeight, SRCCOPY);
13 SelectBitmap(memDc, hOldBitmap);
14 //DeleteDC(memDc);
15
16 EndPaint(hDlg, &ps);
17 }
可以看到最初我并没有将内存设备景象删除,也没有将位图与内存设备景象的接洽断开。
源法度运行时界面对峙静止,没有遵守我的设显示动态的视频。
经过对比,起首想到的是内存设备景象没有删除,这导致GDI对象的泄漏,因为每次会新建一个。
将内存设备景象删除后法度运行正确,但推敲每次我都将位图选入内存设备景象后再画图,理论上应当可以显示动态视频,于是想到题目的底子不在此。
经测试后发明,将位图与内存设备景象断开后(即从头选入旧的位图),即使内存设备景象泄漏也可以正确显示。是以首要的题目出在:GDI对象选入了多个设备景象!
读书,不要想着实用,更不要有功利心。读书只为了自身的修养。邂逅一本好书如同邂逅一位知己,邂逅一个完美之人。有时心生敬意,有时怦然心动。仿佛你心底埋藏多年的话,作者替你说了出来,你们在时光深处倾心相遇的一瞬间,情投意合,心旷神怡。
比来才开端写图形化的法度。
不禁感慨道固然也有很多不足,Windows作为一个操纵体系是多么的强大!当然,这也导致写法度很麻烦,尤其是关系到unicode编码的时辰。
今天碰到的题目是关于GDI对象的,代码如下:
1 void Cls_OnPaint(HWND hDlg)
2 {
3 PAINTSTRUCT ps;
4 HDC hDc, memDc;
5 HBITMAP hOldBitmap;
6
7 hDc = BeginPaint(hDlg, &ps);
8
9 SetStretchBltMode(hDc, COLORONCOLOR);
10 memDc = CreateCompatibleDC(hDc);
11 //hOldBitmap = SelectBitmap(memDc, g_hBitmap);
12 StretchBlt(hDc, 200, 6, 640, 480, memDc, 0, 0, g_Camera.iStreamWidth, g_Camera.iStreamHeight, SRCCOPY);
13 SelectBitmap(memDc, hOldBitmap);
14 //DeleteDC(memDc);
15
16 EndPaint(hDlg, &ps);
17 }
可以看到最初我并没有将内存设备景象删除,也没有将位图与内存设备景象的接洽断开。
源法度运行时界面对峙静止,没有遵守我的设显示动态的视频。
经过对比,起首想到的是内存设备景象没有删除,这导致GDI对象的泄漏,因为每次会新建一个。
将内存设备景象删除后法度运行正确,但推敲每次我都将位图选入内存设备景象后再画图,理论上应当可以显示动态视频,于是想到题目的底子不在此。
经测试后发明,将位图与内存设备景象断开后(即从头选入旧的位图),即使内存设备景象泄漏也可以正确显示。是以首要的题目出在:GDI对象选入了多个设备景象!
读书,不要想着实用,更不要有功利心。读书只为了自身的修养。邂逅一本好书如同邂逅一位知己,邂逅一个完美之人。有时心生敬意,有时怦然心动。仿佛你心底埋藏多年的话,作者替你说了出来,你们在时光深处倾心相遇的一瞬间,情投意合,心旷神怡。