首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> VC 教學

類 Dreamweaver 螢幕取色器:CColorPicker 類別實作與應用

     編輯:VC 教學

前言

Dreamweaver 的顏色選擇器令人印象深刻,特別是能直接取得螢幕任意點顏色的功能。筆者依此概念封裝 CColorPicker 類別實現同類功能,並修正了 Dreamweaver 將螢幕取色進行近似處理的缺點。本文詳細說明使用方法並提供完整範例專案。

CColorPicker 類別簡介

  • 繼承自 CButton,可像一般按鈕同樣使用
  • 滑鼠游標與色彩對話框採動態建立,兼顧封裝性與便利性
  • 提供自動繫結功能:顏色變更時透過 BN_CLICKED 事件通知父視窗

具體使用步驟(以範例專案為例)

3.1 前置準備

  1. 建立 ColorPickerDemo 對話框型 MFC 專案
  2. 將 ColorPicker.h、ColorPicker.cpp 複製至專案目錄並加入專案

3.2 資源編輯器設定

  1. 在主對話框加入 ID 為 IDC_BUTTON1 的按鈕
  2. Style 設為 Owner draw
  3. 在 CColorPickerDemoDlg 類別為 IDC_BUTTON1 添加 Control 型成員變數 m_btnColor1
  4. 在 ColorPickerDemoDlg.h 中將 CButton m_btnColor1; 改為 CColorPicker m_btnColor1;
  5. 加入 #include "ColorPicker.h"
  6. 編譯執行即可見效果

3.3 取得顏色變更通知

按鈕的 BN_CLICKED 單擊事件已轉為顏色改變事件。添加處理函數如同一般按鈕單擊處理:

void CColorPickerDemoDlg::OnButton1() {
    COLORREF m_clrBKColor = m_btnColor1.GetColor();
    CString strColor;
    m_btnColor1.GetColor(strColor); // 取得 #FFFFFF 格式字串
}

提供兩種取色方式:

  • COLORREF GetColor():回傳 COLORREF 型別色彩值
  • void GetColor(CString& strColor):直接取得 #FFFFFF 格式字串

3.4 自動繫結功能

若需自動將選取顏色寫入特定視窗(如編輯框),可呼叫:

void CColorPicker::SetBuddy(HWND hWnd)

此功能在自動設定編輯框文字時極為實用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved