字体
第(1/5)页
关灯
   存书签 书架管理 返回目录
    理函数。

    打开查找对话框后,当用户单击“查找下一个”或者其他按钮时,对话框会向父窗口发

    送FINDMSGSTRING 消息,这不是MFC 中预先定义好的消息,故不能通过ClassWizard 添

    加消息处理函数,必须手动添加。添加过程如下:

    ? 先在CGridDemoView.h 文件的头部“class CGridDemoView”语句前添加如下代码,将

    FINDMSGSTRING 消息注册为WM_FINDREPLACE 自定义消息:

    枫叶文学网www.fywxw.com

    第4 章 对话框

    ·93·

    const WM_FINDREPLACE = ::RegisterWindowMessage(FINDMSGSTRING);

    ? 同时在CGridDemoView.h 文件的CGridDemoView 类的声明中找到

    “DECLARE_MESSAGE_MAP()”语句,在这个语句前一行添加如下语句作为消息处

    理函数的声明:

    afx_msg LONG OnFindReplace(WPARAM wParam, LPARAM lParam);

    ? 接着在CGridDemoView.cpp 文件的头部找到“END_MESSAGE_MAP()”语句,在这

    个语句的前一行添加如下语句绑定消息WM_FINDREPLACE 和消息处理函数

    OnFindReplace():

    ON_REGISTERED_MESSAGE(WM_FINDREPLACE, OnFindReplace)

    ? 最后在CGridDemoView.cpp 文件的末尾编写CGridDemoView::OnFindReplace()函数,

    其代码如下:

    LRESULT CGridDemoView::OnFindReplace(WPARAM wparam, LPARAM lparam)

    {

    //获得查找对话框的对象指针

    CFindReplaceDialog *pDlg = CFindReplaceDialog::GetNotifier(lparam);

    if( NULL != pDlg )

    {

    if (pDlg->FindNext())

    {

    //处理单击“查找下一个”按钮的查找处理

    ??

    }

    }

    else if (pDlg->IsTerminating())

    {

    //处理查找对话框关闭的消息

    delete pDlg; //删除对话框对象

    }

    return 0;

    }

    在CGridDemoView::OnFindReplace()查找消息处理函数中,先调用了CFindReplaceDialog

    静态成员函数GetNotifier 根据消息的lparam 参数获得查找对话框的指针,然后访问查找对话

    框对象查询当前的查找状态,主要有以下一些查询函数。

    ? FindNext():查询用户是否单击“查找下一个”按钮。

    
上一章 目录 下一页