尝试从Message c ++ mfc返回值

时间:2015-10-28 15:03:51

标签: c++ winapi mfc

我正在使用c ++ mfc并在我的dlg中声明消息:

LRESULT CMyWnd2::OnMyMessage(WPARAM wParam, LPARAM lParam)
{
    wParam=5;
    lParam=6;
    return 0;
}

使用代码:

WPARAM w=0;
LPARAM l=0;
SendMessage(hwnd,messageId,w,l);
cout<<w<<l<<endl;

打印:

0
0

如何更改w / l参数的值?

2 个答案:

答案 0 :(得分:5)

函数不能更改按值传入的参数。

但是,您可以将指针传递给LPARAM中所需的任何数据结构,并在消息处理程序中修改该数据结构。

以下是如何使用它:

int myValueToBeUpdated = 0;
SendMessage(hwnd, messageId, 0, (LPARAM)&myValueToBeUpdated);
cout << myValueToBeUpdated << endl;

和消息处理程序:

LRESULT CMyWnd2::OnMyMessage(WPARAM wParam, LPARAM lParam)
{
    int* p = (int*)lParam;
    *p = 42;
    return 0;
}

答案 1 :(得分:4)

LRESULT CMyWnd2::OnMyMessage(WPARAM wParam, LPARAM lParam)
{
    *((WPARAM*)wParam)=5;
    *((LPARAM*)lParam)=6;
    return 0;
}


WPARAM w=0;
LPARAM l=0;
SendMessage(hwnd,messageId,(WPARAM)&w,(LPARAM)&l);
cout<<w<<l<<endl;