向RichEditCtrl中添加圖片和URL功能

來源:互聯網
上載者:User

最近在寫一個工具,需要用到RichEditCtrl控制項,這個控制項需要支援圖片和URL超連結功能。

查看了Codeguru和codeproject網站中文章的描述,其中實現的主要部分代碼如下。

 if (FAILED(CoInitialize(NULL)))
 {
  return ;
 }

 HBITMAP hBitmap =(HBITMAP)LoadImage
   (NULL, str, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);

CImageDataObject::InsertBitmap(m_GameIntroduce.GetIRichEditOle(), hBitmap);

 

 CoUninitialize();

 

CImageDataObject類 我的資源中RichEditCtrl添加圖片中可以下到。

 

讓RichEditCtrl支援超連結,可以使用下面的代碼。也可以使用CRichEditCtrl中的成員函數來實現。主要代碼如下。

 //使得richedit支援超連結
 DWORD Mask = m_GameIntroduce.GetEventMask();
 Mask = Mask | ENM_LINK  | ENM_MOUSEEVENTS | ENM_SCROLLEVENTS | ENM_KEYEVENTS;
 m_GameIntroduce.SetEventMask(Mask);
 ::SendMessage(m_GameIntroduce.m_hWnd, EM_AUTOURLDETECT, true, 0);

 

在訊息映射中加入

ON_NOTIFY(EN_LINK,IDC_GAME_INTRODUCE,OnRichEditLink)

 

 

超連結實現代碼

OnRichEditLink(NMHDR* in_pNotifyHeader, LRESULT* out_pResult )
{
 ENLINK* l_pENLink = ( ENLINK* )in_pNotifyHeader ;
 *out_pResult = 0 ;
 switch( l_pENLink->msg )
 {
 default:{}
   break ;

 case WM_LBUTTONDOWN://如果滑鼠左鍵被點擊
  {
   CString strURL ;
   CHARRANGE crCharRange ;
   CRichEditCtrl  * pTempEdit;
   pTempEdit = (CRichEditCtrl *)CRichEditCtrl ::FromHandle(l_pENLink->nmhdr.hwndFrom);
   pTempEdit->GetSel( crCharRange ) ;//得到原來選中的字元
   pTempEdit->SetSel( l_pENLink->chrg ) ;//設定RUL被選中

   strURL = pTempEdit->GetSelText() ;//得到URL
   pTempEdit->SetSel( crCharRange ) ;//恢複原來被選中的字元
   CWaitCursor l_WaitCursor ;
   //用當前預設的瀏覽器打URL
   ShellExecute( this->GetSafeHwnd(), _T( "open" ),strURL, NULL, NULL, SW_SHOWNORMAL ) ;
   *out_pResult = 1 ;
  }
  break ;

 case WM_LBUTTONUP:
  {
   *out_pResult = 1 ;
  }
  break ;
 }

}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.