VB 字串數組 vc

來源:互聯網
上載者:User
VB的字串數組是由BSTR組成的SafeArray類型,所以VB裡DLL函數如此聲明:
Private Declare FunctionMyFun Lib "MyDll" (ByVal strarr As Variant) As Long
建立MFC DLL工程,名為 ShowVBStrArr 編譯產生 ShowVBStrArr.DLL
DLL函數原形:
extern "C" BOOL __stdcall ShowVBStrArray(VARIANT VBpStrArray)
{
SAFEARRAY FAR *pStrArrTemp = NULL;
long LBound;
long UBound;
BSTR HUGEP *pbstr;
CString strtemp;

if(V_VT(&VBpStrArray) != (VT_ARRAY | VT_BSTR))//判斷是否為字元數組
return FALSE;
pStrArrTemp = V_ARRAY(&VBpStrArray);
if (SafeArrayGetDim(pStrArrTemp)!=1)//判斷是否為一維數組
return FALSE;

SafeArrayGetLBound(pStrArrTemp,1,&LBound);
SafeArrayGetUBound(pStrArrTemp,1,&UBound);
SafeArrayAccessData(pStrArrTemp, (void HUGEP* FAR*)&pbstr);

for (int i=0;i<(UBound-LBound)+1;i++)
strtemp+=LPWSTR(pbstr);

MessageBox( 0,strtemp,"結果",MB_OK);

SafeArrayUnaccessData(pStrArrTemp);
return TRUE;
}

在DLL工程的def檔案裡編輯如下:
EXPORTS
ShowVBStrArray

VB源碼:
Option Explicit
Private Declare Function ShowVBStrArray Lib "ShowVBStrArr" (ByVal pstr As Variant) As Long

Private Sub Command1_Click()
Dim prompt(1) As String
prompt(0) = "Hello"
prompt(1) = "World"

ShowVBStrArray prompt
End Sub

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.