CEdit添加鼠標事件處理

注:本方法適合MFC中 如 CEdit 本身不支持鼠標消息處理的控件但是需要鼠標鼠標事件的支持情況下變通使用;

1、本文以CEdit爲例;

2、爲CEdit控件所在的父窗口所關聯的類重載 PreTranslateMessage 方法;

3、在 PreTranslateMessage 方法對對關心的消息進行過濾,並添加自己的消息處理代碼;

示例代碼如下:

 

  1. BOOL CDatabaseSetting::PreTranslateMessage(MSG* pMsg) 
  2.     // 當單擊數據庫文件名文本框時彈出文件對話框選擇數據庫文件 
  3.     if(pMsg->message == WM_LBUTTONDOWN) 
  4.     { 
  5.         CEdit* ptr = (CEdit*)GetDlgItem(IDC_TEXTBOX_DB_FILENAME); 
  6.         CRect rect;                                                                
  7.         ptr->GetWindowRect(&rect); 
  8.         if( rect.PtInRect(pMsg->pt) ) 
  9.         { 
  10.             CFileDialog dlgFile(TRUE); 
  11.             CString fileName; 
  12.             const int c_cMaxFiles = 100; 
  13.             const int c_cbBuffSize = (c_cMaxFiles * (MAX_PATH + 1)) + 1; 
  14.             dlgFile.GetOFN().lpstrFile = fileName.GetBuffer(c_cbBuffSize); 
  15.             dlgFile.GetOFN().nMaxFile = c_cMaxFiles; 
  16.  
  17.  
  18.             dlgFile.DoModal(); 
  19.             MessageBox(fileName); 
  20.             fileName.ReleaseBuffer(); 
  21.  
  22.         } 
  23.     } 
  24.  
  25.     return CDialogEx::PreTranslateMessage(pMsg); 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章