0
使用SendMessageW函數我將c#字符串作爲參數傳遞給C++函數。我在C++中對CString進行類型轉換,但是它的值是空的。請檢查以下代碼並提供解決方案如何使用winapis將字符串作爲參數傳遞給C++字符串
----------------------- c#code -------------- ----
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值爲空。
我正在發送自定義消息來代替TVM_GETITEMHEIGHT。我是C++的新手我已經在c#中使用Marshal.StringToUni,但我不知道如何將'LPARAM'轉換爲'wchar_t *'和'CString'你能告訴C++代碼將'LPARAM'轉換爲'CString' – user1915370
你知道如何做到這一點。你的答案中有代碼。將'lParam'轉換爲'wchar_t *'。用'(wchar_t *)lParam'。或'reinterpret_cast)(lParam)'。你不需要'CString'來調用'MessageBoxW'。 –
他應該可以使用'CString s =(const wchar_t *)lParam;'?雖然它是沒有必要的,除非你需要使用'CString'做一些字符串格式化' –