Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;将位图从资源添加到图片控件_C++_Bitmap_Picturebox - Fatal编程技术网

C++ C++;将位图从资源添加到图片控件

C++ C++;将位图从资源添加到图片控件,c++,bitmap,picturebox,C++,Bitmap,Picturebox,我想在图片控件上显示位图, 但事实上,无论我尝试什么,它都不起作用。 现在我的方法如下所示: SendDlgItemMessage(hWnd ,picture_CTRL, BM_SETIMAGE , IMAGE_BITMAP, (LPARAM) MAKEINTRESOURCE(IDB_BITMAP1)); 我也已经尝试使用 STM_SETIMAGE 信息,但它不会工作得很好。 我的图片控件属性“Type”设置为“Bitmap”,并且我的位图在resource.h中有一个ID 希望你们能帮上

我想在图片控件上显示位图, 但事实上,无论我尝试什么,它都不起作用。 现在我的方法如下所示:

SendDlgItemMessage(hWnd ,picture_CTRL, BM_SETIMAGE , IMAGE_BITMAP, (LPARAM) MAKEINTRESOURCE(IDB_BITMAP1));
我也已经尝试使用

STM_SETIMAGE 
信息,但它不会工作得很好。 我的图片控件属性“Type”设置为“Bitmap”,并且我的位图在resource.h中有一个ID


希望你们能帮上忙:)

首先,你们不能在标准Windows控件中混用和匹配消息
BM_SETIMAGE
STM_SETIMAGE
具有完全不同的值。如果您使用的是静态控件,请使用
STM\u SETIMAGE
。如果您使用的是按钮控件,请使用
BM\u SETIMAGE

其次,
LPARAM
必须是映像的句柄。您正在传递一个资源ID。您需要先调用
LoadImage
获取句柄。例如:

HBITMAP hBitmap = reinterpret_cast<HBITMAP>(LoadImage(
    GetModuleHandle(NULL),
    MAKEINTRESOURCE(IDB_BITMAP1),
    IMAGE_BITMAP,
    0,
    0,
    0));

SendDlgItemMessage(
    hWnd,
    picture_CTRL,
    STM_SETIMAGE,
    IMAGE_BITMAP,
    reinterpret_cast<LPARAM>(hBitmap));
HBITMAP HBITMAP=reinterpret\u cast(加载图像(
GetModuleHandle(空),
MAKEINTRESOURCE(IDB_位图1),
图像/位图,
0,
0,
0));
SendDlgItemMessage(
hWnd,
图片\u CTRL,
STM_SETIMAGE,
图像/位图,
重新解释铸造(hBitmap);
请注意,根据文档,完成位图操作后,您有责任删除位图


编辑:请注意,在我的原始代码版本中有两个问题,都是由于复制和粘贴问题引起的。我自己未能将句柄作为
LPARAM
传递,我使用了
BM_SETIMAGE
而不是
STM_SETIMAGE
。我还将在回答中添加一个注释,正如Cody Gray指出的那样,函数或消息的MSDN文档将告诉您是否可以使用
MAKEINTRESOURCE

+1问题的良好总结。值得指出的是,在可以使用
MAKEINTRESOURCE
宏的情况下,文档中将清楚地指出这一点。