2012-10-21 48 views
0

我正在用MFC構建一個textEdit應用程序。有沒有辦法在用戶寫網址時自動創建超鏈接?這就像您在編寫網址「www.google.com」時一樣,應用程序會立即檢測網址並創建超鏈接。我已經搜索瞭解釋這個文件,但找不到它.. ,我無法做到.. 我已經做了記事本,但我不能在記事本中添加超鏈接的功能。在記事本中創建超鏈接(textEdit)[MFC]

以下句子是超鏈接的功能。

  1. 點擊文字需要打開瀏覽器窗口到文本指定的位置。

  2. 當光標在控件上移動時,需要將光標從標準箭頭光標更改爲指向食指。

  3. 當光標在控件上移動時,控件中的文本需要加下劃線。

  4. 超鏈接控件需要以不同的顏色顯示文本 - 黑色就是不行。 我添加的特點是:

5.A超級鏈接控制訪問一次需要改變顏色。

6.超鏈接控件應該可以從鍵盤訪問。

7.應該安裝某種鉤子,以便程序員在控件焦點對準或光標懸停在控件上時執行一些操作。

其中的功能,我最想完成的是第一個。 如果我單擊超鏈接文本,它應該鏈接到Internet上的瀏覽器窗口。

請回答並幫助我。謝謝。

+1

[你有什麼試過?](http://mattgemmell.com/2008/12/08/what-have-you-tried/) –

回答

0

不幸的是,這不足以使其工作。它將顯示類似於URL的文本,並將其加下劃線,但不會調用鏈接。

這將不得不由其他代碼處理。這將設置所需的事件掩碼:

long lMask = m_RichEditCtrl.GetEventMask(); 
m_RichEditCtrl.SetEventMask(lMask | ENM_LINK); 

m_RichEditCtrl.SetAutoURLDetect(); 

也反映EN_LINK將已被處理,以跟隨鏈接。例如:

void CHyperLinkInEditView::OnEnLink(NMHDR *pNMHDR, LRESULT *pResult) 
{ 
    ENLINK *p_Link = reinterpret_cast<ENLINK *>(pNMHDR); 
    if(p_Link && p_Link->msg == WM_LBUTTONDOWN) 
    { 
     //int iRange = m_RichEditCtrl.GetTextRange(p_enLinkInfo->chrg.cpMin, p_enLinkInfo->chrg.cpMax); 
     m_RichEditCtrl.SetSel(p_Link->chrg); 

     CString szLinkString = m_RichEditCtrl.GetSelText(); 
     ShellExecute(m_hWnd, L"Open", szLinkString, NULL, NULL, SW_MAXIMIZE); 
    } 
    *pResult = 0; 
} 

所有上述將解決要求1,2,3(部分-text總是加下劃線),和4 我不太瞭解5,6和7

你能詳細說明一下嗎?