我创建了一个COM接口,里边添加了一个对话框控件,COM接口中一个方法实现对话框,并且向对话框传递一个参数,请问函数中的参数怎么传递给对话框中的函数啊?或是给点什么想法。
    希望高手不吝赐教,在此先谢谢了。

解决方案 »

  1.   

    很简单啊,接口函数传递一个变量过来,然后赋值到一个变量。
    再在对话框函数中使用即可啊。
    例子: 不是MFC,COM API的。
    private:
      BSTR                    m_bstrCustomCaption;STDMETHODIMP CControl::put_Caption(BSTR bstr)
    {
        SAFE_FREEBSTR(m_bstrCustomCaption);
    if ((bstr) && (SysStringLen(bstr) > 0))
         m_bstrCustomCaption = SysAllocString(bstr); return S_OK;
    }这样就在外部获取了参数值。然后对话框:DialogBox(v_hModule,MAKEINTRESOURCE(IDD_ABOUT_DIALOG), m_hwnd, AboutDlgProc);BOOL CALLBACK AboutDlgProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam);////////////////////////////////////////////////////////////////////////////////////////
    BOOL CALLBACK AboutDlgProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
    {
        switch(Message)
        {
            case WM_INITDIALOG:
                 SetCaption(m_bstrCustomCaption);
                 ......
                return TRUE;
            case WM_COMMAND:
                switch(LOWORD(wParam))
                {
                    case IDOK:
                        EndDialog(hwnd, IDOK);
                    break;
                 }
            break;
            default:
                return FALSE;
        }
        return TRUE;
    }
      

  2.   

    呵呵,知道了,是我大脑没转过弯儿来。   那再问你一个问题就是我接口要传进来一个指针变量类型是fstream的,但是我写成long型的了,然后我内部处理的时候把long型的强制转化为fstream型的,调用接口的时候把fstream型的转化成long型的。这样做会不会有什么问题啊?
      

  3.   


    看的不怎么明白,你的BSTR m_bstrCustomCaption;是对话框类的成员么?STDMETHODIMP CControl::put_Caption(BSTR bstr)是接口函数,还是对话框的函数?
      

  4.   

    COM接口最好用VARIANT等标准类型,你最好把fstream转成成符合参数的类型,然后再调用接口