カラー選択ダイアログを開く          <TOP>


ChooseColor カラー選択ダイアログを開きます。

基本色を全て表示で開く

 

「色の作成」コントロールを開いた状態

 

「色の作成」コントロールの使用を禁止

 

フォームの背景色を選択した色に塗ります。

 

'================================================================
'= カラー選択ダイアログを開く
'=    (ChooseColor.bas)
'================================================================
#include "Windows.bi"

Type CHOOSECOLORSTRUCT
    lStructSize    As Long
    hwndOwner      As Long
    hInstance      As Long
    rgbResult      As Long
    lpCustColors   As Long
    flags          As Long
    lCustData      As Long
    lpfnHook       As Long
    lpTemplateName As Long
End Type

' カラー選択ダイアログボックスを開く
Declare Function Api_ChooseColor& Lib "comdlg32" Alias "ChooseColorA" (lpcc As CHOOSECOLORSTRUCT)

#define CC_RGBINIT              &H1     'crDef で指定された色を初期選択として使用
#define CC_FULLOPEN             &H2     '「色の作成」コントロールを開いた状態
#define CC_PREVENTFULLOPEN      &H4     '「色の作成」コントロールの使用を禁止
#define CC_SHOWHELP             &H8     '「ヘルプ」ボタンを表示
#define CC_ENABLEHOOK           &H10
#define CC_ENABLETEMPLATE       &H20    'nInstanceメンバとlpTemplateNameメンバで指定されたダイアログボックステンプレートを使ってダイアログを作成
#define CC_ENABLETEMPLATEHANDLE &H40
#define CC_SOLIDCOLOR           &H80    '基本色のうち、純色だけを表示
#define CC_ANYCOLOR             &H100   '利用可能な基本色をすべて表示

Var Shared Radio(2) As Object
Var Shared Button1 As Object

For i = 0 To 2
    Radio(i).Attach GetDlgItem("Radio" & Trim$(Str$(i+1)))
    Radio(i).SetFontSize 14
Next
Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14

'================================================================
'=
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
    Var cc As CHOOSECOLORSTRUCT
    Var Ret As Long

    cc.lStructSize = Len(CC)
    cc.hwndOwner = GethWnd
    If Radio(0).GetCheck = 1 Then cc.flags = CC_ANYCOLOR
    If Radio(1).GetCheck = 1 Then cc.flags = CC_ANYCOLOR Or CC_FULLOPEN
    If Radio(2).GetCheck = 1 Then cc.flags = CC_ANYCOLOR Or CC_PREVENTFULLOPEN
    cc.rgbResult = RGB(192, 192, 192)
    cc.lpCustColors = Varadr(BDF(0))

    Ret = Api_ChooseColor(cc)

    If Ret <> 0 Then
        BackColor = cc.rgbResult
        SetBackColor BackColor
        Cls
    End If
End Sub

'================================================================
'=
'================================================================
While 1
    WaitEvent
Wend
Stop
End