0
我目前在託管C++代碼中有一個System::Drawing::Bitmaps
數組。我希望能夠從非託管(本地)C++調用託管C++中的方法。問題是如何將數組傳回非託管C++?如何將託管C++位圖陣列傳遞給非託管C++
我可以在託管的C++位圖上調用GetHbitmap()
,它返回IntPtr
。我應該傳遞一組IntPtrs嗎?不太確定最好的方法來做到這一點。所以要清楚,我有這樣的:
託管C++方法:
void GetBitmaps(<????>* bitmaps)
{
//Calling into C# to get the bitmaps
array<System::Drawing::Bitmap^>^ bmp=ct->DataGetBitmaps(gcnew String(SessionID));
for(int i=0;i<bmp.Length;i++)
{
System::Drawing::Bitmap^ bm=(System::Drawing::Bitmap^)bmp.GetValue(i);
IntPtr hBmp=bm->GetHbitmap();
}
//So now how to I convert the hBmp to an array value that I can then pass back to unmanaged C++(hence the <????> question for the type)
}
是HBITMAPS的陣列?如果是這樣,你怎麼能將IntPtr
hBmp轉換爲該陣列?
託管的C++代碼工作得很好,並且正確地獲取位圖數組。但是現在當非託管C++調用GetBitmaps方法時,我需要將這些位圖返回到非託管C++。我不知道應該傳入哪種類型的變量,然後一旦將它傳入,我該如何將它轉換爲非託管C++可以使用的類型?
就代碼託管C++中的託管位圖轉換爲HBITMAP而言,此代碼非常有用。進一步的問題:我實際上是從外部非託管C++代碼調用此方法。所以當我從非託管C++傳入HBITMAP數組時,我將它作爲「HBITMAP *位圖」傳入。 – user1059993 2013-02-25 02:22:41
然後在託管的C++ I中分配位圖=新的HBITMAP [託管位圖的數量]。然後我按照上面的指示分配每個元素。這一切工作正常,除非當我回到託管C++方法時:位圖數組突然變爲空,返回到非託管代碼。我假設也許我必須在託管C++中分配不同的HBITMAP數組? – user1059993 2013-02-25 02:25:09