假设您将STATIC
控件添加到对话框模板中。在模板编辑器中,在控制属性中,您可以指定一个标识符,例如IDC_PICTURE
。从那里 - 控制器已经将在运行时为您创建。在代码中,您将添加CWindow
变量,并且在您的OnInitDialog
处理程序中(我假设您已经拥有它 - AFAIR它是默认创建的,并且存在各种样本),您将添加成员变量初始化,以便它可用于您的代码进一步的东西如消息处理。
class CMainDialog :
public CDialogImpl<CMainDialog>
{
// ...
private:
CWindow m_PictureStatic;
HBITMAP m_hPictureBitmap;
// Window Message Handlers
LRESULT OnInitDialog(UINT nMessage, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
m_PictureStatic = GetDlgItem(IDC_PICTURE);
m_hPictureBitmap = LoadBitmap(_AtlBaseModule.GetResourceInstance(), MAKEINTRESOURCE(IDB_PICTURE));
ATLASSERT(m_hPictureBitmap);
m_PictureStatic.SendMessage(STM_SETIMAGE, IMAGE_BITMAP, (LPARAM) m_hPictureBitmap);
// ...
}
LRESULT OnDestroy(UINT nMessage, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
ATLVERIFY(DeleteObject(m_hPictureBitmap));
return 0;
}
画面本身(在此代码段,可能有其他的选择)具有标识符IDB_PICTURE
位图的资源。代码从资源加载位图并将其传递给控件。
Source Code + Source Code before adding Picture Static。
再次感谢您的回复。我现在有一些问题。你能检查一下吗?我找不到解决方案,但仍然无法正常工作。我上传了一些截图来显示你的东西,并添加了错误信息(在我点击确定/取消按钮后)[这里](https://www.dropbox.com/s/z26g80dujrowa4i/loadBitmapP.PNG)。位图不在这里,也不在图片控件中。 [截图在这里。](https://www.dropbox.com/s/z26g80dujrowa4i/loadBitmapP.PNG)。再一次非常感谢你。 –
我添加了像这样的资源位图:'HBITMAP hBitmap = LoadBitmap(MAKEINTRESOURCE(IDB_BITMAP1));'但是,它仍然失败。不要嘲笑我,但我的OnInitDialog()中没有任何句柄实例。非常感谢你。 –
我更新了旧项目,现在加载位图,请参阅上面更新的答案和源代码链接。 –