当我们使用winapis将字符串作为参数传递时,如何将c#字符串转换为c ++字符串

用户名

使用SendMessageW函数我将c#字符串作为参数传递给c ++函数。我正在用c ++将类型转换为CString,但是它的值为空。请检查以下代码并提供解决方案

----------------------- c#代码------------------

public unsafe IntPtr Testing()
{

  string string_aux = "Stringtochange";
  void* pt = Marshal.StringToBSTR(string_aux).ToPointer();
  IntPtr ab = new IntPtr(pt);
  return ab;
}

public void GetValue()  
{

   SendMessageW(utilityHandle1, TVM_GETITEMHEIGHT, handle,Testing());

}

--------------------- C ++代码--------------

CString *st = (CString*)lParam;

MessageBox(NULL,*st,L"stringvalue",NULL);

* st值是空的。

大卫·赫弗南(David Heffernan)

你似乎在虐待TVM_GETITEMHEIGHT为什么不使用自定义消息。

CString是C ++类。与二进制不兼容BSTR

我个人将Marshal.StringToCoTaskMemUni在C#中使用并转换wchar_t*为C ++。请记住,在SendMessageW返回时使用了非托管内存后,请通过调用销毁它Marshal.FreeCoTaskMem

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将字符串转换为时间字符串 C#

如何将C#字符串引用转换为Javascript字符串引用

如何将C字符串转换为Rust字符串并通过FFI返回?

如何将Go字符串数组转换为C字符串数组?

如何将XML转换为C ++字符串

C ++如何将字符串转换为指针?

使用Roslyn将C#字符串值转换为转义的字符串文字

C#:将字符列表转换为字符串

如何使用 C 将 BSTR 转换为字符串

我如何将元组转换为字符串

c# - 在将字符串转换为dateTime时如何为字符串分配自定义时间

将字符串转换为 IF 参数

当包含字符串和数字作为字符串时,如何将列转换为数字

如何将字符数组转换为字符串?

如何将字符串转换为字符

如何将字符串转换为Unicode字符

如何将字符数组转换为字符串

如何将字符串转换为字符列表?

如何将字符串转换为数组字符

如何将字符从数组转换为字符串

如何将字符转换为字符串

如何将字符串转换为 C++ 中字符串中字母大小的字符数组?

将类似 url 的字符串转换为 C# 中的 xml 字符串?

将C#字符串转换为JavaScript字符串

将razor C#字符串转换为jQuery字符串

将sql转换为c#:基于字符串长度的可读字符串截断

C#将字符串转换为字节并以字符串形式输出

C#将字符串转换为const字符串

在 Java 中,当我们将字符串文字打印到终端时,该字符串文字是否也存储在字符串池中?