最近有幸接触了WinCE下的嵌入式编程,做的是GDI方面的东西,发现微软的平台兼容性没有他吹嘘的那么好,甚至堪称艰难,做一个简单的从Windows XP到Windows CE的移植就费了我老大劲,很多函数在WinCE下不能用,必须自己重写,在重写函数时才发现,原来自己对GDI编程根本不了解,很多基本概念都没
弄清楚。于是乎,查阅了一些资料,在这里做一下笔记:
Visual C++中DDB与DIB位图编程全攻略:http://dev.yesky.com/72/2150572.shtml
DDB与DIB的区别:http://hi.baidu.com/niiuniu1127/blog/item/3752aa19b6ae3b79dab4bdd9.html
说得通俗一点就是:DDB存于内存,DIB存于外存。
int GetDIBits(
HDC hdc, // handle to DC
HBITMAP hbmp, // handle to bitmap
UINT uStartScan, // first scan line to set
UINT cScanLines, // number of scan lines to copy
LPVOID lpvBits, // array for bitmap bits
LPBITMAPINFO lpbi, // bitmap data buffer
UINT uUsage // RGB or palette index
);LONG GetBitmapBits(
HBITMAP hbmp, // handle to bitmap
LONG cbBuffer, // number of bytes to copy
LPVOID lpvBits // buffer to receive bits
);GetDIBits的作用是读取指定位图(DDB)指定行的数据,并把这些信息以指定DIB格式存入缓存。hdc参数有什么用?因为DDB没有调色板,而DIB有调色板,所以转换时需要参考某个设备上下文(DC)的调色板。GetBitmapBits函数只是将DDB数据保存到缓冲区,不需要调色板,所以不需要参考DC。CreateDIBSection函数的理解及使用:http://blog.csdn.net/fxwzzbd/archive/2008/03/31/2233721.aspx
Wince编程十大忠告:http://hi.baidu.com/james_1010/blog/item/d946a5582a605dd89c82041d.html
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/yingzai621/archive/2009/05/24/4212599.aspx