读书人

两个CreateCompatibleDC创造的HDC之间

发布时间: 2012-03-07 09:13:51 作者: rapoo

两个CreateCompatibleDC创造的HDC之间可以拷贝吗
两个CreateCompatibleDC创造的HDC之间可以拷贝吗

pipan = (HBITMAP)LoadImage(NULL, "chessPan.bmp ",IMAGE_BITMAP,455,501,LR_LOADFROMFILE);
ch = (HBITMAP)LoadImage(NULL, "chess.bmp ",IMAGE_BITMAP,170,79,LR_LOADFROMFILE);
ch_m = (HBITMAP)LoadImage(NULL, "chessMask.bmp ",IMAGE_BITMAP,170,79,LR_LOADFROMFILE);


CDC *cdc = this-> GetDC();
hdc = cdc-> m_hDC;


mdc = CreateCompatibleDC(hdc);
pipan_dc = CreateCompatibleDC(hdc);
ch_dc = CreateCompatibleDC(hdc);
chm_dc = CreateCompatibleDC(hdc);
temp_dc = CreateCompatibleDC(hdc);


SelectObject(pipan_dc,::theApp.pipan);//pipan里面是棋盘位图
SelectObject(ch_dc,::theApp.ch);//ch里面是棋子位图
SelectObject(chm_dc,::theApp.ch_m);/棋子遮罩层位图



this-> ReleaseDC(cdc);


。。。。。。。。。。。。。。。。。。。


然后
BitBlt(mdc,0,0,800,600,pipan_dc,0,0,SRCCOPY);
BitBlt(dc.m_hDC,0,0,800,600,mdc,0,0,SRCCOPY);
这样什么也画不出


BitBlt(dc.m_hDC,0,0,800,600,pipan_dc,0,0,SRCCOPY);
这样画出了

究竟是什么原因呢?



[解决办法]
mdc也要select 一个bitmap
[解决办法]
seakingw is right.
before any render calls in a memory device context,you must select a bitmap into it.

读书人网 >VC/MFC

热点推荐