程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> VC調用系統的調色板

VC調用系統的調色板

編輯:C++入門知識

  調用系統的調色板可以用到ChooseColor這個函數,這個函數傳入一個參數為CHOOSECOLOR結構體的指針,其函數原型為

 BOOL ChooseColor(LPCHOOSECOLOR lpCC);

  我們最重要的是需要了解CHOOSECOLOR結構體的成員,下面詳細分析CHOOSECOLOR的成員。

  CHOOSECOLOR結構體的定義如下:

 typedef      COLORREF *     } CHOOSECOLOR, *LPCHOOSECOLOR;

  成員:

  lStructSize

  指定CHOOSECOLOR結構體的長度(字節)。

  hwndOwner

  父窗口的窗口句柄。當沒有父窗口時,賦值為NULL。

  hInstance

  如果Flag成員設置了CC_ENABLETEMPLATEHANDLE標識符時,該成員是一個包含了對話框模板的內存對象的句柄。如果 CC_ENABLETEMPLATE 標識符被設置時,該成員是一個包含了對話框的模塊句柄。如果上述兩個標識符都未被設置,則該成員被忽略。

  rgbColors

  如果CC_RGBINT標識符被設置時,該成員指定了對話框打開時默認的選擇顏色。如果指定的顏色值不在有效的范圍內,系統會自動選擇最近的顏色值。如果該成員為0或CC_RGBINT未被設置,初始顏色是黑色。如果用戶單擊OK按鈕,該成員指定了用戶選擇的顏色。

  lpCustColors

  指向一個包含16個值的數組,該數組包含了對話框中自定義顏色的紅、綠、藍(RGB)值。如果用戶修改這些顏色,系統將用新的顏色值更新這個數組。如果要在多個ChooseColor函數中保存這個新的數組,你應該為該數組分配靜態內存空間。

  Flags

  一個可以讓你初始化顏色對話框的位集。當對話框返回時,它用來這些標識符來標識用戶的輸入。該成員可以為下列標識符的任意組合。

  lCustData

  指定應用程序自定義的數據,該數據會被系統發送給鉤子程序。當系統的發送WM_INITDIALOG消息給鉤子程序時,消息的lParam參數是一個指向CHOOSECOLOR結構的指針。鉤子程序可以利用該指針獲得該成員的值。

  lpfnHook 

  指向CCHookProc鉤子程序的指針,該鉤子可以處理發送給對話框的消息。該成員只在CC_ENABLEHOOK標識被設定的情況下才可用,否則該成員會被忽略。

  lpTemplateName

  指向一個NULL結尾的字符串,該字符串是對話框模板資源的名字。

  

  上面對CHOOSECOLOR結構體進行了詳細的分析,下面舉個小例子,說明如何調用系統的調色板。

  

  COLORREF crCustColors[ ZeroMemory(&cc,  cc.lStructSize =  cc.hwndOwner = cc.rgbResult =  cc.Flags = CC_FULLOPEN| cc.lCustData =  cc.lpfnHook = cc.hInstance = cc.lpCustColors = cc.lpTemplateName =  (ChooseColor(& 
      
      nR =      nB = 
     cc.rgbResult &=      cc.rgbResult |= (nR<< 
     cc.rgbResult &=      cc.rgbResult |= }

 

  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved