XP下用2005写的程序在2000下无法正常显示(在线等,解决即结贴) 读写文件、控件显示和操作一切正常,只是通过DC绘制的图形不能正常显示。在线等,解决即结贴! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我没有用到MFC之外的东西,只用了普通的CDC的一些接口,不管是画线,还是描点都不行。 CUniEditorDlg::CUniEditorDlg(CWnd* pParent /*=NULL*/): CDialog(CUniEditorDlg::IDD, pParent){ m_pBitmap = new CBitmap; m_pBitmap->CreateBitmap(rcMap.right, rcMap.bottom, 2, 16, NULL); m_dcMemory.CreateCompatibleDC(NULL);..........}OnPaint中CBitmap *poldBitmap1 = m_dcMemory.SelectObject((CBitmap *)m_pBitmap); m_dcMemory.SelectStockObject(BLACK_BRUSH); m_dcMemory.SelectStockObject(BLACK_PEN); m_dcMemory.Rectangle(&rcMap); m_dcMemory.SetPixel(h, v, m_clDraw[3]); m_dcMemory.SelectObject(&pen); m_dcMemory.MoveTo(lLine, v); m_dcMemory.LineTo(h, v); m_dc.BitBlt(rcMap.left+ptMap.cx, rcMap.top+ptMap.cy, rcMap.right+ptMap.cx, rcMap.bottom+ptMap.cy, &m_dcMemory, 0, 0, MERGECOPY);大致就用了这几个,画线、描点、画矩形都 不行 难道就只能在2000下重新编译了吗?有没有人通过修改库和WINDOWS版本解决这个问题?我昨天把程序用到的库都拷过去也不行 CBitmap是设备相关位图。若位图格式与当前设备的显示模式不一样的话,就显示不出来。对比一下你图片的格式和屏幕的颜色深度是否一致。还有一个可能:如果你用的是盗版的VC,有时候VC环境会出问题。必须重新安装VC才能解决,有时候甚至需要重新安装系统。 CreateBitmap()函数中的参数与操作系统版本有关系 问题已解决,谢谢各位!// xp, 2003下2可以CreateBitmap(rcMap.right, rcMap.bottom, 2, 16, NULL);// 2000下1可以CreateBitmap(rcMap.right, rcMap.bottom, 1, 16, NULL); 为了实现OS兼容,最好使用CreateCompatibleBitmap,已经通过。详参MSDN MFC怎么在2个线程里创建2个主窗口 无线网络编程~有做过的人吗? 一个滑动条控制调色板中几个滑块的不同速度的移动 button控件不响应ON_BN_CLICKED消息的问题 工具栏资源的ID的问题 在VC6.0中只能使用16色的图标吗? **如何拦截系统消息** 指针引用的怪问题 真奇怪 帮忙看看 thx 那位大虾有《深入浅处MFC》配套光盘中的第一章中线程的那个源程序,能给我吗? 怎样想视图类发送消息——刷新视图 在CFormView显示图片如何不闪烁 同一个工程中如何在一个对话框中使用另一个对话框类中的控件。
: CDialog(CUniEditorDlg::IDD, pParent)
{
m_pBitmap = new CBitmap;
m_pBitmap->CreateBitmap(rcMap.right, rcMap.bottom, 2, 16, NULL);
m_dcMemory.CreateCompatibleDC(NULL);
..........
}
OnPaint中
CBitmap *poldBitmap1 = m_dcMemory.SelectObject((CBitmap *)m_pBitmap);
m_dcMemory.SelectStockObject(BLACK_BRUSH);
m_dcMemory.SelectStockObject(BLACK_PEN);
m_dcMemory.Rectangle(&rcMap);
m_dcMemory.SetPixel(h, v, m_clDraw[3]);
m_dcMemory.SelectObject(&pen);
m_dcMemory.MoveTo(lLine, v);
m_dcMemory.LineTo(h, v);
m_dc.BitBlt(rcMap.left+ptMap.cx, rcMap.top+ptMap.cy,
rcMap.right+ptMap.cx, rcMap.bottom+ptMap.cy,
&m_dcMemory, 0, 0, MERGECOPY);
大致就用了这几个,画线、描点、画矩形都 不行
还有一个可能:
如果你用的是盗版的VC,有时候VC环境会出问题。必须重新安装VC才能解决,有时候甚至需要重新安装系统。
CreateBitmap(rcMap.right, rcMap.bottom, 2, 16, NULL);// 2000下1可以
CreateBitmap(rcMap.right, rcMap.bottom, 1, 16, NULL);