物件模型工具模組

導論
檢查物件是否初使化
取得滑鼠圖示
建立標準圖形物件
依應用程式代號傳回類別代號

導論

物件模型包含許多系統基本元件,本模組仍在發展中,部分程式碼尚未充分測試完畢,為配合網友需求,先行將部分程式碼上網,未來仍有可能依個人工作或研究上之需求進行調整

建立標準圖形物件

函數名:myCreateStdPicture,傳回 Picture

引數 類型 說明
hPicture Variant 陣列 依圖形之需求有不同參數
wFlags PictureTypeConstants VB 內建旗標

範例:

點陣圖檔 (wFlags = vbPicTypeBitmap)

Set Picture1.Picture = myCreateStdPicture (Array(hBitmap, hPal), vbPicTypeBitmap)

向量檔 (wFlags = vbPicTypeMetafile)

Set Picture1.Picture = myCreateStdPicture (Array(hWMF, xExt, yExt), vbPicTypeMetafile)

圖示檔 (wFlags = vbPicTypeIcon)

Set Picture1.Picture = myCreateStdPicture (Array(hIcon), vbPicTypeIcon)

加強型向量檔 (wFlags = vbPicTypeEMetafile)

Set Picture1.Picture = myCreateStdPicture (Array(hEMF), vbPicTypeEMetafile)

說明:

本函數可將已取得之代號 (handle) 轉換為 VB 支援之標準圖形物件,轉換為 VB 標準圖形物件後,即可在 VB 內以相關 VB 命令操作,如:

SavePicture Picture1.Picture, "C:\Life\TLCheng\test.emf"

使用時已知應注意的部分如下:

  1. 由於璉璉目前多改為操作 EMF 檔,故僅 WMF 檔未實際測試,若在 WMF 上發生錯誤,再通知璉璉除錯
  2. VB 標準圖形物件會將滑鼠游標轉換為圖示,故即使副檔名為 cur ,實質上仍為圖示檔
  3. 當 EMF 檔轉換為 VB 標準圖形物件後,圖檔解析度會變更為螢幕解析度,若 原 EMF 圖檔解析度較高或為自訂之特殊解析度,建議存檔時仍以原操作方式存檔,本函數僅利用來螢幕展示使用,以避免解析度降低,若無須掛慮解析度問題,仍可利用 SavePicture 儲存 EMF 圖檔

檢查物件是否初使化

函數名:IsObjectInit,傳回布林值

引數 類型 說明
hObject 物件變數 需判讀之物件變數

範例:

Dim NewFrm As Form1
Debug.Print IsObjectInit(NewFrm) ' 傳回值為 False

Set NewFrm = New Form1
Debug.Print IsObjectInit(NewFrm) ' 傳回值為 True

說明:

在物件初始化之前,不論以 IsObject 或是 TypeName 均無法順利判讀物件是否初始化,本函數利用 myOleIsRunning 子函數判讀,另外尚可利用 OleRun 函數判讀,本函數不另做範例說明,僅示範 OleIsRunning 函數

依應用程式代號傳回類別代號

函數名:myCLSIDFromProgID,傳回類別代號字串

引數 類型 說明
lpszOleObjName 字串 應用程式代號

範例:

Debug.Print myCLSIDFromProgID("Excel.Chart")
' 傳回 "{00020821-0000-0000-C000000000000046}"

說明:

本函數在將類別代號轉換成 16 進位字串時,引用數學工具模組函數,使用時應一併複製下載

取得滑鼠圖示

函數名:myGetCursorIcon,傳回 Picture

引數 類型 說明
- -

範例:

Set Form1.Picture = myGetCursorIcon

SavePicture Form1.Picture, "c:\temp\test.ico"

說明:

由滑鼠(指標)轉換為標準圖形物件時 (stdPicutre) ,因標準圖形物件並無 Cursor (指標) 屬性,故僅能轉換為圖示檔,亦即 HotSpot 資訊將被移除,若需存成為指標檔,不應透過標準圖形物件轉換。