web-link
От: pivoo Россия  
Дата: 26.12.05 08:51
Оценка:
Подскажитк как сделать чтобы у меня на диалоге либо была строчка( а-ля Статик-текст) представляющая собой ссылку на веб-страничку,
либо кнопка, нажав на которую я попал бы на заданную страничку.

Очень желательно это сделать каким-нибудь стандартными средствами.
Re: web-link
От: Darvik Россия  
Дата: 26.12.05 09:52
Оценка: 1 (1)
Здравствуйте, 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>либо кнопка, нажав на которую я попал бы на заданную страничку.

Для кнопки код тот же
Программисты — это обычные люди... только с красными пальцами — когда крыша съезжала придавила
Re[2]: web-link
От: pivoo Россия  
Дата: 26.12.05 11:14
Оценка:
Здравствуйте, Darvik, Вы писали:

D>При наведении на элемент меняешь курсор на руку...


А можно об этом поподробнее? как сделать? в MFC не программировал...
и еще, как цвет у статика поменять? чтоб на ссылку похож был.
Re[2]: web-link
От: pivoo Россия  
Дата: 26.12.05 11:18
Оценка:
И еще, прости за назойливость, как сделать чтобы текст этого статика можно было выделить и в буфер взять
Re[3]: web-link
От: Darvik Россия  
Дата: 26.12.05 11:40
Оценка: 1 (1)
Здравствуйте, 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;
}
Программисты — это обычные люди... только с красными пальцами — когда крыша съезжала придавила
Re[3]: web-link
От: molostov  
Дата: 26.12.05 11:52
Оценка:
Здравствуйте, pivoo, Вы писали:

P>И еще, прости за назойливость, как сделать чтобы текст этого статика можно было выделить и в буфер взять

Вместо статика использовать edit с установленным флагом только для чтения и убранным флагом границы.
Re[4]: web-link
От: pivoo Россия  
Дата: 26.12.05 12:19
Оценка:
Здравствуйте, molostov, Вы писали:

M>Вместо статика использовать edit с установленным флагом только для чтения и убранным флагом границы.


а как при этом еще от этого Edit ловить событие что его кликнули? так можно вобще?
Re[5]: web-link
От: molostov  
Дата: 26.12.05 12:45
Оценка:
Здравствуйте, 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);
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.