1

CButtonをサブクラス化する際に、ボタンが押されるたびにボタンの色を増やしたいと思います。しかし、以下は背景色には何もしていません。ただし、テキストにはインクリメントする「c」が表示されます。どうも

void CMyButton::OnLButtonDown(UINT nFlags, CPoint point) 
{
    CButton::OnLButtonDown(nFlags, point);
    static int c;

    CString s;
    s.Format("left:  %d", c*50);
    this->SetWindowText(s);

  ////// Neither of the following change the background color   
    //CPaintDC dc(this);
    //dc.SetBkColor(0x0 + c*50);
    CDC *dc= GetDC();
    dc->SetBkColor(0x0 + c*50);

    c++;
}
4

1 に答える 1

1

ボタンの描画方法を変更したい場合は、実装CMyButton::DrawItem(オーバーライドCButton::DrawItem)して、そこで描画する必要があります。ではOnLButtonDown、次のようなことを行います。

c++; 
Invalidate();

のローカルではなくc、のメンバーになりたいと思うでしょう。CMyButtonOnLButtonDown

于 2012-04-13T15:25:40.340 に答える