|
虽然是求的字符数量,其实也可以求出空格的数量,实例实现步骤如下: (1)创建一个基于对话框的应用程序,设置对话框标题为“统计Word文档中的空格数量”。 (2)向对话框中添加3个静态控件、一个编辑框控件和一个按钮控件。界面布局如图1所示。 图1 界面设计 (3)在应用程序类(CCountSpaceApp)的InitInstance函数中初始化COM环境,代码如下。 ::CoInitialize(NULL); (4)按<Ctrl+W>组合键打开类向导,向工程中添加_Application类、Documents类和_Document类。并为控件关联变量,如图2所示。 图2 类向导 (5)在CCountSpaceDlg类中应用需要使用的头文件,代码如下。 #include "msword9.h" #include "atlbase.h" #include <comdef.h> (6)处理“打开”按钮的单击事件,在该事件的处理函数中,通过文件打开对话框获得选择的Word文档路径,并将打开文档,计算空格数量,代码如下。 void CCountSpaceDlg::OnButopen() { CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, "All Files(*.doc)|*.doc||",AfxGetMainWnd()); //构造文件打开对话框 CString strPath; //声明变量 if(dlg.DoModal() == IDOK) //判断是否按下"打开"按钮 { strPath = dlg.GetPathName(); //获得文件路径 m_Path.SetWindowText(strPath); //显示文件路径 _Application app; Documents docs; _Document doc; CComVariant a (_T(strPath)),b(false),c(0),d(true); //初始化连接 app.CreateDispatch("word.Application"); docs.AttachDispatch(app.GetDocuments()); doc.AttachDispatch(docs.Add(&a,&b,&c,&d)); long num = doc.ComputeStatistics(5,&_variant_t((bool)FALSE)) - doc.ComputeStatistics(3,&_variant_t((bool)FALSE)); //计算空格数 CString str; str.Format("空格数:%d个",num); m_Space.SetWindowText(str); docs.ReleaseDispatch(); doc.ReleaseDispatch(); app.ReleaseDispatch(); } } 运行程序,效果如图3所示。
图3 运行结果 |