VBA中的ImageCombo
有没有人运气使用ImageCombo在每条连续的行上显示颜色样本?我想复制“当前颜色”组合框的行为。如果我想创建数百万个色板并将它们加载到图像列表中,我可以这样做,但我想动态地编写彩色图像。**** Hidden Message ***** 它必须是图像组合吗?
如果您使用ListView代替,您可以设置每行文本的颜色并以此代替结束...
RED
BLUE
GREEN
etc等
它不一定是,但我希望复制默认的AutoCAD行为。 我不是VB'r,但是..
单元格有背景色吗 我已经弄清楚了如何动态地将一个图像添加到ImageList,然后添加到ImageCombo,我还弄清楚了如何动态地创建一个位图图像,通过用特定的颜色填充一个表单,然后将它复制到位图结构中。在没有一个控件可见的情况下,我还没有用特定的颜色填充图像结构。
无论如何,我认为解决方法是用特定的颜色填充内存中的位图结构。 在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]