OrangeMaker_logo
memo アイコン SDK-MFC 備忘録

Windows SDKやMFCに関するメモです。
(記載内容について正しいことを保証するものではありません。MSDN等で確認してください)

エアロで透けないボタン(その2)

2010/9/24 作成

以前のトピックで、エアログラス効果を設定したウィンドウにボタンコントロールを使用した場合にボタン背景にアルファチャネルを書き込むことで透けないように処理する方法を書きましたが、CMFCButtonクラスを使用すると割合簡単に同じことができます。

※ CMFCButtonの設定方法は、「CMFCButtonの使い方」を参照してください。

手順は、
1)CMFCButtonを継承したクラスを作成します。(これをCMFCButtonExクラスとします。)

2)OnDraw()関数をオーバーライドします。

void CMFCButtonEx::OnDraw(CDC* pDC, const CRect& rect, UINT uiState)
{
    // TODO: ここに特定なコードを追加するか、もしくは基本クラスを呼び出してください。
    CMFCButton::OnDraw(pDC, rect, uiState);
    CDrawingManager dm(*pDC);
    dm.FillAlpha(rect);
    return ;
}
		

これで、ボタンの描画後にアルファチャネルが書き込まれます。

ここで、CDrawingManagerというクラスを使用していますが、これはvs2008 futurePackで導入されたヘルパークラスでMSDNをみてもFillAlpha()関数については記載されていませんが、指定矩形にアルファチャネルの書き込みを行う関数です。