我正在使用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参数的值?
函数不能更改按值传入的参数.
但是,您可以将指针传递给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)