【问题标题】:Color picker for theme colors (Word)主题颜色的颜色选择器 (Word)
【发布时间】:2021-01-29 10:54:58
【问题描述】:

我的 Word 应用程序的用户必须能够选择一种颜色。我目前以这种方式使用颜色选择器对话框:

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

Private Declare PtrSafe Function MyChooseColor _
    Lib "comdlg32.dll" Alias "ChooseColorW" _
    (ByRef pChoosecolor As CHOOSECOLOR) As Boolean

Public Function GetColor(ByRef col As LongLong) As _
    Boolean

   Static CS As CHOOSECOLOR
   Static CustColor(15) As LongLong
   
   CS.lStructSize = Len(CS)
   CS.hwndOwner = 0
   CS.flags = &H1 Or &H2
   CS.lpCustColors = VarPtr(CustColor(0))
   CS.rgbResult = col
   CS.hInstance = 0
   GetColor = MyChooseColor(CS)
   If GetColor = False Then Exit Function '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
   
   GetColor = True
   col = CS.rgbResult
   End Function

但是,我想提供一个当前活动主题颜色的面板供您选择,以保持与文档其余部分的格式一致。 有什么办法吗?

【问题讨论】:

    标签: vba colors ms-word themes


    【解决方案1】:

    AFAIK 没有办法让内置颜色选择器对话框显示主题颜色,因此您需要创建自己的颜色。

    您可以使用以下代码获取颜色:

    Document.DocumentTheme.ThemeColorScheme(msoThemeAccent1).RGB
    

    您需要注意,当您将颜色应用到目标对象时,您必须应用主题颜色而不是其 RGB 值。为奇怪的问题做好准备:并非所有对象都具有能够使用主题颜色所需的属性。

    【讨论】:

      猜你喜欢
      • 2017-06-01
      • 2019-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-21
      • 2018-10-13
      • 1970-01-01
      相关资源
      最近更新 更多