各位DX,帮忙看看,不知道怎么回事,有时候好用,有时候就是全黑,bitmap显示不正常。刚学vc,有点挠头...
void CTestDlg::DrawPic()
{
HDC hDC[4],hMemDC[4];
HBITMAP hBitmap[4];
BITMAP bm; hDC[0] = ::GetDC(::GetDlgItem(GetSafeHwnd(),IDC_STATIC1));
hMemDC[0] = CreateCompatibleDC(hDC[0]); hDC[1] = ::GetDC(::GetDlgItem(GetSafeHwnd(),IDC_STATIC2));
hMemDC[1] = CreateCompatibleDC(hDC[1]); hDC[2] = ::GetDC(::GetDlgItem(GetSafeHwnd(),IDC_STATIC3));
hMemDC[2] = CreateCompatibleDC(hDC[2]); hDC[3] = ::GetDC(::GetDlgItem(GetSafeHwnd(),IDC_STATIC4));
hMemDC[3] = CreateCompatibleDC(hDC[3]); for (int i=0; i<4; i++)
{
if (m_cColor[i] == COLOR_GREEN)
hBitmap[i] = ::LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP2));
else if (m_cColor[i] == COLOR_BLUE)
hBitmap[i] = ::LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP1));
else
hBitmap[i] = ::LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP3)); SelectObject(hMemDC[i],hBitmap[i]);
GetObject(hBitmap[i],sizeof(bm), &bm);
BitBlt(hDC[i],0,0,bm.bmWidth,bm.bmHeight,hMemDC[i],0,0,SRCCOPY);
::ReleaseDC(GetSafeHwnd(),hDC[i]);
DeleteDC(hMemDC[i]);
}
}
void CTestDlg::DrawPic()
{
HDC hDC[4],hMemDC[4];
HBITMAP hBitmap[4];
BITMAP bm; hDC[0] = ::GetDC(::GetDlgItem(GetSafeHwnd(),IDC_STATIC1));
hMemDC[0] = CreateCompatibleDC(hDC[0]); hDC[1] = ::GetDC(::GetDlgItem(GetSafeHwnd(),IDC_STATIC2));
hMemDC[1] = CreateCompatibleDC(hDC[1]); hDC[2] = ::GetDC(::GetDlgItem(GetSafeHwnd(),IDC_STATIC3));
hMemDC[2] = CreateCompatibleDC(hDC[2]); hDC[3] = ::GetDC(::GetDlgItem(GetSafeHwnd(),IDC_STATIC4));
hMemDC[3] = CreateCompatibleDC(hDC[3]); for (int i=0; i<4; i++)
{
if (m_cColor[i] == COLOR_GREEN)
hBitmap[i] = ::LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP2));
else if (m_cColor[i] == COLOR_BLUE)
hBitmap[i] = ::LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP1));
else
hBitmap[i] = ::LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP3)); SelectObject(hMemDC[i],hBitmap[i]);
GetObject(hBitmap[i],sizeof(bm), &bm);
BitBlt(hDC[i],0,0,bm.bmWidth,bm.bmHeight,hMemDC[i],0,0,SRCCOPY);
::ReleaseDC(GetSafeHwnd(),hDC[i]);
DeleteDC(hMemDC[i]);
}
}
解决方案 »
- 好几个月在VC版是潜水,现在冒个泡.
- 非常不明白的一个问题,希望大家给看一下,谢谢拉
- CListView如何实现当鼠标移动到某一行时弹出一个提示框
- 想完全复制CWnd界面上画的所有内容要怎么做?
- 如何在生成一个进程后,获取该进程的返回值
- ListCtrl问题 在线等待 50 分
- 如何在右键弹出菜单中加图标?
- 怎么在按对话框的关闭按纽(或者随便一个按纽)时不发生任何控件的KillFocus消息.
- 请看这一段代码!
- Help!!!程序编译及连接没有任何错误,运行时却跳出个VC窗口:Cannot execute program!Why??
- 请教下VC对话框上编辑框的事
- 人命关天,自己写的类似Telnet的服务程序, 请问有没有访问纪录呢(100分)
我画在了static text,主要是我了防止我自己固定坐标,而防止显示器分辩率变化而使图片显示位置乱。我设置定时器定时刷新,是可以正常显示的。只是不知道什么原因,程序运行一会,我的程序窗口上的控件就会变黑,如果不关闭窗口,则程序无法继续工作,我怀疑画图这里出现问题TO:zengwenfu()
在onpaint里刷新,每次调用时,整个窗口都会跟着刷新,可能会有点闪吧
另外,在OnPaint中绘图,不会引起闪烁。频繁切换图片(绘制背景、绘制前景)才会引起闪烁。
老大,你能在我的代码的基础上告诉我如何修改吗?我是个mfc的初学者,谢谢了,我现在也知道这段代码有问题,不知道怎么改,更不知道原因?
BOOL DeleteObject(
HGDIOBJ hObject
);
SelectObject(hMemDC[i],hBitmap[i]);
GetObject(hBitmap[i],sizeof(bm), &bm);
BitBlt(hDC[i],0,0,bm.bmWidth,bm.bmHeight,hMemDC[i],0,0,SRCCOPY);
::ReleaseDC(GetSafeHwnd(),hDC[i]);
DeleteObject(hBitmap[i]);
DeleteDC(hMemDC[i]);没有试,不知道对不对