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