色選択

元サイト

この記事は Luis Ortega の投稿です。

このカラーピッカーは下のようなものだ。

ピッカーは「最も最近に使われた色」機能がある。「Other」ボタンを押すと現在のセットに無い色が選択できる。そして最近に使われなかった色が置き換えられる。

使い方は簡単だ。

プロジェクトへのインクルード

  1. ColorBtn.cpp とColorBtn.h を追加
  2. ColorBtn.rc を追加
  3. rc2 ファイルに次の行を追加
    #include "ColorBtn.rc"
  4. ColorBtn.cpp を追加

使い方

  1. ダイアログにボタンを作る。「オーナードロー」にする。
  2. ダイアログクラスで次のように変数を宣言。
    CColorBtn colorbtn;
  3. OnInitDialog で SubclassDlgItem を呼ぶ。
    colorbtn.SubclassDlgItem(IDC_BUTTON,this); // あなたのボタンIDを使います
  4. それぞれのボタンについて繰り返す。

「現在の色」メンバ変数を使い、選択された色をセットしたり読み込んだりできる。

色テーブルの保存

ボタンがスタートしたとき、色テーブルは標準の20色でセットされる。しばらく使い終わった後、それらの色は変更されているだろう。色テーブルを保存したければ次のようにする。

1つのアプリケーションで、全てのボタンが1つの色テーブルを共有している。これにより、それぞれのボタンについてこれをする必要は無い。お望みの関数(例えばCColorBtn::Load())を一度呼べばいい。

色テーブルを保存するとき2つの方法がある。アプリケーション的方法とドキュメント的方法だ。

アプリケーション的というのはレジストリに色テーブルを保存する方法だ。これにより全てのドキュメントは同じ色テーブルを共有する。CColorBtn は2つの静的関数を与える。

これらの関数は使う前に SetRegistryKey() を呼ぶ必要がある。

ドキュメント的な方法は色情報を他のドキュメントデータと一緒にファイルに保存する方法だ。これによりそれぞれのドキュメントはそれぞれの色テーブルをもつ。こうしても1つのアプリケーションで使われる全てのボタンは同じ色テーブルを共有する。

CColorBtn は2つの関数を提供する。

Download Source.

Posted on: April 11, 98.