Подскажитк как сделать чтобы у меня на диалоге либо была строчка( а-ля Статик-текст) представляющая собой ссылку на веб-страничку,
либо кнопка, нажав на которую я попал бы на заданную страничку.
Очень желательно это сделать каким-нибудь стандартными средствами.
Здравствуйте, pivoo, Вы писали:
P>Подскажитк как сделать чтобы у меня на диалоге либо была строчка( а-ля Статик-текст) представляющая собой ссылку на веб-страничку,
Для Static выставляешь свойство Notify и присваиваешь id ну например IDC_Label вместо IDC_STATIC.
При наведении на элемент меняешь курсор на руку...
BEGIN_MESSAGE_MAP(CActivationDlg, CDialog)
ON_STN_CLICKED(IDC_Label, OnStnClickedLabel)
END_MESSAGE_MAP()
void CActivationDlg::OnStnClickedLabel(UINT nFlags, CPoint point)
{
CString strLink;
GetDlgItem(IDC_Label)->GetWindowText(strLink);
//Открываем барузер или почтовый клиент по умолчанию ;-)
::ShellExecute(NULL,_T("open"),strLink,NULL,NULL,SW_SHOWNORMAL);
}
P>либо кнопка, нажав на которую я попал бы на заданную страничку.
Для кнопки код тот же
Программисты — это обычные люди... только с красными пальцами — когда крыша съезжала придавила
Здравствуйте, pivoo, Вы писали:
D>>При наведении на элемент меняешь курсор на руку... P>А можно об этом поподробнее? как сделать? в MFC не программировал... P>и еще, как цвет у статика поменять? чтоб на ссылку похож был
BEGIN_MESSAGE_MAP(CActivationDlg, CDialog)
...
ON_WM_SETCURSOR()
ON_WM_CTLCOLOR()
...
END_MESSAGE_MAP()
BOOL CActivationDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
// TODO: Add your message handler code here and/or call default
if (IDC_Label == pWnd->GetDlgCtrlID()) {
::SetCursor(::LoadCursor(NULL, MAKEINTRESOURCE(32649)));
return TRUE;
}
return CDialog::OnSetCursor(pWnd, nHitTest, message);
}
HBRUSH CActivationDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
if (IDC_Label == pWnd->GetDlgCtrlID()) {
pDC->SetTextColor(RGB(0, 0, 255));
}
// TODO: Return a different brush if the default is not desired
return hbr;
}
Программисты — это обычные люди... только с красными пальцами — когда крыша съезжала придавила
Здравствуйте, pivoo, Вы писали:
P>И еще, прости за назойливость, как сделать чтобы текст этого статика можно было выделить и в буфер взять
Вместо статика использовать edit с установленным флагом только для чтения и убранным флагом границы.
Здравствуйте, pivoo, Вы писали:
P>Здравствуйте, molostov, Вы писали:
M>>Вместо статика использовать edit с установленным флагом только для чтения и убранным флагом границы.
P>а как при этом еще от этого Edit ловить событие что его кликнули? так можно вобще?
Можно перегрузить PreTranslateMessage:
BOOL CActivationDlg::PreTranslateMessage(MSG* pMsg)
{
if (pMsg->hwnd == GetDlgItem(IDC_EDIT1)->m_hWnd && pMsg->message == WM_LBUTTONUP)
{
CString strLink;
GetDlgItem(IDC_EDIT1)->GetWindowText(strLink);
//Открываем барузер или почтовый клиент по умолчанию ;-)
::ShellExecute(NULL,_T("open"),strLink,NULL,NULL,SW_SHOWNORMAL);
}
return CDialog::PreTranslateMessage(pMsg);
}