我想是将listbox的句柄传递给VC中method的某个参数,可是我不太清楚VB中listbox是该如何定义的,还不清楚该如何传参??下面的语句没有问题
HRESULT MyInterface([in] Handle kk);

解决方案 »

  1.   

    不太清楚,帮你UP了顺便借宝地一用ATL复合控件问题,怎么把对话框上的控件连接到成员变量上?(200分)
    http://www.csdn.net/Expert/TopicView1.asp?id=1078358
      

  2.   

    //加一个类
    class CVBListBox : public COleDispatchDriver
    {
    public:
    CVBListBox() {} // Calls COleDispatchDriver default constructor
    CVBListBox(LPDISPATCH pDispatch) : COleDispatchDriver(pDispatch) {}
    CVBListBox(const CVBListBox& dispatchSrc) : COleDispatchDriver(dispatchSrc) {}// Attributes
    public:// Operations
    public:
    DISPID GetMemberID(OLECHAR *pszMemberName);
    //这里演试中取控件的高度,你可以加其它的
    long GetHeight();
    };
    DISPID CVBListBox::GetMemberID(OLECHAR *pszMemberName)
    {
    DISPID dispid=0xffffffff;
    if(m_lpDispatch)
    {
    m_lpDispatch->GetIDsOfNames(
    IID_NULL,
    &pszMemberName,
    1, LOCALE_SYSTEM_DEFAULT,
    &dispid);
    }
    return dispid;
    }long CVBListBox::GetHeight()
    {
    long lHeight;
    GetProperty(GetMemberID(L"Height"),VT_I4,&lHeight);
    return lHeight;
    }'加一个API
    Private Declare Sub ShowListBoxHeight Lib "vbobj.dll" (ByVal obj As Object)
    '在FORM上放一个LISTBOX
    ShowListBoxHeight List1
      

  3.   

    void _stdcall ShowListBoxHeight(IDispatch *pListBox)
    {
    CVBListBox listbox;
    listbox.AttachDispatch(pListBox);
    CString str;
    str.Format("%d",listbox.GetHeight());
    listbox.DetachDispatch();
    AfxMessageBox(str);
    }