ChooseColor

ChooseColor

ChooseColor的函式功能:該函式創建一個能使用戶從中選擇顏色的通用顏色對話框。

基本介紹

  • 中文名:ChooseColor函式
  • 外文名:ChooseColor
  • 所屬語言:Windows API
  • 函式功能:創建能使用戶選擇顏色的對話框
  • 頭檔案:commdlg.h
  • 庫檔案:commdlg32.lib
簡介,CHOOSECOLOR 結構,

簡介

函式原型:BOOL ChooseColor(LPCHOOSECOLOR IpCC);
參數:
lpCC:指向一個包括初始化對話框信息的CHOOSECOLOR結構。當ChooseColor函式返回時,此結構含有有關用戶顏色選擇的信息。
返回值:如果用戶點擊對話框中的OK按鈕,返回值為非零值。CHOOSECOLOR結構中的rgbResult成員含有用戶選擇的顏色的RGB顏色值。如果用戶取消或關閉Color對話框或錯誤出現,返回值為零。若想獲得更多錯誤信息,請調用CommDlgExtondedError函式,此函式的返回值為下列中的一個:
CDERR_FINDRESFAILURE;CDERR_MEMLOCKFAILURE;CDERR_INITIALIZATION;
CDERR_NOHINSTANCE;CDERR_LOCKRESFAILURE;CDERR_NOHOOK
CDERR_LOADRESFAILURE;CDERR_NOTEMPLATE;CDERR_LOADSTRFAlLURE;
CDERR_STRUCTSIZE;CDERR_MEMALLOCFAILURE
備註Color對話框不支持彩色調色板,對話框提供的顏色的選擇僅限於系統顏色和這些顏色的混合值,可以為對話框提供一個CCHOOKProc程式,此掛鈎程式能處理髮送給對話框的信息。通過建立CHOOSECOLOR結構中Flags成員的CC_ENABLEHOOK標誌和指定IpfnHook成員中掛鈎程式的地址,可使掛鈎程式生效。
速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:2.0及以上版本;頭檔案:commdlg.h;庫檔案:commdlg32.lib;Unicode:在Windows NT環境中實現為Unicode和ANSI兩個版本。

CHOOSECOLOR 結構

CHOOSECOLOR Structure
該結構包含了ChooseColor函式用於初始化顏色對話框的信息。在用戶關閉對話框之後,系統返回關於用戶選擇的顏色信息。
語法
typedef struct {
DWORD lStructSize;
HWND hwndOwner;
HWND hInstance;
COLORREF rgbResult;
COLORREF *lpCustColors;
DWORD Flags;
LPARAM lCustData;
LPCCHOOKPROC lpfnHook;
LPCTSTR lpTemplateName;
} CHOOSECOLOR, *LPCHOOSECOLOR;
成員
lStructSize
指定結構的長度(位元組)
hwndOwner
擁有對話框的視窗的句柄。該成員可以是任意有效的視窗句柄,或在對話框沒有所有者時,可為NULL
hInstance
如果Flag成員設定了CC_ENABLETEMPLATEHANDLE標識符時,該成員是一個包含了對話框模板的記憶體對象的句柄。如果 CC_ENABLETEMPLATE 標識符被設定時,該成員是一個包含了對話框的模組句柄。如果上述兩個標識符都未被設定,則該成員被忽略。
rgbResult
如果CC_RGBINIT標識符被設定時,該成員指定了對話框打開時默認的選擇顏色。如果指定的顏色值不在有效的範圍內,系統會自動選擇最近的顏色值。如果該成員為0或CC_RGBINIT未被設定,初始顏色是黑色。如果用戶單擊OK按鈕,該成員指定了用戶選擇的顏色。
lpCustColors
指向一個包含16個值的數組,該數組包含了對話框中自定義顏色的紅、綠、藍(RGB)值。如果用戶修改這些顏色,系統將用新的顏色值更新這個數組。如果要在多個ChooseColor函式中保存這個新的數組,你應該為該數組分配靜態記憶體空間。
Flags
一個可以讓你初始化顏色對話框的位集。當對話框返回時,它用來這些標識符來標識用戶的輸入。該成員可以為下列標識符的任意組合。
CC_ANYCOLOR
對話框顯示所有可用的基於基本顏色的顏色。
CC_ENABLEHOOK
激活由lpfnHook成員指定的鉤子程式。該標識僅用於初始化對話框時。
CC_ENABLETEMPLATE
表示利用由hInstance 和 lpTemplateName 成員指定的對話框模板。該標識符僅用於初始化對話框。
CC_ENABLETEMPLATEHANDLE
表示hInstance成員標識一個包含了預載入的對話框模板的數據塊。如果該標識被指定,系統會忽略 lpTemplateName 成員。該標識符僅用於初始化對話框。
CC_FULLOPEN
讓對話框顯示額外的控制項以使用戶創建自定義的顏色。如果該標識未設定,用戶必須點擊【自定義顏色】按鈕才能顯示自定顏色控制項。
CC_PREVENTFULLOPEN
使自定義顏色按鈕失效。
CC_RGBINIT
讓對話框默認使用由rgbResult成員指定的顏色
CC_SHOWHELP
讓對話框顯示幫助按鈕。hwndOwner成員必須在用戶點擊【幫助】按鈕時傳送HELPMSGSTRING訊息的視窗
CC_SOLIDCOLOR
讓對話框僅顯示基本顏色組成的純色。
lCustData
指定應用程式自定義的數據,該數據會被系統傳送給鉤子程式。當系統的傳送WM_INITDIALOG訊息給鉤子程式時,訊息的lParam參數是一個指向CHOOSECOLOR結構的指針。鉤子程式可以利用該指針獲得該成員的值。
lpfnHook
指向CCHookProc鉤子程式的指針,該鉤子可以處理髮送給對話框的訊息。該成員只在CC_ENABLEHOOK標識被設定的情況下才可用,否則該成員會被忽略。
lpTemplateName
指向一個NULL結尾的字元串,該字元串是對話框模板資源的名字。
VB源碼:
Option Explicit
Private Declare Function ChooseColor Lib "comdlg32.dll" Alias "ChooseColorA" (pChoosecolor As ChooseColor) As Long
Private Type ChooseColor
lStructSize As Long
hwndOwner As Long
hInstance As Long
rgbResult As Long
lpCustColors As String
flags As Long
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type
Dim rtn As String
Private Sub Command1_Click()
Dim cc As ChooseColor
cc.lStructSize = Len(cc)
cc.hwndOwner = Me.hWnd
cc.hInstance = App.hInstance
cc.flags = 0
cc.lpCustColors = String$(16 * 4, 0)
rtn = ChooseColor(cc)
If rtn >= 1 Then
Colourpreview.BackColor = cc.rgbResult
Colour.Text = "Custom Color is: " & cc.rgbResult
Else
Colour.Text = "ChooseColor Canceled"
End If
End Sub
Private Sub Form_Load()
Move (Screen.Width - Width) \ 2, (Screen.Height - Height) \ 2
End Sub

相關詞條

熱門詞條

聯絡我們