一.相关函数
1. HBITMAP LoadBitmap(
HINSTANCE hInstance, // handle to application instance
LPCTSTR lpBitmapName // name of bitmap resource
);
如果想加载系统位图,那么将第一个参数设为NULL,如果不是系统位图,
第一参数是实例的句柄,第二个参数可以用MAKEINTRESOURCE宏转换位图的ID,不然直接加位图的路径
2, HANDLE LoadImage(
HINSTANCE hinst, // handle to instance
LPCTSTR lpszName, // image to load
UINT uType, // image type
int cxDesired, // desired width
int cyDesired, // desired height
UINT fuLoad // load options
);
第一个参数:实例句柄,若加载OEM图像则可以0;
第二参数:如果加载外部位图,直接是位图路径,若加载OEM图像,可以使用MAKEINTRESOURCE宏,
第三个参数:位图的类型
第四和第五个参数是所加载的图像的宽度和高度,以像素为单位, 如果此参数为零并且参数fuLoad值为LR_DEFAULTSIZE,
那么函数使用SM_CXICON或SM_CXCURSOR系统公制值设定宽度;如果此参数为零并且值LR_DEFAULTSIZE没有被使用,
那么函数使用目前的资源宽度。
第五参数:可以使用"|"进行组合
3. int GetObject(
HGDIOBJ hgdiobj, // handle to graphics object
int cbBuffer, // size of buffer for object information
LPVOID lpvObject // buffer for object information
);
用这个函数获取位图的信息,如位图尺寸,
第一个参数:图像的句柄,可以是一个逻辑位图、一个刷子、一种字体、一个调色板、笔或通过调用CreateDIBsection函数创建的与设备无关位图的句柄
第二个参数:缓冲区的大小,
第三个参数:
:
4.显示位图
BOOL BitBlt
(
HDC hdcDest, // 目地设备环境
int nXDest, int nYDest, //目地设备显示位图的基点
int nWidth, int nHeight, // 显示区域的高宽
HDC hdcSrc, // 源设备环境
int nXSrc, int nYSrc, // 源设备中位图的左上角坐标
DWORD dwRop // 位图的显示方式
)
最后一个参数显示方式
上文中的内容参考了MSDN,图片来自MSDN的截图
二. 实现
在"资源"上添加一张位图并手工简单绘画和添加菜单,在菜单中添加"打开资源位图"和"打开外部位图"
我的实现代码....