【问题标题】:Cannot Add Control Variable无法添加控制变量
【发布时间】:2012-09-03 03:14:49
【问题描述】:

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

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

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

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

这是我的截图:

Add Variable Screen in my ATL project

Add Variable Screen in a random MFC project

非常感谢。

【问题讨论】:

    标签: c++ c bitmap atl image


    【解决方案1】:

    假设您将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;
        }
    

    图片本身是(在此代码 sn-p 中,可能还有其他选项)标识符为IDB_PICTURE 的位图资源。代码从资源中加载位图并将其传递给控件。

    Source Code + Source Code before adding Picture Static.

    【讨论】:

    • 再次感谢您的回复。我现在有一些问题。你能看看这些吗?我找不到解决方案,它仍然无法正常工作。我上传了一些截图给你看,并添加了错误消息(点击确定/取消按钮后)here。位图不在此处,图片控件也不在此处。 Screenshot is here.。再次感谢您。
    • 我从这样的资源中添加了位图:HBITMAP hBitmap = LoadBitmap(MAKEINTRESOURCE(IDB_BITMAP1)); 但是,它仍然失败。不要嘲笑我,但我的 OnInitDialog() 中没有任何句柄实例。非常感谢。
    • 我更新了那个旧项目,它现在加载位图,请参阅上面更新的答案和源代码链接。
    • 你很棒。互联网上没有任何文档,您一直是我的救星。如果你不在这里回答我的问题,我不知道我会怎么做。即使是愚蠢的人。非常感谢。我欠你的——一如既往。我希望所有的幸福和美好的事物都能找到你的方式,让你成为地球上最幸福的人。以后我会把关于你的诗写出来。知道这么多,还帮助新手……你是我的英雄。非常感谢。
    • 我认为 ATL 的文档记录很差。感谢您的回复!
    猜你喜欢
    • 1970-01-01
    • 2015-01-28
    • 1970-01-01
    • 2022-01-18
    • 2020-05-07
    • 2016-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多