Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Создание гиперссылки в STATIC и в Rich Edit


Автор: MoZy 4.6.2006, 21:30
 smile  Приведите, пожалуйста, пример вставки гиперрсылки в Рич Едит и пример преобразования СТАТИКА в гиперссылку. Зарание, Большое спасибо! 

Автор: Pulse69 5.6.2006, 12:05
STATIC, вроде, нельзя автоматически в линк переделать.
Я бы сделал так (на MFC).
Код

BOOL ClDlg::OnInitDialog()
{
    //.......
    m_Cursor = LoadCursor( NULL, IDC_HAND ); // m_Cursor имеет тип HCURSOR
    //.......
}

//..............

//   Ответ на сообщение STN_CLICKED - на статике кликнули мышкой
void ClDlg::OnStnClickedLink()  
{
    ShellExecute(GetSafeHwnd(),"open", "www.google.com" ,NULL, NULL, SW_SHOW );
}
/* Ответ на сообщение WM_SETCURSOR - поменяем курсор на руку*/
BOOL ClDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) 
{
    if ( pWnd->m_hWnd == GetDlgItem( IDC_LINK )->m_hWnd )
    {
        SetCursor( m_Cursor );
        return TRUE;
    }
    
    return CDialog::OnSetCursor(pWnd, nHitTest, message);
}



Чтобы статик посылал  сообщение STN_CLICKED ему нужно установить флаг SS_NOTIFY.

Насчёт RichEdit:
Ему нужно послать сообщение 
Код

SendMessage( hRichEdit, EM_URLAUTODETECT, (WPARAM)TRUE, 0 );

Тогда он будет автоматически распознавать строчки с URL.

В случае, если тебя это не устраивает, посмотри информацию о сообщении EM_SETCHARFORMAT.
Как LPARAM дай указатель на CHARFORMAT2.
У него есть флаг CFM_LINK и эффект CFE_LINK. 

 

Автор: MoZy 5.6.2006, 15:53
 smile Спасибо. 

Автор: rsm 5.6.2006, 22:05
Давно использую код (см. аттач) и вполне им доволен. 

Автор: MoZy 6.6.2006, 18:36
Спасибо, rsm.  

Автор: Alv 27.7.2006, 17:51
rsm, огромное спасибо за исходник, все классно работает, но проблема в том, как на диалог с этими гиперссылками вставить текст не в виде гиперссылки? У меня даже в editbox'е текст получается в этом стиле  smile Посоветуйте что-нибудь  smile  

Автор: rsm 27.7.2006, 20:59
Alv, добавь проверку, чтобы стиль шрифта применялся только для нужного контрола. См. аттач. 

Автор: Alv 27.7.2006, 23:38
Мои горячие благодарности!!! Эх ма, как просто оказалось, а я даже и не подумал искать в этом направлении...  smile  Учиться, учиться и еще раз учиться - как нам и завещали... rsm, еще раз спасибо!  

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)