gpt4 book ai didi

C++ SendMessage 试图接收字符串

转载 作者:行者123 更新时间:2023-11-30 02:55:13 26 4
gpt4 key购买 nike

在使用 C++ 时,我已经花了很多时间试图解决这个问题。这段代码来自一个工作程序,我正在用 C# 重写它,但发生了一些我不明白的事情。

下面的代码正是我按下“Step Into”时运行的代码。现在使用包含数据的 pCopyDataStruct 从::SendMessage(...) 到::OnCopyData(..) 是怎样的?

主要.cpp

void COTP::main()
{
//string will be returned using WM_COPYDATA message
::SendMessage(hWnd, 33508, (WPARAM)GetSafeHwnd(), 11);

// WPARAM is a typedef for UINT_PTR which is an unsigned int.
}

afxwin2.inl

_AFXWIN_INLINE HWND CWnd::GetSafeHwnd() const
{ return this == NULL ? NULL : m_hWnd; }

主要.cpp

BOOL COTP::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct) 
{
CString str, str2;

switch (pCopyDataStruct->dwData)
{
case JRC_COPYDATA_ID_TRACK_FILENAME:
str = (LPCTSTR)pCopyDataStruct->lpData;
break;
}
}

非常感谢任何帮助,我已经查看了今晚所有的 msdn 文档,似乎我在某个地方遗漏了一些简单的东西。以为是回调,结果好像不太对。

最佳答案

代码正在向特定窗口发送消息 (33508)。显然,接收窗口通过向 HWND 发送 WM_COPYDATA 消息来处理该消息,您在原始 SendMessage() 中传入 WPARAM 调用。它本质上是实现一个回调机制。

原始消息编号 (33508) 不是标准的 Win32 消息之一(至少我不认识),因此它可能是自定义消息。此外,它使用 WM_COPYDATA 进行响应的事实表明接收窗口处于不同的进程中(即,不属于您的应用程序)。

关于C++ SendMessage 试图接收字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16620792/

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