首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试将控件与DDX_CONTROL挂钩时出错

尝试将控件与DDX_CONTROL挂钩时出错
EN

Stack Overflow用户
提问于 2015-12-30 11:18:01
回答 1查看 500关注 0票数 0

这就是我现在想要做的代码:

代码语言:javascript
复制
#pragma once
#include "stdafx.h"
#include "resource.h"

class MusicPlayerDialog : public CDialogImpl<MusicPlayerDialog>, public CWinDataExchange<MusicPlayerDialog>
{
public:

    MusicPlayerDialog();
    ~MusicPlayerDialog();

    enum { IDD = IDD_MAINDIALOG };

    BEGIN_MSG_MAP_EX(MusicPlayerDialog)
        MESSAGE_HANDLER(WM_CLOSE, OnClose)
        MESSAGE_HANDLER(WM_DESTROY, OnDestroy)
        MESSAGE_HANDLER(WM_INITDIALOG, OnInit)

        COMMAND_ID_HANDLER_EX(IDC_CLOSE, OnExitButtonClick)
    END_MSG_MAP()

    BEGIN_DDX_MAP(MusicPlayerDialog)
        DDX_CONTROL(IDC_TRACKSLIDER, m_trackSlider)
    END_DDX_MAP()

    LRESULT OnClose(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
    LRESULT OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
    LRESULT OnInit(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);


private:

    CTrackBarCtrl m_trackSlider;

    void OnExitButtonClick(UINT uCode, int nCtrlID, HWND hwndCtrl);
};

正如您所看到的,它主要是基本的初始化,使用消息映射等等。然而,我现在想将我的CTrackBarCtrl与DDX_MAP连接起来。

重要的是:

代码语言:javascript
复制
    BEGIN_DDX_MAP(MusicPlayerDialog)
        DDX_CONTROL(IDC_TRACKSLIDER, m_trackSlider)
    END_DDX_MAP()

这里应该发生的是,m_trackSlider是用IDC_TRACKSLIDER的Id连接到控件上的,所以我可以通过操作变量来控制它。

然而,现在我正面临这个错误:

代码语言:javascript
复制
error C2039: 'SubclassWindow': Is No Element Of 'WTL::CTrackBarCtrlT<ATL::CWindow>' 

由于WTL缺少文档,我无法真正找到问题所在。我读了关于子类的文章,但最终我并没有看到比我所尝试的方式更能做到这一点的方法。我也不认为CTrackBarCtrl是错的,因为它似乎是滑块的WTL包装。

有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-30 13:34:15

试着用"DDX_CONTROL_HANDLE“代替。看起来这个宏不需要"SubclassWindow“方法。

代码语言:javascript
复制
BEGIN_DDX_MAP(MusicPlayerDialog)
    DDX_CONTROL_HANDLE(IDC_TRACKSLIDER, m_trackSlider)
END_DDX_MAP()

请参阅这个线程的最后答案和代码项目文章中的说明:

在WTL7.1中添加的一个新特性是DDX_CONTROL_HANDLE宏。在WTL7.0中,如果您想连接一个普通的窗口接口类(如CWindow、CListViewCtrl等)对于DDX,您不能使用DDX_CONTROL,因为DDX_CONTROL只使用CWindowImpl派生的类。除了不同的基类需求之外,DDX_CONTROL_HANDLE的工作方式与DDX_CONTROL相同。

MFC程序员的WTL,第IV部分-对话框和控件

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34528471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档