ボタンの色を変更するには? – プログラミング – Home

ボタンの色を変更するには?
 
通知
すべてクリア

ボタンの色を変更するには?


water
 water
(@water)
ゲスト
結合: 25年前
投稿: 2
Topic starter  

はじめまして。

最近ダイアログベースでプログラムしているのですが、どうしてもボタンの色が変更できません。どのようにしたらいいか教えて下さい。
出来れば簡単な方法がいいのですが…。

宜しくお願いします。


引用解決済
トピックタグ
HAL
 HAL
(@HAL)
ゲスト
結合: 25年前
投稿: 67
 

こんにちは。

ボタンの色を変えたいということですが、
残念ながら簡単な方法はありません。

CButtonクラスの派生クラスを定義して
DrawItem関数をオーバーライドすることで
実現できます。詳しくはMSDNライブラリを
参照してください。

下記のサイトにはサンプルがあります。
http://www.codeguru.com/


返信引用
MAS
 MAS
(@MAS)
ゲスト
結合: 25年前
投稿: 4
 

SDKなら
WinProc 内で、WM_CTLCOLORBTNのメッセージをコールバックされます。
lParamに対象となるボタンのハンドルがきたらリターンコードにブラシをセットすればいいよ。

static HBRUSH hBrush = NULL;
switch(msg)
{
case WM_INITDIALOG:
hBrush = CreateSolidBrush(RGB(255, 255, 255));
break;
case WM_CTLCOLORBTN:
if(GetDlgItem(hWnd, ボタンID) == (HWND)lParam)
//              ↑
//              └ボタンのシンボルIDのこと。
{
SetTextColor((HDC)wParam, RGB(192, 192, 192)); // この行は、ボタンのテキストの色を変える命令
return (LONG)hBrush;
}
break;
   ・
   ・
   ・

MFCは、ClassWizardのダイアログボックスにWM_CTLCOLORのメッセージを登録すると下記の関数が登録される
HBRUSH ダイアログ名::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
あとは、SDKのと同じ用に対象となるウインドハンドルを見つけて変更したいブラシでリターンすればOK。


返信引用
MAS
 MAS
(@MAS)
ゲスト
結合: 25年前
投稿: 4
 

SDKなら
WinProc 内で、WM_CTLCOLORBTNのメッセージをコールバックされます。
lParamに対象となるボタンのハンドルがきたらリターンコードにブラシをセットすればいいよ。

static HBRUSH hBrush = NULL;
switch(msg)
{
case WM_INITDIALOG:
hBrush = CreateSolidBrush(RGB(255, 255, 255));
break;
case WM_CTLCOLORBTN:
if(GetDlgItem(hWnd, ボタンID) == (HWND)lParam)
//              ↑
//              └ボタンのシンボルIDのこと。
{
SetTextColor((HDC)wParam, RGB(192, 192, 192)); // この行は、ボタンのテキストの色を変える命令
return (LONG)hBrush;
}
break;
   ・
   ・
   ・

MFCは、ClassWizardのダイアログボックスにWM_CTLCOLORのメッセージを登録すると下記の関数が登録される
HBRUSH ダイアログ名::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
あとは、SDKのと同じ用に対象となるウインドハンドルを見つけて変更したいブラシでリターンすればOK。


返信引用
water
 water
(@water)
ゲスト
結合: 25年前
投稿: 2
Topic starter  

皆さんご解答有難うございます。
しかし、私の技術力ではちょっと出来ませんでした。
もっと勉強して出直して来ます。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました