我想在对话框的OnPaint()里根据路径贴一副图片,路径保存在str里,内容如下
void CBmpDLg::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
CString str = m_strBmpPath + m_strBmpName;//保存图片路径
HBITMAP hBmp = (HBITMAP)::LoadImage(NULL,str,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
if (hBmp = NULL)
{
MessageBox("");
} CDC dcCompatible;
dcCompatible.CreateCompatibleDC(&dc);
dcCompatible.SelectObject(hBmp);
dc.BitBlt( 10,10,362,298,&dcCompatible,0,0,SRCCOPY );
DeleteDC(dcCompatible);
}
但是图片显示不出来,请问是哪里的问题?
void CBmpDLg::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
CString str = m_strBmpPath + m_strBmpName;//保存图片路径
HBITMAP hBmp = (HBITMAP)::LoadImage(NULL,str,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
if (hBmp = NULL)
{
MessageBox("");
} CDC dcCompatible;
dcCompatible.CreateCompatibleDC(&dc);
dcCompatible.SelectObject(hBmp);
dc.BitBlt( 10,10,362,298,&dcCompatible,0,0,SRCCOPY );
DeleteDC(dcCompatible);
}
但是图片显示不出来,请问是哪里的问题?
解决方案 »
- 请教关于CList的几个问题
- SendMessage到另一个进程的Edit框问题
- 求助: 应用程序正常初始化(0xc0150002)失败
- UDP广播 需要知道局域网内要通信得其他机器IP和端口么??
- 类外动态创建控件资源的问题!
- 如何在socket中传送结构体阿。。。
- unexpected end of file while looking for precompiled header directive
- GetHttpConnection的第一个参数Server不能使用IP地址吗
- 语音传输是用什么方式好?CAsnycSocke还是CSocket?
- 三顾茅庐(.DLL问题悬而未决)
- 问个基础的问题,为什么需要动态创建,哪些情况需要动态创建
- 反射镜游戏解法
--->
if (hBmp == NULL)
另外,确保BitBlt参数(尺寸)要正确,GDI资源用后要选出DC销毁。
CDC dcMemory;
bitmap.LoadBitmap(IDB_JJ_BITMAP);
//CDC类的LoadBitmap函数负责将一个基于资源的DIB转换为GDI位图。
/*当然如果该资源位于DLL或者其他EXE中,可以采取下面办法得到其指针:
LPVOID lpvResource=(LPVOID)::LoadResource(NULL,
::FindResource(NULL,
MAKEINTRESOURCE(IDB_JJ_BITMAP),
RT_BITMAP)
);
*/
//之所以能用调用,是因为在进程生存期内,他们(资源)所占用的虚拟地址空间不发生任何改变,
//我们可以用以上代码获得DIB地址。
dcMemory.CreateCompatibleDC(pDC);
dcMemory.SelectObject(&bitmap);
pDC->BitBlt(10,10,400,300,&dcMemory,0,0,SRCCOPY);
pDC->BitBlt(420,10,200,200,&dcMemory,0,0,SRCCOPY);
pDC->BitBlt(10,320,180,300,&dcMemory,130,0,SRCCOPY);
//当映射模式不是MM_TEXT的时候,如果我想让IDB_JJ_BITMAP占据一个400*300象素的矩形框,
//那么可以采用下面3个语句来取代BITBLT调用,那么无论映射模式是什么,
//IDB_JJ_BITMAP都将清晰的显示出来
/*=========================================================
CSize size(400,300);
pDC->DPToLP(&size);
pDC->StretchBlt(0,0,size.cx,-size.cy,&dcMemory,0,0,400,300,SRCCOPY);
=========================================================*/
如果是的话,请把你的抓拍程序改改,严格按照位图的结构保存.
不是的话就简单了,换个方式加载.网上比较多的是借助CPicture类,很好用的