comdlg32.dll自定义颜色 ChooseColorA vba x64 PtrSafe

Option Explicit
'VBA Windows API  https://vbaplanet.com/winapi.php
Private Const CC_RGBINIT = &H1
Private Const CC_FULLOPEN = &H2
Private Const CC_PREVENTFULLOPEN = &H4
Private Const CC_SHOWHELP = &H8
Private Const CC_ENABLEHOOK = &H10
Private Const CC_ENABLETEMPLATE = &H20
Private Const CC_ENABLETEMPLATEHANDLE = &H40
Private Const CC_SOLIDCOLOR = &H80
Private Const CC_ANYCOLOR = &H100

Private Type CHOOSECOLOR
   lStructSize As LongPtr
    hwndOwner As LongPtr
    hInstance As LongPtr
    rgbResult As Long
    lpCustColors As String
    flags As LongPtr
    lCustData As LongPtr
    lpfnHook As LongPtr
    lpTemplateName As String
End Type

'comdlg32.dll自定义颜色 ChooseColorA vba
Private Declare PtrSafe Function ChooseColorAPI Lib "comdlg32.dll" Alias _
    "ChooseColorA" (pChoosecolor As CHOOSECOLOR) As LongPtr
    
     Dim CustomColors() As Byte
    
Private Sub CommandButton1_Click()
Dim cc As CHOOSECOLOR
    Dim Custcolor(16) As LongPtr
    Dim oRGB As Variant
    
    Dim lReturn As LongPtr

    cc.lStructSize = LenB(cc)
    cc.hwndOwner = 0
    cc.hInstance = 0
   cc.lpCustColors = 0
    cc.flags = CC_ANYCOLOR Or CC_FULLOPEN Or CC_PREVENTFULLOPEN Or CC_RGBINIT
    lReturn = ChooseColorAPI(cc)

    If lReturn <> 0 Then
       Me.Caption = "RGB Value User Chose: " & Str$(cc.rgbResult)
       oRGB = VbToRGB(cc.rgbResult)
       MsgBox oRGB(0)
       MsgBox oRGB(1)
       MsgBox oRGB(2)
       CustomColors = StrConv(cc.lpCustColors, vbFromUnicode)
    Else
       MsgBox "User chose the Cancel Button"

    End If
End Sub
Private Sub Form_Load()
    ReDim CustomColors(0 To 16 * 4 - 1) As Byte
    Dim i As Integer

    For i = LBound(CustomColors) To UBound(CustomColors)
       CustomColors(i) = 0
    Next i
End Sub

Private Function VbToRGB(ByVal mColor As Long) As Variant
    Dim Blue&, Red&, Green&
    Blue = 0: Red = 0: Green = 0
    Blue = mColor \ 65536
    Green = (mColor - 65536 * Blue) \ 256
    Red = mColor - 65536 * Blue - Green * 256
    VbToRGB = Array(Red, Green, Blue)
End Function

comdlg32.ocx64是一个常见的Windows操作系统组件,用于处理常见的对话框操作,如文件选择对话框和字体选择对话框等。该组件在64位版本的Windows操作系统上被使用。 要下载comdlg32.ocx64,您可以按照以下步骤进行操作: 1. 打开您的任意网络浏览器,例如Chrome、Firefox等。 2. 在浏览器的搜索栏中输入“comdlg32.ocx64下载”。在搜索结果中,您可能会看到一些网站提供该组件的下载。 3. 选择一个可信赖且有良好口碑的网站,以确保您下载到的文件是安全的。 4. 找到对应的下载链接,通常会有一个“下载”按钮或类似的选项。 5. 单击下载链接后,浏览器会开始下载该文件。等待下载过程完成。 6. 下载完成后,您会得到一个名为“comdlg32.ocx64”的文件。在某些情况下,下载的文件可能会以.zip或.rar格式压缩。如果是压缩文件,请解压缩。 7. 安装下载的组件。方式有两种:一种是将该文件放置在系统目录中(通常为C:\Windows\System32),然后使用命令提示符或任意编辑器以管理员身份运行注册命令(例如:regsvr32 comdlg32.ocx64)。另一种方式是将该文件复制到正在使用该组件的应用程序的根目录中。 请注意,下载和使用系统组件需要小心谨慎。确保您从可靠的来源下载,并按照正确的方式安装和使用,以避免可能的安全问题和系统错误。如果您对如何下载或使用组件有任何疑问,建议咨询专业人士或相关论坛以获取更多帮助。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值