スタティックテキストの背景色の変更をするには?

[戻る]
太陽 [E-Mail] 2000/11/19(日) 22:17:54
ダイヤログに作成したスタティックテキストの
色を赤、緑、デフォルト色(灰色)に変化させたいのですが、
ソフトをどの様に作成すればわかりません。
どなたか、ソースレベルで教えてください。
よろしくお願いします。

Johnny 2000/11/20(月) 10:03:33
例:スタティックテキストIDC_TEXT1を色付けで表示

1. クラスメンバーHBRUSH型変数 m_Red を定義する。
2. 初期処理で m_Red = CreateSolidBrush(RGB(255,0,0));で作成
3. WM_CTLCOLORイベント処理を追加

HBRUSH CStockDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
   HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
    
   int ID = pWnd->GetDlgCtrlID();

   switch(ID)   {
   case IDC_TEXT1:
         pDC->SetTextColor(RGB(0,0,255));   // 文字色は青
    pDC->SetBkColor(RGB(0,255,0));    // 文字背景色は緑
         pDC->SetBkMode(TRANSPARENT);      
         return  m_Red;                    // 表示領域全体の背景色は赤  
   }
   return hbr;
}

お試してください、文字色変るだけ場合は m_Red の作成する必要はありません、
pDC->SetTextColor(RGB(0,0,255));の後ろでbreakでよい。

尚、イベント処理内直接return CreateSolidBrush(RGB(255,0,0))のようにしないほうがいいです、Brushの開放処理ない為、リソース不足になる可能性あるので注意して下さい。

太陽 2000/11/20(月) 21:53:19
有難う御座います。
クラスを使用したことがないので、
1. クラスメンバーHBRUSH型変数 m_Red を定義する。
Q:HBRUSH m_Red;だと構文エラー
A:

3. WM_CTLCOLORイベント処理を追加
Q:そのイベントが発生したらなにをすればよいおですか、

太陽 2000/11/20(月) 21:53:21
有難う御座います。
クラスを使用したことがないので、
1. クラスメンバーHBRUSH型変数 m_Red を定義する。
Q:HBRUSH m_Red;だと構文エラー
A:

3. WM_CTLCOLORイベント処理を追加
Q:そのイベントが発生したらなにをすればよいおですか、

Johnny 2000/11/21(火) 11:21:09
1. クラスメンバーHBRUSH型変数 m_Red を定義する。
Q:HBRUSH m_Red;だと構文エラー
A:

3. WM_CTLCOLORイベント処理を追加
Q:そのイベントが発生したらなにをすればよいおですか、

Johnny 2000/11/21(火) 11:27:47
1. クラスメンバーHBRUSH型変数 m_Red を定義する。
Q:HBRUSH m_Red;だと構文エラー
A:同じ名前の変数を定義しているかどうか、まだは前の行で問題あるかをチェックして。

3. WM_CTLCOLORイベント処理を追加
Q:そのイベントが発生したらなにをすればよいおですか、
A:例のOnCtlColor関数を実行すればよいですよ。

古いスレッドには追加発言できません。