正在尝试从消息c++mfc返回值

Trying to return value from Message c++ mfc

本文关键字:消息 c++mfc 返回值      更新时间:2023-10-16

我正在使用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参数的值?

函数不能更改通过值传递的参数。

但是,您可以将指针传递到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;
}
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;