1

我有一个应用程序,我想添加一个图片控件并在其中显示一些位图图像。但是,我无法将控制变量添加到图片控件。

一开始,我什至无法添加变量。因为我的头文件中没有enum {IDD = ID_OF_MY_DIALOG;}一行。我修好了它。但是,现在,我无法添加控制变量。当我右键单击图片控件并单击添加变量行时,我无法选择控件变量复选框。

如何向我的项目添加控制变量,如何动态显示位图,或者我的错误是什么?

我测试了一些 MFC 应用程序并看到了控制变量部分。所以,我的项目中一定缺少一些东西——我猜。

这是我的截图:

在我的 ATL 项目中添加变量屏幕

在随机 MFC 项目中添加可变屏幕

非常感谢你。

4

1 回答 1

2

假设您将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。代码从资源加载位图并将其传递给控件。

在此处输入图像描述

源代码+添加图片静态之前的源代码。

于 2012-09-10T13:01:38.650 回答