文章編號: 177575 - 上次校閱: 2005年2月17日 - 版次: 1.2

PRB: ActiveX 控制項傳遞 Variant * 回至 VFP 造成錯誤

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。

在此頁中

全部展開 | 全部摺疊

徵狀

當呼叫方法建置與 Microsoft 基礎類別 (MFC),ActiveX 控制項中,如果具有型別變數的方法中有 out 參數,Visual FoxPro 傳回型別不符合的錯誤。

發生的原因

當您呼叫 ActiveX 控制項中的方法,並它變數以傳址方式傳遞回從 ActiveX 控制項接收參數值,Microsoft Visual FoxPro 似乎使用 BSTR 的資料型別。如果 ActiveX 方法的參數定義為在 [MFC Variant 基礎 ActiveX 控制項,這會造成 MFC,試著強制轉換資料型別,以符合使用 VariantChangeType 函數。此函式會傳回型別不符合的錯誤。

解決方案

建置與 ActiveX 樣板程式庫 (ATL) 的控制項不會發生這個問題。 如果您在建置控制項中的 Microsoft 基礎類別 (MFC) 避免使用 out 參數 Variant 資料型別。

狀況說明

這種行為是經過設計規劃的。

其他相關資訊

重製行為的步驟

建立伺服器

  1. 建立 MFC ActiveX 控制項使用控制項精靈。
  2. 將方法加入至控制項:
          void CMyCtrl::MyMethod(VARIANT FAR* m_pVariant)
          {
          }
    					
  3. 建置並登錄該控制項。

建立用戶端

  1. 建立新的表單。
  2. 新增 OLE 容器物件。
  3. 對話方塊顯示,請選取 [插入控制項] 選項。
  4. 選取您使用 MFC 建置之控制項。
  5. 在表單上建立指令按鈕,並將下列程式碼放在 Click 事件:
    ****Begin Example Code************
          xy=space(0)
          THISFORM.OleControl1.mymethod(@xy)
          *****End Example Code**************
    					
    類型不符錯誤發生的時按下此按鈕。

?考

如需詳細資訊請參閱下列文件 「 Microsoft 知識庫 」 中:

146219? (http://support.microsoft.com/kb/146219/EN-US/ ) 如何手動登錄 ActiveX 控制項 (.ocx)
139154? (http://support.microsoft.com/kb/139154/EN-US/ ) 在 Visual FoxPro 中授權的 OLE 控制項

這篇文章中的資訊適用於:
  • Microsoft Visual FoxPro 5.0 Standard Edition
  • Microsoft Visual FoxPro 5.0a
  • Microsoft Visual FoxPro 6.0 Professional Edition
關鍵字:?
kbmt kbprb KB177575 KbMtzh
機器翻譯機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:177575? (http://support.microsoft.com/kb/177575/en-us/ )
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。