首页 > 解决方案 > ON_COMMAND 消息映射宏的替代方法来调用带有参数的函数

问题描述

我的程序开头有一个消息映射,如下所示:

BEGIN_MESSAGE_MAP(SoftwareDlg, CDialog)
    //{{AFX_MSG_MAP(SoftwareDlg)
    ON_WM_SYSCOMMAND()
    ON_WM_PAINT()
    ON_WM_QUERYDRAGICON()
    ON_WM_TIMER()
    ON_WM_DESTROY()
    ...
    ON_COMMAND(ID_TOOLS_UPLOADDATA, UploadData)
    ...
    //}}AFX_MSG_MAP
END_MESSAGE_MAP()

这里是ID_TOOLS_UPLOADDATA菜单选项在单击时调用的函数:

void UploadData()
{
    string apiEndpoint = "/api/stuff";
    upload_data(apiEndpoint);
}

我的问题是我希望我的UploadData()函数能够将其string apiEndpoint作为参数,以便我可以从程序中的多个位置调用它以进行多项操作(不仅仅是当用户单击菜单按钮时)。像这样:

void UploadData(string apiEndpoint = "/api/stuff")
{
    upload_data(apiEndpoint);
}

我看了看ON_COMMAND_EX,但我能找到的唯一用法示例似乎不是我要找的……有人有什么想法吗?

标签: visual-c++mfcafx

解决方案


正如@Iinspectable 所说,你不能。
例如,尝试添加一个成员变量并在调用函数之前对其进行设置。


推荐阅读