SendMessage(t-6ren">
gpt4 book ai didi

visual-c++ - 使用 SendMessage 获取 CString 值?

转载 作者:行者123 更新时间:2023-12-02 15:44:49 24 4
gpt4 key购买 nike

使用 SendMessage 我可以很容易地将 CString 传递给父级(简化):

CString strText = L"The text";
GetParent()->SendMessage(theApp.UWM_LOADED_SRR_FILE_MSG,
reinterpret_cast<WPARAM>(strText.GetString()));

父处理器:

afx_msg LRESULT CMyDialog::OnSetSRRFilename(WPARAM wParam, LPARAM lParam)
{
LPCTSTR szFilename = reinterpret_cast<LPCTSTR>(wParam);

// Do something.

return 0;
}

这行得通,但换一种方式呢?如何使用消息传递从父级获取当前 CString 值?我知道我可以转换为父对象类型并调用公共(public)方法。但我想使用消息传递。我的理解是 SendMessage 正在传递到接收文本的位置。

我是否应该向 parent 发送一条消息,说“我想要字符串”传递我的窗口句柄。然后在该处理程序中,它使用字符串值向该句柄发送消息?

我是不是太复杂了?

字符串值不是控件,只是一个私有(private)变量。

最佳答案

您可以简单地定义一条要求文本的消息。调用者( child )必须有一个缓冲区来接收文本。 wParam 可以是缓冲区长度,lParam 可以是缓冲区(指针)。

或者,消息返回值可以是内存对象(句柄或指针),例如由父分配并由子释放。有关如何定义消息的示例,请查看 WM_GETTEXT信息;对于另一种情况,GetClipboardData()功能。

第三种选择,消息返回值可以是 CString*,包含请求的文本。它必须由父级通过调用 new 来分配,从原始复制构造。返回时, child “拥有”该对象并且必须通过调用 delete 释放它。或者消息可以只返回 CString 对象的地址,甚至是它的缓冲区(调用 GetString())——在这些情况下,它被认为是“只读的” child 。

关于visual-c++ - 使用 SendMessage 获取 CString 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74585203/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com