静的テキストボックス(CStatic)自己描画
2532 ワード
概要:
透明な背景
詳細:
透明な背景:第1の方法 コントロールのサブクラス化:
応答WM_PAINTメッセージ:第2の方法: 親ウィンドウ応答WM_CTLCOLORメッセージ:ただしサブコントロールがSetWindowText関数設定テキストを呼び出すと、テキストは 重なります.
透明な背景
詳細:
透明な背景:
class CStaticEx : public CStatic
応答WM_PAINTメッセージ:
void CStaticEx::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO:
CRect rect;
GetClientRect(&rect);
CString strText;
GetWindowText(strText);
CFont *pFont, *pOldFont;
pFont = GetFont();
pOldFont = dc.SelectObject(pFont);
dc.SetBkMode(TRANSPARENT);
dc.DrawText(strText, &rect, 0);
dc.SelectObject(pOldFont);
// Do not call CStatic::OnPaint() for painting messages
}
HBRUSH CCStatic_0100Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
if(pWnd->GetDlgCtrlID() == IDC_STATIC1)
{
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(255, 0, 128));
return (HBRUSH)GetStockObject(NULL_BRUSH);
}
// TODO: Return a different brush if the default is not desired
return hbr;
}