尝试从Message c ++ mfc返回值

Lit*_*ara 2 c++ winapi mfc

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

LRESULT CMyWnd2::OnMyMessage(WPARAM wParam, LPARAM lParam)
{
    wParam=5;
    lParam=6;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

使用代码:

WPARAM w=0;
LPARAM l=0;
SendMessage(hwnd,messageId,w,l);
cout<<w<<l<<endl;
Run Code Online (Sandbox Code Playgroud)

打印:

0
0
Run Code Online (Sandbox Code Playgroud)

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

Vla*_*ein 5

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

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

以下是如何使用它:

int myValueToBeUpdated = 0;
SendMessage(hwnd, messageId, 0, (LPARAM)&myValueToBeUpdated);
cout << myValueToBeUpdated << endl;
Run Code Online (Sandbox Code Playgroud)

和消息处理程序:

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