问题:VC中超级链接的问题?
我想在about dialog中用文本控件做一个超级链接
为在OnSetCursor()中使文本改变颜色,用了下面的语句:
(GetDlgItem(IDC_EDIT1)->GetDC())->SetTextColor(RGB(0,0,255));
为什么没有起作用?
请问还有什么更好的实现超级链接的方法?
提问时间:
2000-11-25 16:01:00 回答次数:
(4) 提问人:
软界网友 我来回答
回答(4)
请参考如下代码:
HBRUSH CCtrlDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if(nCtlColor==CTLCOLOR_STATIC&&!state){
pDC->SetTextColor (RGB(0,0,255));
}
else if(nCtlColor==CTLCOLOR_STATIC&&state==1){
pDC->SetTextColor(RGB(255,100,0));
}
// TODO: Return a different brush if the default is not desired
return hbr;
}
BOOL CCtrlDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
CRect cr1,cr2;
CPoint cp;
HICON hc;
::GetCursorPos (&cp);
CStatic *st1=(CStatic *)GetDlgItem(IDC_STATIC1);
st1->GetWindowRect (cr1);
CStatic *st2=(CStatic *)GetDlgItem(IDC_STATIC2);
st2->GetWindowRect (cr2);
if(cr1.PtInRect (cp))
{
CWinApp *app=AfxGetApp();
hc=app->LoadCursor (IDC_CURSOR1);
::SetCursor (hc);
if(!state)
{
state=1;
st1->SetWindowText ("http://go.163.com/~pgmshop");
st1->Invalidate ();
}
return true;
}
else if(cr2.PtInRect(cp))
{
CWinApp *app=AfxGetApp();
hc=app->LoadCursor (IDC_CURSOR1);
::SetCursor (hc);
if(!state)
{
state=1;
st2->SetWindowText ("ookaiii@sohu.com");
st2->Invalidate ();
}
return true;
}
else
{
if(state!=0)
{
state=0;
st1->SetWindowText("点击进入这里我的网站");
st1->Invalidate ();