KONDO-NETいい掲示板 By KLEB Ver 1.0.0
KLEB KONDO-NETいい掲示板
メンバーリスト
会員登録
ログイン
いい掲示板
-
掲示板一覧
-
ソフト開発塾
ソフト開発(VB VC Perl PHPなど)に、関わるQAなど
現在、作成中につきこの板からは投稿・返信できません。
しかし、
なんでも掲示板
からは、投稿できます。
削除
>VBでアクティブXDLLを作成したときに、引数としてVariantがた
>を持つ関数を作成しました。これを、VCでよびだし、VARIANT型
>の変数を渡すと、VBではサポートしてないといわれます。これは
>どうにもならないんでしょうか?
------------------- VB 側 -------------------------
Public Function X01(ByVal aa As Variant) As Long
Debug.Print aa
End Function
Public Function X02(ByRef aa As Variant) As Long
Debug.Print aa
End Function
Public Function Y01(ByVal aa As Long) As Long
Debug.Print aa
End Function
Public Function Y02(ByRef aa As Long) As Long
Debug.Print aa
End Function
---------------------------------------------------------
------------------- VC 側 -------------------------------
if (!AfxOleInit()){
AfxMessageBox("OLE初期化失敗");
return FALSE;
}
CTESTVCDlg dlg;
m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: ダイアログが <OK> で消された時のコードを
// 記述してください。
VARIANT aa;
aa.vt=VT_I4;
aa.lVal=123456;
_TESTS01 *testvb= new (_TESTS01);
COleException e;
CLSID clsid;
if (CLSIDFromProgID(OLESTR("TESTB.TESTS01"), &clsid) != NOERROR){
return FALSE;
}
LPUNKNOWN lpUnk;
LPDISPATCH lpDispatch;
if (GetActiveObject(clsid, NULL, &lpUnk) == NOERROR){
HRESULT hr = lpUnk->QueryInterface(IID_Idispatch, (LPVOID*)&lpDispatch);
lpUnk->Release();
if (hr == NOERROR)
testvb->AttachDispatch(lpDispatch, TRUE);
}
if (testvb->m_lpDispatch == NULL && !testvb->CreateDispatch(clsid, &e)){
return FALSE;
}
long bb;
bb=100;
testvb->Y01(bb);
testvb->Y02(&bb);
testvb->X01(aa);
testvb->X02(&aa);
delete testvb;
}
-----------------------------------------------------
VS6.0では、OKだと、思いますが.....
<a href="http://www.kondo-net.gr.jp/softca/">ソフト開発塾</a>
投稿日:
2002/04/05 21:08
投稿者:
近藤
削除キー:
---
KONDO-NET.GR.JP
---