如何設定 Office XP CommandBars 遮罩和圖片內容

文章翻譯 文章翻譯
文章編號: 286460 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

結論

Microsoft Office XP 會 CommandBarButton 物件為介紹兩個新屬性: [遮罩] 和 [圖片] 屬性。您可以將圖片放在自訂產生的命令列控制項上使用這些屬性。

附註這些屬性也是 Microsoft Office 2003 中可用的。

其他相關資訊

[遮罩] 和 [圖片] 屬性會定義為型別 IPictureDisp,這是 Stdole 程式庫成員。IPictureDisp 使用無法跨處理序 (Process) 界限要封送處理的方法。 因此,[遮罩] 和 [圖片] 屬性只可以呼叫同處理序 (VBA 巨集自動化增益集和執行同處理序的 ActiveX DLL)。請參閱 < 參考 > 一節有關這個問題的詳細資訊。

下面的範例會示範如何建立自動化增益集,可以新增 CommandBar 按鈕以遮罩的圖片。

建立圖片和遮罩的影像的步驟

  1. 啟動 Microsoft 小畫家。按一下 [影像] 功能表 屬性。變更影像大小為 32 x 32,然後按一下 [確定]
  2. 在繪製介面上繪製黃色的正面。填滿區域周圍含有藍色圓圈。

    摺疊此圖像展開此圖像
    Picture of sample Picture.bmp. Steps
				to re-create this image are given in this article.
  3. 將影像儲存為 Circle.bmp。
  4. 建立遮罩、 使用黑色將圓形填滿和具有白色填滿圓形外的區域。CommandBar 控制項加入含有遮罩圖片時, 遮罩的黑色區域是可見,而白色的區域是透明。

    摺疊此圖像展開此圖像
    Picture of sample Mask.bmp. Steps to
				re-create this image are given in this article.
  5. 將影像儲存為 Mask.bmp。

建立 COM AddIn 步驟


  1. 啟動 Visual Basic 並建立新的 AddIn 專案。
  2. 按一下 [專案] 功能表 引用項目。如果 「 Microsoft Office 「 型別程式庫早於選取 XP 版本、 清楚的型別程式庫,並選取 [Microsoft Office XP 的 [型別程式庫。按一下 [確定]
  3. 在 [專案總管] frmAddin] 上按一下滑鼠右鍵,然後按一下 [移除 frmAddin
  4. 在 [專案總管] 連按兩下 連接 設計工具]。針對 應用程式 選取 Microsoft Excel,並 初始載入行為 的選取 [啟動]。
  5. 在 [檢視] 功能表上按一下 [程式碼,並取代程式碼,為 [新增-以下列:
    Option Explicit
    
    Dim oExcel As Object
    Dim WithEvents oButton As Office.CommandBarButton
    
    Private Sub AddinInstance_OnConnection(ByVal Application As Object, _
     ByVal ConnectMode As AddInDesignerObjects.ext_ConnectMode, _
     ByVal AddInInst As Object, custom() As Variant)
    
      Dim oPic As stdole.IPictureDisp
      Dim oMask As stdole.IPictureDisp
    
      ' Load the picture and mask.
      Set oPic = LoadPicture(App.Path & "\circle.bmp")
      Set oMask = LoadPicture(App.Path & "\mask.bmp")
    
      ' Save an instance of our application.
      Set oExcel = Application
      ' Create a new button on the standard CommandBar.
      Set oButton = oExcel.CommandBars("Standard").Controls.Add(msoControlButton)
      With oButton
        ' Set a tag for the button.
        .Tag = "My Button"
        ' Set the event to fire when the button is pressed.
        .OnAction = "!<" & AddInInst.ProgId & ">"
        ' Set the picture property -- if you are using the Mask property, this
        ' property must be set before you set the Mask property.
        .Picture = oPic
        ' Set the Mask property.
        .Mask = oMask
        ' Show the button.
        .Visible = True
      End With
    End Sub
    
    Private Sub AddinInstance_OnDisconnection(ByVal RemoveMode As _
       AddInDesignerObjects.ext_DisconnectMode, custom() As Variant)
    
       ' Delete the button.
       oButton.Delete
       ' Release references.
       Set oButton = Nothing
       Set oExcel = Nothing
     End Sub
    
    Private Sub oButton_Click(ByVal Ctrl As Office.CommandBarButton, _
      CancelDefault As Boolean)
      ' Our button was pressed.
      MsgBox "The button was pressed!"
    End Sub
    					
  6. 儲存專案,並建置增益集在 [儲存點陣圖] 資料夾中。
  7. 啟動 Excel。標準 CommandBar 上就會出現以黃色圓圈的新控制項。請注意黃色圓圈周圍區域是透明的。

額外的備忘稿

為先前陳述 IPictureDisp 介面無法要封送處理跨處理序 (Process) 界限。 若要設定在下列的錯誤的 圖片] 和 [遮罩] 屬性程序外結果的嘗試:
執行階段錯誤 '-2147418113(8000ffff) ':
方法 '圖片' 物件 '_CommandBarButton' 的失敗
因此,您無法設定這些屬性對於 CommandBarButton 從任何出程序自動化用戶端或在 Visual Basic IDE 中的偵錯模式下執行的同處理序元件。如果您在執行增益集從 Visual Basic IDE 本文所述範例,您會收到這個錯誤。若要避免此錯誤偵錯時,註解的設定 [圖片] 和 [遮罩] 屬性,或使用條件式編譯,例如線條的 # If...次要...#Else 指示詞。

?考

如需詳細資訊按一下 [下列面的文件編號,檢視 「 Microsoft 知識庫 」 中發行項]:
238228如何建置的 Office 2000 COM 增益集在 Visual Basic 中
230689Office 2000 COM 增益集以 Visual C++ 撰寫的範例: comaddin.exe
150034PRB: LPPICTUREDISP 不能傳遞跨處理序 (Process) 界限
如需詳細資訊請參閱下列 Microsoft 網站]:
http://support.microsoft.com/ofd

屬性

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

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com