VC 高人解答

来源:百度知道 编辑:UC知道 时间:2024/05/31 11:19:53
添加一个静态文本控件。。。ID:IDC_AUTO_LOGIN
// 生成的消息映射函数;
virtual BOOL OnInitDialog();
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
afx_msg HBRUSH OnCtlColor(CDC *pDC,CWnd *pWnd,UINT nCtlColor);
DECLARE_MESSAGE_MAP()
};
。。。。。。。。。。。。。。。。。。。。

BEGIN_MESSAGE_MAP(CQQDlg, CDialog)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_WM_CTLCOLOR(IDC_AUTO_LOGIN,&CQQDlg::OnCtlColor)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
。。。。。。。。。。。
HBRUSH CQQDlg::OnCtlColor(CDC *pDC,CWnd *pWnd,UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if (pWnd->GetDlgCtrlID() == IDC_AUTO_LOGIN)
{
//文字颜色
//pDC->SetTextColor(RGB(0, 255,255));
//设置文字背景为透明
pDC->SetBkMode(1);
}
return hbr;
}
设置后还是不透明!请告知!

我测试了下 没有发现你说的问题,
你的代码跟msdn上的都快相同了,估计不是onctlcolor的问题

我直接在oninitdlg中创建的static 没有使用向导,
没有发现不透明的情况阿,你create一个看看。

另外,你在if (pWnd->GetDlgCtrlID() == IDC_AUTO_LOGIN) 里面夹个断点,看看GetDlgCtrlID()返回是多少,是不是id写错了

我的代码如下
HBRUSH CCheckBoxListCtrlDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

// TODO: Change any attributes of the DC here
//101是我static创建时的id
if(pWnd->GetDlgCtrlID() == 101)//nCtlColor == CTLCOLOR_STATIC
{
pDC->SetTextColor(RGB(0, 255,255));
pDC->SetBkColor(RGB(255, 0, 0));
//pDC->SetBkMode(TRANSPARENT);
}

//pDC->SetBkMode(TRANSPARENT);

// TODO: Return a different brush if the default is not desired
return hbr;
}

HBRUSH CQQDlg::OnCtlColor(CDC *pDC,CWnd *pWnd,UINT nCtlColor)
{

if (pWnd->GetDlgCtrlID() == IDC_AUTO_LOGIN) <