快递计价器项目中使用到一个功能,选择某个客户的计价规则文件的实现方法
界面上直接创建一个按钮,事件代码如下:
Customer_File、Customer_Name、m_Customer
这三个是我自己工程里面用到的,自己用的时候别忘记定义。
1 2 3 4 5 6 7 8 9 10 11 12 |
//选择客户文件的按钮 void CMyDlg::OnButton2(void) { CFileDialog dlg(TRUE, NULL, "*.xls");//列出所选文件夹下所有.xls结尾的文件 if (dlg.DoModal() == IDOK) //当你找到文件并确定打开时 { Customer_File = dlg.GetFileName();//将获取到的文件名给Customer_File Customer_Name = Customer_File.Left(Customer_File.Find('.'));//去掉后缀的文件名给Customer_Name m_Customer.Format("%s", Customer_Name); UpdateData(FALSE); } } |
这三个变量已经按照原定的规则获取到了文件名以及用户名。
解析下这行代码
Customer_Name = Customer_File.Left(Customer_File.Find('.'));//去掉后缀的文件名给Customer_Name
从名字上可以看出来,是先找到了‘.’所在的位置,然后只留下‘.’左边的部分,这样就成功的去掉了文件的后缀名。
关于 .Left 和 .Find 函数
.Left函数百度百科的解释:
函数执行成功时返回string字符串左边n个字符,发生错误时返回空字符串(””)。如果任何参数的值为NULL,Left()函数返回NULL。如果n的值大于string字符串的长度,那么Left()函数返回整个string字符串,但并不增加其它字符。
.Find就是从头开始寻找对应的字符,找到后返回指定字符所在的位置。
这个位置信息交给.Left来取出前面的字符串。
最后一个UpdateData(FALSE);
的解析
摘抄自网络
当你使用了ClassWizard建立了控件和变量之间的联系后:当你修改了变量的值,而希望对话框控件更新显示,就应该在修改变量后调用UpdateData(FALSE);如果你希望知道用户在对话框中到底输入了什么,就应该在访问变量前调用UpdateData(TRUE)。