VBA中的ImageCombo
有没有人幸运地使用ImageCombo在每一行上显示一个色样?我想重复“的行为”;当前颜色“;组合框。如果我想创建数百万个样例并将其加载到imagelist中,我可以这样做,但我想动态地编写彩色图像。它必须是图像组合吗
如果使用列表视图,则可以设置每行文本的颜色,并以红色、蓝色等结尾
它不';不一定是这样,但我希望复制默认的AutoCAD行为。 本人';我不是VB';r,但是 据我所知,ImageCombo不支持多列,如果支持,我可以使用API调用来更改单元格的颜色
现在,我已经创建了所有基本AutoCAD颜色的样例,并将其包含在imagelist中
如果我能找到一种方法来动态创建图像,然后将其加载到imagelist中,那将是理想的解决方案。 我已经了解了如何将图像动态添加到ImageList,然后添加到ImagCombo,我还了解了如何通过使用特定颜色填充表单,然后将其复制到位图结构中来动态创建位图图像。我仍然有039;t设法用特定的颜色填充图像结构,而没有控件已经可见
无论如何,我认为解决方案是用特定颜色填充内存中的位图结构。 在Xtreme VB Talk网站上进行了快速搜索。也许是这样
Type GUID
Data1 As Long
Data2 As Integer
Data3 As Integer
Data4(7) As Byte
End Type
Private Declare Function CreateStreamOnHGlobal Lib "ole32.dll" (ByRef hGlobal As Any, ByVal fDeleteOnResume As Long, ByRef ppstr As Any) As Long
Private Declare Function OleLoadPicture Lib "olepro32.dll" (ByVal lpStream As IUnknown, ByVal lSize As Long, ByVal fRunMode As Long, ByRef riid As GUID, ByRef lplpObj As Any) As Long
Private Declare Function CLSIDFromString Lib "ole32.dll" (ByVal lpsz As Long, ByRef pclsid As GUID) As Long
' HKEY_CLASSES_ROOT\Interface\{7BF80980-BF32-101A-8BBB-00AA00300CAB} = IPicture
Private Const SIPICTURE As String = "{7BF80980-BF32-101A-8BBB-00AA00300CAB}"
' convert a byte array to IPicture
Public Function PictureFromRes(ByRef b() As Byte) As IPicture
On Error GoTo errorhandler
Dim istrm As IUnknown
Dim tGuid As GUID
If Not CreateStreamOnHGlobal(b(LBound(b)), False, istrm) Then
CLSIDFromString StrPtr(SIPICTURE), tGuid
OleLoadPicture istrm, UBound(b) - LBound(b) + 1, False, tGuid, PictureFromRes
End If
Set istrm = Nothing
Exit Function
errorhandler:
Debug.Print "Could not convert to IPicture!"
End Function
本人';我得再仔细看一看……很有趣……
页:
[1]