我创建了一个基于MFC Dialog模式的工程,然后写了如下代码:
CDC* pDC = this->GetDC();
BITMAP bm;
ZeroMemory(&bm, sizeof(BITMAP));
int a;
a = pDC->GetCurrentBitmap()->GetBitmap(&bm); //MSDN上说返回值如果为0则表示调用失败,而我这里的返回值确实是0,这是怎么回事,还请高人指点!!!
CDC* pDC = this->GetDC();
BITMAP bm;
ZeroMemory(&bm, sizeof(BITMAP));
int a;
a = pDC->GetCurrentBitmap()->GetBitmap(&bm); //MSDN上说返回值如果为0则表示调用失败,而我这里的返回值确实是0,这是怎么回事,还请高人指点!!!
解决方案 »
- 请问该类的对象如何初始化
- 滚动条问题
- 200分求助!谁能帮我解释一下[由svchost调用的服务原理与实践]一文一些疑问!
- 请教高人关于WH_MOUSE_LL的问题
- ***请问有将delphi原代码转换成vc的工具吗?***
- 请问一下ListCtrl 多个选择的时候,如何获得第一个和最后一个被选的Items序号?
- 初学vc++,一系列低级属性不知道,请您帮忙!
- Dao数据库引擎初始化错误是怎么回事呀??
- 如何把DLL封装为COM组件供C#程序调用
- C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\string.h(115): fa
- (100分)turbo c++ 中运行的程序如何在vc中运行
- 此转彼不转,难道英雄汉!我在一个三维实体表面上绘制结构线,当实体转过180度后,绘制的结构线却不随着实体转过180!具体内详!
CBitmap MemBitmap;
pdc->SelectObject(&MemBitmap);
然后才能操作GetBitmap
{
HBITMAP hBitmap;
BITMAP BM;
CDC MemDC;
CClientDC ClientDC(this);
MemDC.CreateCompatibleDC(&ClientDC);
hBitmap = (HBITMAP)::LoadImage(AfxGetInstanceHandle(),strPath,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
MemDC.SelectObject(&hBitmap);
::GetObject(hBitmap,sizeof(BM),&BM);
//使用格式与方法一同
//ClientDC.BitBlt(0,0,BM.bmWidth,BM.bmHeight,&MemDC,0,0,SRCCOPY);
//
CStatic *pStatic = (CStatic *)GetDlgItem(IDC_BMPSHOW) ;
pStatic=((CStatic *)GetDlgItem(IDC_BMPSHOW)); //tu是CStatic *;
pStatic->ModifyStyle(0xF,SS_BITMAP|SS_CENTERIMAGE);
int nLength = m_Path.GetLength();
char* sz=new char(nLength);
sz=m_Path.GetBuffer(0);
pStatic->SetBitmap(hBitmap);
}
{
CFileDialog dlg(TRUE,"*.bmp",NULL,NULL,"ホサヘシホトシ(*.bmp)||)");
if(dlg.DoModal()==IDOK)
{
strPath = dlg.GetPathName();
Invalidate();
}
}
我觉得你错误也是在设备上下文中没有选入位图造成的:
CBitmap pBitmap,*pOldBitmap;
BITMAP bm;
if(!Bitmap.LoadBitmap(AfxGetInstanceHandle(),lpszBitmap))
return FALSE;
CDC* pDC = this->GetDC();
CDC MemDC;
MemDC.CreateCompatibleDC(pDC);
pOldBitmap=(CBitmap*)MemDC.SelectObject(&Bimtap);
BITMAP bm;
//ZeroMemory(&bm, sizeof(BITMAP));
//int a;
pDC->GetCurrentBitmap()->GetBitmap(&bm);
//也可以用Bitmap.GetBitmap(&bmj);
//也可以用Bitmap.GetObject(sizeof(BITMAP),&bm);
pDC->Bitblt(0,0,bm.bmWidth,bm.bmHeight,&MemDC,0,0,SRCCOPY);
MemDC.SelectObject(pOldBitmap);