我正在使用 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;
}
关于c++ - 试图从消息 c++ mfc 返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33394583/