Alternative for ON_COMMAND message map macro to call a function with a paramenter(s)

  afx, c++, mfc, visual-c++

I’ve got a message map at the beginning of my program that looks like the following:

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()

And here the function that the "ID_TOOLS_UPLOADDATA" menu option calls when clicked:

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

My problem is that that I want my "UploadData()" function to be able to take the "string apiEndpoint" as a parameter so that I can call it from multiple locations in my program for multiple operations(not just when the user clicks the menu button). Like so:

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

I took a look at "ON_COMMAND_EX", but the only usage example I was able to find does not appear to be what I’m looking for… Anyone have any ideas?

Source: Windows Questions C++

LEAVE A COMMENT