注:これはおそらく暗闇の中でのショットであり、私が求めているのは純粋に好奇心からです。
Microsoft Common Control lib(mscomctl.ocx)のImageListコントロールを使用すると、VB6が実際のプロパティ/メソッド名に解決されないFRMコードを生成することがわかり、解決方法に興味があります。生成されたFRMコードの例を、3つの画像を含むImageListとともに以下に示します。
Begin MSComctlLib.ImageList ImageList1
BackColor = -2147483643
ImageWidth = 100
ImageHeight = 45
MaskColor = 12632256
BeginProperty Images {2C247F25-8591-11D1-B16A-00C0F0283628}
NumListImages = 3
BeginProperty ListImage1 {2C247F27-8591-11D1-B16A-00C0F0283628}
Picture = "Form1.frx":0054
Key = ""
EndProperty
BeginProperty ListImage2 {2C247F27-8591-11D1-B16A-00C0F0283628}
Picture = "Form1.frx":3562
Key = ""
EndProperty
BeginProperty ListImage3 {2C247F27-8591-11D1-B16A-00C0F0283628}
Picture = "Form1.frx":6A70
Key = ""
EndProperty
EndProperty
End
私の経験から、BeginPropertyタグは通常、ほとんどのコントロールのFontオブジェクトなど、複合プロパティ(オブジェクト)が割り当てられていることを意味します。次に例を示します。
Begin VB.Form Form1
Caption = "Form1"
ClientHeight = 10950
ClientLeft = 60
ClientTop = 450
ClientWidth = 7215
BeginProperty Font
Name = "MS Serif"
Size = 8.25
Charset = 0
Weight = 400
Underline = 0 'False
Italic = -1 'True
Strikethrough = 0 'False
EndProperty
End
これは、VB.Form.Font。<プロパティ名>に解決されることが簡単にわかります。
ImageListには、Imagesというプロパティはありません。プロパティImagesに関連付けられたGUIDは、インターフェイスIImagesを実装するタイプListImagesを示します。ImageListコントロールにはIImagesタイプのListImagesというプロパティがあるため、このタイプは理にかなっています。次に、プロパティListImage1、ListImage2、およびListImage3はタイプIImagesには存在しませんが、これらのプロパティに関連付けられたGUIDは、インターフェイスIImageを実装するタイプListImageを示します。IImagesは実際にはIImageのコレクションであるため、このタイプも意味があります。
私には意味がないのは、VB6がこれらの関連付けを行う方法です。VB6は、関連付けられたタイプ(GUIDによって提供される)のために、Images-> ListImagesという名前の間の関連付けをどのように知るのですか?おそらくそれがそのタイプの唯一のプロパティであるためですか?次に、ListImage1、ListImage2、ListImage3をコレクションIImagesへの追加にどのように解決し、Addメソッドを使用しますか?または、おそらくControlDefaultプロパティですか?
おそらく、VB6はこのコントロールに関する特定の知識を持っており、論理的な解決策は存在しませんか?