• 締切済み

メニューから色取得

使用ソフト[visual c++] 初心者でわからないのですが、画面をクリックするとその場所にTextoutで出力するようにしたのですが、この文字をメニューから色を選択し、その色で表示できるようにしたいのですがわかりません。 お願いします。

みんなの回答

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.1

★アドバイス >画面をクリックするとその場所にTextoutで出力するようにしたのですが、  ↑  これは出来るんですよね。 >この文字をメニューから色を選択し、その色で表示できるようにしたいのですがわかりません。  ↑  まず、描画するとき TextOut() よりも前に SetTextColor() 関数で色を設定します。  この設定する色をグローバル変数や static な変数で用意してメニューから色を  選択したときにグローバル変数などで用意した色変数に代入します。  そうすれば、メニューで選択している色で文字が描画されます。 ・下にプロシージャ関数を省略して載せておきます。 プロシージャ関数: LRESULT CALLBACK WindowProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam ) {  static COLORREF crColor; ←これを用意  static POINT po; ←座標用    switch ( uMsg ){   case WM_COMMAND:    switch ( LOWORD(wParam) ){     case ID_MENU1: crColor = RGB(0xFF,0x00,0x00); break; // 赤色     case ID_MENU2: crColor = RGB(0x00,0xFF,0x00); break; // 緑色     case ID_MENU3: crColor = RGB(0x00,0x00,0xFF); break; // 青色     default: return DefWindowProc( hWnd, uMsg, wParam, lParam );    }    return 0;   case WM_LBUTTONDOWN:    po.x = (short)LOWORD( lParam );    po.y = (short)HIWORD( lParam );    InvalidateRect( hWnd, NULL, TRUE );    return 0;   case WM_PAINT:   {    PAINTSTRUCT ps;    HDC hDC;        hDC = BeginPaint( hWnd, &ps );    SetTextColor( hDC, crColor ); ←これを追加。    TextOut( hDC, po.x, po.y, "文字列", 文字列の長さ );    EndPaint( hWnd, &ps )    return 0;   }   default: return DefWindowProc( hWnd, uMsg, wParam, lParam );  } } その他: ・上記の WM_COMMAND メッセージで ID_MENU1~ID_MENU3 となっているのがメニューが  選択された時の ID です。そして crColor 変数にカラーをセットしています。 ・描画は WM_PAINT メッセージで行っています。  よって、クライアント領域をクリックしたときにカーソル位置を po に保存して、  再描画の指定の為に InvalidateRect() 関数を呼んでいます。これによりクリック  されると WM_PAINT メッセージを処理するようになり文字が描画されます。  文字の描画が WM_LBUTTONDOWN メッセージに書かれている場合は適切に修正して下さい。 ・以上。

takaryo23
質問者

お礼

無事に色変更できるようになりました。 ありがとうございました。

関連するQ&A