導論:
物件模型包含許多系統基本元件,本模組仍在發展中,部分程式碼尚未充分測試完畢,為配合網友需求,先行將部分程式碼上網,未來仍有可能依個人工作或研究上之需求進行調整
函數名: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"
使用時已知應注意的部分如下:
- 由於璉璉目前多改為操作 EMF 檔,故僅 WMF 檔未實際測試,若在 WMF 上發生錯誤,再通知璉璉除錯
- VB 標準圖形物件會將滑鼠游標轉換為圖示,故即使副檔名為 cur ,實質上仍為圖示檔
- 當 EMF 檔轉換為 VB 標準圖形物件後,圖檔解析度會變更為螢幕解析度,若 原 EMF 圖檔解析度較高或為自訂之特殊解析度,建議存檔時仍以原操作方式存檔,本函數僅利用來螢幕展示使用,以避免解析度降低,若無須掛慮解析度問題,仍可利用 SavePicture 儲存 EMF 圖檔
函數名:IsObjectInit,傳回布林值
引數 類型 說明 hObject 物件變數 需判讀之物件變數 範例:
Dim NewFrm As Form1
Debug.Print IsObjectInit(NewFrm) ' 傳回值為 FalseSet 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 資訊將被移除,若需存成為指標檔,不應透過標準圖形物件轉換。