当前位置:文档之家› 06 Windows通用对话框

06 Windows通用对话框


表5.6
字体对话框常用成员函数
成员函数 DoModal GetCurrentFont GetFaceName GetStyleName GetSize GetColor GetWeight IsStrikeOut IsUnderline IsBold IsItalic
功能描述 显示字体对话框 获取当前选定的字体名 获取选择字体的字体名称 获取选择字体的风格名称 获取选择字体的大小 获取选择字体的颜色 获取选择字体的磅数 字体是否具有删除线 字体是否具有下划线 字体是否加粗 字体是否倾斜
(9)为“替换”按钮处理单击事件,创建“替换”对话框。代码如下:
void CFindAndReplaceDlg::OnButton2() {
dlg = new CFindReplaceDialog; dlg->Create(FALSE,NULL); dlg->ShowWindow(SW_SHOW); find = FALSE; }
//创建文件并以写方式打开
m_RichEdit.GetWindowText(strText); //获得控件内文本
strcpy(write,strText);
file.Write(write,strText.GetLength()); //向文件中写入数据
file.Close();
//关闭文件
}
通过CFileDialog方法构造“另存为”对话框,使用GetPathName方法获得保存文件的路径,通过 GetWindowText方法获取Rich Edit控件中文本,再使用CFile类向文件中写入文本。 程序运行结果如图5.21所示。
long CFindAndReplaceDlg::OnFindReplace(WPARAM wParam, LPARAM lParam)
CString strText,repText; //声明字符串变量
strText = dlg->GetFindString(); //获得查找字符串
CString str;
//在编辑框中显示新的字符串 //获得查找字符串在编辑框文本中的位置 //选中查找或替换的字符串
说明:
使用GetWindowText方法获得控件中的显示文本,然后使用Find方法获得要查找字符串在文本中首次出现 的位置,判断当前是查找对话框还是替换对话框,如果是查找对话框则获得查找字符串的长度,否则获得替换 字符串的长度,最后根据首次出现位置和字符串长度选中字符串。
//构造文件打开对话框
CString strPath,strText="";
if(dlg.DoModal() == IDOK) //显示文件打开对话框
{
strPath=dlg.GetPathName(); //获得文件路径
}
CFile file(strPath,CFile::modeRead); //以只读方式打开文件
if(dlg.DoModal()==IDOK) //显示另存为对话框
{
strPath=dlg.GetPathName(); //获得文件路径
if(strPath.Right(4)!=".txt")
strPath+=".txt";
}
CFile file(_T(strPath),CFile::modeCreate|CFile::modeWrite);
//声明字符串变量 //获得查找字符串的长度 //获得编辑框中文本长度
//获得查找字符串在编辑框文本中的位置
//获得替换字符串右侧的字符串 //获得替换字符串
len = repText.GetLength();
rindex = len; str = left + repText + right; //组合成新的字符串 m_RichEdit.SetWindowText(str);
//声明字符串变量
m_RichEdit.GetWindowText(str);
//获得编辑框中是文本
if(dlg->ReplaceCurrent()) //判断是否进行替换
find = FALSE; //进行替换
else
find = TRUE; //进行查找
int len;
//声明整型变量
if(dlg->ReplaceAll()) //判断是否全部替换 repText = dlg->GetReplaceString();
static UINT WM_FINDMESSAGE = RegisterWindowMessage(FINDMSGSTRING);
(6)在对话框的消息映射部分添加如下映射宏。
ON_REGISTERED_MESSAGE(WM_FINDMESSAGE, OnFindReplace )
(7)添加WM_FINDMESSAGE消息的处理函数,用于实现查找和替换操作。代码如下:
功能描述 是否进行查找下一个字符串 在登记消息句柄中获得FINDREPLACE结构 获得当前找到的字符串 获得当前替换的字符串 对话框是否终止 是否查找精确匹配的字符串 是否查找完全匹配的字符串 是否替换所有找到的字符串 是否替换当前字符串 是否向下查找
【例5.2】 下面介绍如何使用查找/替换对话框,具体操作步骤如下。 (1)创建一个基于对话框的应用程序。 (2)向对话框中添加一个Rich Edit控件和两个按钮控件,设置Rich Edit控件具有滚动条和允许多行输入。 (3)为Rich Edit控件添加变量m_RichEdit,要使用Rich Edit控件必须在显示对话框以前调用 AfxInitRichEdit函数。 (4)在主窗口的头文件中声明一个CFindReplaceDialog类的对象dlg和一个CString类型变量find。 (5)定义一个新消息WM_FINDMESSAGE。代码如下:
}
通过CFileDialog方法构造“打开”对话框,使用GetPathName方法获得打开文件的路径,再使用CFile类读 取文件的内容,通过SetWindowText方法在Rich Edit控件中显示出来。
(5)为“另存为”按钮处理单击事件,创建“另存为”对话框。代码如下:
void COpenAndSaveDlg::OnButton2()
图5.21 文件对话框应用
查找编辑框中的文本
在使用查找/替换对话框前,需要在当前窗口类中添加ON_REGISTERED_MESSAGE消息映射宏,用于设置回调 函数以处理查找或替换行为。查找/替换对话框的常用成员函数如表5.5所示
表5.5
查找/替对话框常用成员函数
成员函数 FindNext GetNotifier GetFindString GetReplaceString IsTerminating MatchCase MatchWholeWord ReplaceAll ReplaceCurrent SearchDown
//创建查找对话框 //显示查找对话框
//创建替换对话框 //显示替换对话框
(10)运行程序,效果如图5.22所示。 图5.22 查找\替换对话框应用
获取字体信息
利用字体对话框,用户可以方便地设置控件的字体,省去了调用CFont的CreateFont方法的麻烦。字体对话 框的常用成员函数如表5.6所示
【例5.1】 下面通过一个实例来演示文件对话框的创建和使用,程序设计步骤如下。
(1)创建一个基于对话框的应用程序。
(2)向对话框中添加一个Rich Edit控件和两个按钮控件,设置Rich Edit控件具有滚动条和允许多行输入。
(3)为Rich Edit控件添加变量m_RichEdit,要使用Rich Edit控件必须在显示对话框以前调用AfxInitRichEdit 函数。
Windows通用对话框
本讲大纲:
1.获取磁盘中的文 2.查找编辑框中的文本 3.获取字体信息 4.获取打印机设备上下文 5.设置打印纸大小
获取磁盘中的文件
在开发程序时,当用户需要从磁盘中选择一个文件或者将数据保存到磁盘文件时,需要使用文件对话框。 文件对话框的常用成员函数如表5.4所示
表5.4
文件对话框常用成员函数
{
CFileDialog dlg(FALSE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
"All Files(*.*)|*.*| |",AfxGetMainWnd());
//构造另存为对话框
CString strPath,strText="";
char write[1000];
char read[1000];
file.Read(read,1000);
//读取数据
for(int i=0;i<file.GetLength();i++)
{
strText += read[i];
file.Close();
//关闭文件
m_RichEdit.SetWindowText(strText); //显示文件内容
if(ret < 0)
return 1;
if(!degree)
//判断是否为第一次替换
index = str.Find(strText,nindex); //获得查找字符串在编辑框文本中的位置
else if(nindex-rindex >= 0) //判断起始查找位置是否小于0
index = str.Find(strText,nindex-rindex);
else
{
nindex = rindex; //设置起始查找位置
return 1;}ຫໍສະໝຸດ degree = TRUE;
相关主题