21xrx.com
2025-03-31 19:04:23 Monday
文章检索 我的文章 写文章
C++实现在Winform中发送字符串消息
2023-07-04 19:15:39 深夜i     17     0
C++ Winform 字符串消息 发送

在Winform程序中,我们可能需要发送字符串消息,这可以通过C++实现。下面介绍一下如何实现。

首先,我们需要在程序中引入头文件,包括“windows.h”和“string.h”。然后,定义消息发送函数,如下所示:

void SendMessage(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
  COPYDATASTRUCT cds;
  char* pszData;
  pszData = "Hello Winform";
  cds.dwData = 0;
  cds.cbData = strlen(pszData) + 1;
  cds.lpData = pszData;
  SendMessage(hwnd, WM_COPYDATA, wParam, (LPARAM)(LPVOID)&cds);
}

在以上代码中,我们使用了COPYDATASTRUCT结构体,它包含三个成员变量:dwData、cbData和lpData。其中,dwData是指定数据的标识符,cbData是指定数据的大小,lpData是指向数据的指针。我们在这里定义了一个字符串“Hello Winform”,并通过指针传递给消息接收方。

接下来,我们需要在Winform程序中定义消息处理函数,如下所示:

protected:
  virtual void WndProc(Message% m) override
  {
    if (m.Msg == WM_COPYDATA)
    {
      COPYDATASTRUCT^ cds = reinterpret_cast<COPYDATASTRUCT^>(m.GetLParam());
      char* pData = static_cast<char*>(cds->lpData);
      String^ message = gcnew String(pData);
      MessageBox::Show(message, "Message Received");
    }
    else
    {
      Form::WndProc(m);
    }
  }

在以上代码中,我们首先判断消息的类型是否为WM_COPYDATA。如果是,则通过指针获取数据,并将其转换为System::String类型的message。最后,我们使用MessageBox显示接收到的字符串消息。

以上,就是用C++在Winform中发送字符串消息的实现方法。如果您有需要,可以根据自己的实际情况进行修改和优化。

  
  

评论区

    相似文章
请求出错了