如何在运行时设置(Win32 API)图片控制的图像
How do I set the image of a (Win32 API) Picture Control at runtime?
这个测试用例非常简单。我想在按下按钮(IDC_BUTTON2)时将图片控件(IDC_STATIC1)的内容设置为位图资源(IDB_BITMAP1)。我遇到的问题是,当我按下按钮时,图片控制不加载图像。我已经验证了按钮按正在正确注册,并且从LoadImage返回值不是null。
下面的代码是对话框的消息处理程序:BOOL WINAPI DialogProc2(HWND hWindow, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_CLOSE:
EndDialog(hWindow, 0);
DestroyWindow(hWindow);
return TRUE;
case WM_INITDIALOG:
return TRUE;
case WM_COMMAND:
if (LOWORD(wParam) == IDC_BUTTON2)
{
HBITMAP bmp;
bmp = (HBITMAP)LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_BITMAP1), IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR);
if (bmp == NULL)
{
MessageBox(NULL, "Error", "ERROR", MB_OK);
return TRUE;
}
SendDlgItemMessage(hWindow, IDC_STATIC1, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM)bmp);
//placing a MessageBox here proves that the button press is being registered properly and that the message is being sent, but nothing is happening...
}
return TRUE;
}
return FALSE;
}
看起来图片控件的"Name"属性被设置为"IDC_STATIC1",但"ID"属性被设置为"IDC_STATIC"。将其更改为"IDC_STATIC1"解决了这个问题。
相关文章:
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- OpenCV EqualizeHist()从彩色图像创建黑白图像
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 控制允许动态运行c++的并发操作数
- 从控制台中删除最后打印的元素
- 平均图像时图像损坏
- 在C++中使用GDAL可以将图像的像素坐标转换为lat,long吗
- 是否可以使用if constexpr删除控制流语句
- 如何将图像传输到c++(dll)中的缓冲区,然后在c#的缓冲区中读/写
- Vulkan验证层不断在VkQueuePresentKHR()上抛出图像布局错误
- 无法在windows控制台中为C++程序提供必要的输入
- 使用FFMPEG将RGB图像序列保存到.mp4时出现问题
- 将RGB图像保存为PPM格式
- 将图像添加到资源文件夹UWP C++
- 使用直接显示控制相机,并使用打开的CV捕获图像
- 如何控制加载库的图像库API
- 如何在运行时设置(Win32 API)图片控制的图像
- 是否可以更改图片控制背景颜色而不是更改图像?
- 使用数字上下控制图像的亮度