内存有关的操作
请看下面的代码:
目的:
先把图片选到memdc里,然后在把memdc的图片copy到tmpdc里
然后再把tmpdc里的图片显示在picture控件上
碰到问题:显示不出来 ,不知道为什么 ?是否创建内存dc的时候不对,
此代码可以编译通过
HBITMAP *hbp ;
HDC dc = m_b.GetDC()->m_hDC ; //m_b是picture控件的contro变量
HDC memdc , tmpdc ;
hbp = ( HBITMAP *)::LoadBitmap( ::AfxGetInstanceHandle() , MAKEINTRESOURCE( IDB_BITMAP1 ) ) ;
memdc = ::CreateCompatibleDC( dc ) ;
tmpdc = ::CreateCompatibleDC( dc ) ;
BITMAP BM ;
::GetObject( hbp , sizeof( BM ) , &BM ) ;
::SelectObject( memdc , hbp ) ;
CRect rect ;
m_b.GetWindowRect( &rect ) ;
::StretchBlt( tmpdc , 0 , 0 , rect.Width() , rect.Height() , memdc , 0 , 0 , BM.bmWidth , BM.bmHeight , SRCCOPY ) ;
::BitBlt( dc , 0 , 0 , rect.Width() , rect.Height() , tmpdc , 0 , 0 , SRCCOPY ) ;
问题点数:30、回复次数:5Top
1 楼flounder(一肩挑尽万古愁)回复于 2002-01-31 15:13:16 得分 10
CDC BmpDC;
BmpDC.m_hDC = CreateDC(_T("DISPLAY"),NULL,NULL,NULL);
CDC memDC;
memDC.m_hDC = CreateCompatibleDC(BmpDC.m_hDC);
m_HBitmap=CreateCompatibleBitmap(BmpDC.m_hDC , (m_structInfo.PaperWidth-2)*10,(m_structInfo.PaperHeight-2)*10/2+10);
SelectObject(memDC.m_hDC,hbp);
CRect rect ;
m_b.GetWindowRect( &rect ) ;
::StretchBlt( tmpdc , 0 , 0 , rect.Width() , rect.Height() , memdc , 0 , 0 , BM.bmWidth , BM.bmHeight , SRCCOPY ) ;
::BitBlt( dc , 0 , 0 , rect.Width() , rect.Height() , tmpdc , 0 , 0 , SRCCOPY ) ;
Top
2 楼chen_jun_fen(穷的只能抽白粉)回复于 2002-01-31 15:31:30 得分 0
to flounder:
可以写详细点 吗
m_HBitmap=CreateCompatibleBitmap(BmpDC.m_hDC , (m_structInfo.PaperWidth-2)*10,(m_structInfo.PaperHeight-2)*10/2+10);
这句话有什么用呢?
Top
3 楼chen_jun_fen(穷的只能抽白粉)回复于 2002-01-31 17:11:49 得分 0
up ,up Top
4 楼mjs2000(宁静致远)回复于 2002-02-01 13:00:43 得分 20
你先把 dc换成ClientDC如果能够显示出来则说名你的dc有问题Top
5 楼chen_jun_fen(穷的只能抽白粉)回复于 2002-02-08 08:49:07 得分 0
为什么还是不行阿 help helpTop




