错误 C2440:'static_cast':无法从 'void (__thiscall Visualizza::* )(char [])' 转换为 'AFX_PMSG'

error C2440: 'static_cast' : cannot convert from 'void (__thiscall Visualizza::* )(char [])' to 'AFX_PMSG'

有人可以帮助我吗? 我正在通过 VS 2010 Ultimate 做一个 MFC 应用程序。 ps。我是 C++ 的新手。 此应用程序用于在组合框文件名上打印。

这是 .cpp 文件


BEGIN_MESSAGE_MAP(Visualizza, CDialogEx)
    ON_CBN_SELCHANGE(IDC_COMBO1, &Visualizza::OnCbnSelchangeCombo1)
END_MESSAGE_MAP()


// Visualizza message handlers


void Visualizza::OnCbnSelchangeCombo1(char util[20])
{
    std::string s = util;
    LPTSTR x = new TCHAR[s.size() + 1];
    stampa.AddString(x);
}

这是 .h 文件

#pragma once
#include "afxwin.h"


// Visualizza dialog

class Visualizza : public CDialogEx
{
    DECLARE_DYNAMIC(Visualizza)

public:
    Visualizza(CWnd* pParent = NULL);   // standard constructor
    virtual ~Visualizza();

// Dialog Data
    enum { IDD = IDD_DIALOG1 };

protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support

    DECLARE_MESSAGE_MAP()
public:
    afx_msg void OnCbnSelchangeCombo1(char util[20]);
    CComboBox stampa;
};

注册通知处理程序在 CComboBox 文档的 Remarks 部分进行了说明。特别需要注意以下几点:

The parent's function prototype is as follows:

afx_msg void memberFxn( );

换句话说:您的用户提供的通知处理程序不能接受任何参数。

void Visualizza::OnCbnSelchangeCombo1(char util[20])

需要改为

void Visualizza::OnCbnSelchangeCombo1()

使其与 ON_CBN_SELCHANGE(IDC_COMBO1, &Visualizza::OnCbnSelchangeCombo1) 消息映射条目兼容。