c++ - 试图从消息 c++ mfc 返回值

标签 c++ winapi mfc

我正在使用 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/

相关文章:

c++ - 使用 libcurl C++ 从 Twitter 下载图像

c++ - 两行代码的功能

c++ - 如何用 `int32_t` 值快速填充内存?

c++ - 引用 GetCapture() 函数捕获鼠标意味着什么?

c++ - 有没有一些工具可以删除MFC项目中的冗余资源?

windows - 如何用自己的应用程序窗口CWnd替换窗口桌面

c++ - 无法运行简单的 N-API hello world 示例

c++ - unique_ptr < 0 或者小于运算符做什么?

winapi - 您可以将一个进程的 Direct3D 窗口渲染到另一个进程的 HWND 中吗?

class - 将资源嵌入可重用 MFC 类的正确方法是什么?