看了很多资料了,还是不明白有hBitmap了为什么还需要hDc?
解决方案 »
- 公司封了BT和电驴,迅雷等协议的下载方式,导致了很多资源无法利用,怎么办?
- 想写一个操作链表的类??
- 关于CSTRING的提问,希望大家帮忙!!!
- 求助高手:variant 里如何保存 colorref 值? 急在线等!
- 关于winexec的问题(急!!!)
- 请教SMTP发信认证的问题?
- access数据库里备注字段用英文怎么写
- 读取Unicode的一个问题
- 关于在picture控件中画坐标轴的问题
- 高分求解,在VC中怎样给ActiveX控件传递VARIANT参数?
- DirectShow SourceFilter WMPlayer 进度条只能显示一秒
- vc用mscomm的奇怪问题,已经搞了5天5夜了,那位能帮忙看看,谢谢
bitmap 是CBitmap类的,Windows 里显示/画东西就要与device context建立关系。
而bitmap本身与device content是设备无关的,当你既涉及到bitmap又涉及到device content时
当然要用到hbitmap,hdc啦,
不是DDB转DIB吗,还需要显示/画什么东西吗?我看过几个例子,有
HDC hmemDC = CreateCompatibleDC(hScreenDC);
hOldBM = (HBITMAP)SelectObject(hmemDC, hBitmap);
hBitmap = (HBITMAP)SelectObject(hmemDC, hOldBM);
GetDIBits(hmemDC, hBitmap, 0, bmInfo.bmiHeader.biHeight,
lpvpxldata, &bmInfo, DIB_RGB_COLORS);
亦有
hDC = GetDC(NULL);
GetDIBits(hmemDC, hBitmap, 0, bmInfo.bmiHeader.biHeight,
lpvpxldata, &bmInfo, DIB_RGB_COLORS);同样的转换函数
LONG GetBitmapBits(
HBITMAP hbmp, // handle to bitmap
LONG cbBuffer, // number of bytes to copy
LPVOID lpvBits // pointer to buffer to receive bits
);
就不需要设备描述表。
问题1:是不是可以随便设置一个DC就可以,这个DC的设置对转换起到什么作用?MSDN 还有如下注解
hDC
The device context (DC) responsible for the translation operation. hDC must be compatible with the hBitmap parameter.
hDc负责转换操作,hDc必须和hBitmap兼容。
问题2:不解,为什么转换还要hDc负责?
我的理解是hDC是电视机,可以放很多种电视
而hBitmap和很多其他的图像类型都是电视频道
你看电视,得把频道接入电视机,所以就需要你使用hDC把各个频道都转过来了
hDC是电视机,
hBitmap电视频道,
那DIB应该就是录影带了,我想把DDB转DIB提供转换器就行了,为什么还要提供电视机?我的意思是hDc在转换中起什么作用?