ブラシの色を選択する

VC++ の ChooseColor() でブラシの色を選択して矩形を描画します。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プロジェクトの設定

  1. 新規プロジェクトを作成して、メニューを設定して下さい。
    キャプションID
    FILE(&F) 親メニュー
    終了(&X) IDM_EXIT
    &Test! IDM_TEST
  2. dwCustColors[16] はカスタムカラーの領域です。
    dwColor は現在選択されているカラーで、最初は黒(0)に設定されています。
        DWORD       dwCustColors[16];
        DWORD       dwColor= 0;
        
  3. WM_CREATE: でカスタムカラーの領域をクリアします。
        switch(msg)
        {   case WM_CREATE:
                memset(dwCustColors,255,sizeof(DWORD)*16);
                break;
        
  4. WM_PAINT: では dwColor の色でブラシを生成して FillRect() で矩形を描画します。
    描画が終わるとブラシを削除して下さい。
            case WM_PAINT:
                hdc= BeginPaint(hWnd,&ps);
                // クライアント矩形を取得してブラシを作成する。
                GetClientRect(hWnd,&rect);
                hBrush= CreateSolidBrush(dwColor);
                FillRect(hdc,&rect,hBrush);
                EndPaint(hWnd, &ps);
                DeleteObject(hBrush);
                break;
        
  5. ChooseColor() で色を選択して dwColor に保存します。
        {   case IDM_TEST:
                {   CHOOSECOLOR cc;
                    // CHOOSECOLOR構造体を初期化する。
                    memset(&cc,0,sizeof(CHOOSECOLOR));
                    cc.lStructSize  = sizeof(CHOOSECOLOR);
                    cc.hwndOwner    = hWnd;
                    cc.lpCustColors = dwCustColors;
                    cc.rgbResult    = dwColor;
                    cc.Flags        = CC_RGBINIT;
                    // [色の設定]ダイアログを作成する。
                    if (ChooseColor(&cc))
                    {   // 新しいカラーを設定する。
                        dwColor= cc.rgbResult;
                        InvalidateRect(hWnd,NULL,TRUE);
                    }
                }
                break;
        
  6. IDM_EXIT: でプログラムを終了します。
            case IDM_EXIT:
                DestroyWindow(hWnd);
                break;
        
  7. C# でも同様のプログラムを作成しています。
    超初心者のプログラム入門(C#)から Color Dialog を参照して下さい。
    リンクがエラーになるときは「前田稔の超初心者のプログラム入門」から辿って下さい。

【演習】

  1. プログラムを完成させて下さい。
  2. ChooseColor() で色を選択して、図形を描画して下さい。

超初心者の方のために全ソースコードを掲載します。 (^_^;)
全ソースコード

超初心者のプログラム入門(Win32API C++)