程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> vc教程 >> VC++中查找/替換對話框的使用

VC++中查找/替換對話框的使用

編輯:vc教程

  在Windows通用對話框中,查找/替換對話框是比較特殊的一個,它是一個非模態對話框,所以它的使用與其它通用對話框有所不同。

  一、注冊

  注冊的目的有兩個,一是說明在程序中要使用查找/替換對話框,二是讓窗口能響應查找/替換消息,提供相應的消息函數。

  注冊位置應該在查找/替換對話框的父窗口,比如主框架窗口CMainFrame、視圖CxxVIEw或某對話框。也就是響應查找/替換操作的那個窗口。

  比如,欲在視圖中響應查找/替換操作,則在視圖中加入下面的注冊代碼(紅字為添加的代碼):

class CEditTestView : public CFormVIEw
{
     …………
 protected:
      //{{AFX_MSG(CEditTestVIEw)
      …………
     afx_msg LONG OnFindReplace(WPARAM wParam,LPARAM lParam);
     DECLARE_MESSAGE_MAP()
};

IMPLEMENT_DYNCREATE(CEditTestView, CFormVIEw)
static UINT WM_FINDREPLACE = ::RegisterWindowMessage( FINDMSGSTRING );
BEGIN_MESSAGE_MAP(CEditTestView, CFormVIEw)
    //{{AFX_MSG_MAP(CEditTestVIEw)
    …………
    //}}AFX_MSG_MAP
    ON_REGISTERED_MESSAGE(WM_FINDREPLACE,OnFindReplace)
END_MESSAGE_MAP() 

  注冊完成後,OnFindReplace()函數可用來接收查找/替換對話框的用戶消息,另外用ClassWizard打開CEditTestVIEw,可以發現ID_EDIT_FIND和ID_EDIT_REPLACE兩個ID號,可以用來添加查找/替換菜單,這在注冊前是沒有的。

  二、對話框的創建與顯示

  作為非模態對話框,必須用new操作符分配存儲空間,再用Create()函數進行初始化,最後用ShowWindow()函數顯示對話框。

  下面的例子是創建一個查找對話框:先在菜單中用ID號ID_EDIT_FIND添加一個“查找”菜單項,再用ClassWizard添加它的響應函數OnEditFind(),加入代碼。

//查找菜單響應函數
void CEditTestVIEw::OnEditFind() 
{
    CFindReplaceDialog* pDlg = new CFindReplaceDialog();
    pDlg->Create( true, NULL, NULL, FR_DOWN, this );  //創建查找對話框
    pDlg->ShowWindow( SW_SHOW );    //顯示對話框

  Create()函數的原型如下:

BOOL Create(BOOL bFindDialogOnly,LPCTSTR lpszFindWhat,LPCTSTR lpszReplaceWhat=NULL,DWord dwFlag=FR_DOWN,CWnd* pParentWnd=NULL);

  參數:

  bFindDialogOnly為對話框類型,為TRUE時,顯示查找對話框,為FALSE時,顯示查找/替換對話框;

  lpszFindWhat為在查找框中顯示的字符串;

  lpszReplaceWhat為在替換框中顯示的字符串;

  dwFlag為標志位,用來定制對話框,它可以是一個或多個標志的組合,主要取值如下:

   FR_DOWN 如果設置,對話框中的“向下查找”單選按鈕被選中,如果沒有設置,“向上查找”單選按鈕被選中;

   FR_HIDEUPDOWN 不顯示查找方向單選按鈕;

   FR_HIDEMATCHCASE 不顯示區分大小寫復選按鈕;

   FR_HIDEWHOLEWord 不顯示全字匹配復選按鈕;
  
   FR_MATCHCASE 使區分大小寫復選按鈕處於選中狀態;

   FR_WHOLEWord 使全字匹配復選按鈕處於選中狀態;

   FR_NOMATCHCASE 使區分大小寫復選按鈕處於禁止(變灰)狀態;

   FR_NOUPDOWN 使查找方向單選按鈕處於禁止(變灰)狀態;

   FR_NOWHOLEWord 使全字匹配復選按鈕處於禁止(變灰)狀態;

   FR_SHOWHELP 在對話框中顯示一個幫助按鈕。

   pParentWnd指向對話框

[1] [2] 下一頁

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved