www.pudn.com > LabWindowsCVI.rar > sample16.c


#include "msword8.h" 
#include  
#include 		/* Needed if linking in external compiler; harmless otherwise */ 
#include  
#include "sample16.h" 
 
#define mswordPath "D:\\Microsoft Office\\Office\\WINWORD.EXE" 
 
static int panelHandle; 
int error; 
 
// 定义变量appHandle表示Word应用程序句柄  
CAObjHandle appHandle; 
 
// 定义变量docHandle表示Word文档句柄  
CAObjHandle docHandle; 
 
// 定义变量currSelHandle表示Word文档中的光标句柄  
CAObjHandle currSelHandle; 
 
 
int LaunchWord (void); 
int ShutdownWord (void); 
int AddContent (void); 
int OpenDocFile (void); 
int SaveDocFile (void); 
int CloseDocFile (void); 
 
 
int main (int argc, char *argv[]) 
{ 
	if (InitCVIRTE (0, argv, 0) == 0)	 
		return -1; 
		 
	if ((panelHandle = LoadPanel (0, "sample16.uir", PANEL)) < 0) 
		return -1; 
		 
	DisplayPanel (panelHandle); 
	 
	RunUserInterface (); 
	 
	return 0; 
} 
 
int CVICALLBACK PanelCallback (int panel, int event, void *callbackData, 
		int eventData1, int eventData2) 
{ 
	switch (event) 
		{ 
		case EVENT_CLOSE: 
		 
			QuitUserInterface (0); 
			 
			break; 
		} 
	return 0; 
} 
 
int CVICALLBACK QuitCallback (int panel, int control, int event, 
		void *callbackData, int eventData1, int eventData2) 
{ 
	switch (event) 
		{ 
		case EVENT_COMMIT: 
		 
			QuitUserInterface (0); 
			 
			break; 
		} 
	return 0; 
} 
 
int CVICALLBACK CreateReportCallback (int panel, int control, int event, 
		void *callbackData, int eventData1, int eventData2) 
{ 
	switch (event) 
		{ 
		case EVENT_COMMIT: 
		 
	//设置光标为等待模式 
    SetWaitCursor (1); 
 
    //调用自定义函数,修改log.doc文件 
	LaunchWord(); 
	OpenDocFile(); 
	AddContent(); 
	SaveDocFile(); 
    CloseDocFile(); 
    ShutdownWord(); 
	 
    //设置光标为普通模式 
	SetWaitCursor (0); 
	 
	SetCtrlAttribute (panel, PANEL_VIEWREAPORT, ATTR_DIMMED, 0); 
			break; 
		} 
	return 0; 
} 
 
int CVICALLBACK ViewReportCallback (int panel, int control, int event, 
		void *callbackData, int eventData1, int eventData2) 
{ 
    char fileName[MAX_PATHNAME_LEN]; 
    char temp[MAX_PATHNAME_LEN]; 
	switch (event) 
		{ 
		case EVENT_COMMIT: 
 
			//打开工程目录下的log.doc文件 
            strcpy (fileName, mswordPath); 
			strcat (fileName, " "); 
            GetFullPathFromProject ("sample16.c", temp); 
	        temp[strlen(temp)-10]=0; 
	        strcat (temp, "log.doc"); 
	        strcat (fileName, temp); 
			LaunchExecutable (fileName); 
			 
			break; 
		} 
	return 0; 
} 
 
 
//启动Word 
int LaunchWord (void) 
{ 
    //调用Word_NewApplication函数创建_Application对象 
    //并获得创建的_Application对象的句柄 
    Word_NewApplication (NULL, &appHandle); 
     
   return 0; 
} 
 
//打开Doc文件 
int OpenDocFile (void) 
{ 
    //定义变量 
    CAObjHandle tempHandle; 
 
    //获取文档句柄和文档的光标句柄 
    Word_GetProperty (appHandle, NULL, Word_ApplicationDocuments, 
					  CAVT_OBJHANDLE, & tempHandle); 
    Word_DocumentsAdd (tempHandle, NULL, CA_DEFAULT_VAL, 
                   CA_DEFAULT_VAL,  &docHandle); 
    Word_GetProperty (appHandle, NULL, Word_ApplicationSelection, 
					  CAVT_OBJHANDLE, &currSelHandle); 
					   
	return 0; 
} 
 
//向Word文档中添加报表内容 
int AddContent (void) 
{ 
    //定义变量styleNdxVt储存字体样式 
    VARIANT styleNdxVt; 
     
    //定义变量pgrphFmtHandle储存段落格式句柄 
    CAObjHandle pgrphFmtHandle; 
     
    char reportContent[1000]; 
     
    //设置当前光标位置的字体样式为标题样式 
    CA_VariantSetLong (&styleNdxVt, WordConst_wdStyleTitle); 
    Word_SetProperty (currSelHandle, NULL, Word_SelectionStyle,  
                      CAVT_VARIANT, styleNdxVt); 
 
    //设置段落的对齐方式 
    Word_GetProperty (currSelHandle, NULL, 
                      Word_SelectionParagraphFormat, 
                      CAVT_OBJHANDLE, &pgrphFmtHandle); 
    Word_SetProperty (pgrphFmtHandle, NULL, 
                      Word_ParagraphFmtAlignment, CAVT_LONG, 
                      WordConst_wdAlignParagraphCenter); 
 
    //输入标题 
    Word_SelectionTypeText (currSelHandle, NULL, "Test Report"); 
     
    //输入回车键,换行 
    Word_SelectionTypeParagraph (currSelHandle, NULL); 
     
    //输入段落标题 
    Word_SelectionTypeText (currSelHandle, NULL, "Report Summary"); 
 
    //设置设置当前光标位置的字体样式为标题1样式 
    CA_VariantSetLong (&styleNdxVt, WordConst_wdStyleHeading1); 
    Word_SetProperty (currSelHandle, NULL, Word_SelectionStyle,  
                      CAVT_VARIANT, styleNdxVt); 
 
    //输入回车键,换行 
    Word_SelectionTypeParagraph (currSelHandle, NULL); 
 
    //设置段落左侧缩进1.27cm 
    Word_GetProperty (currSelHandle, NULL, 
                                Word_SelectionParagraphFormat, 
                                CAVT_OBJHANDLE, &pgrphFmtHandle);   
    Word_SetProperty (pgrphFmtHandle, NULL, 
                                Word_ParagraphFmtLeftIndent,  
                                CAVT_FLOAT, 36.00) ; 
 
    //获取TEXTBOX控件中的值 
	    GetCtrlVal (panelHandle, PANEL_TEXTBOX, reportContent); 
    //输入正文文字 
    Word_SelectionTypeText (currSelHandle, NULL, reportContent); 
 
    //释放pgrphFmtHandle句柄 
    CA_DiscardObjHandle (pgrphFmtHandle); 
	return 0; 
} 
 
//储存Doc文件 
int SaveDocFile (void) 
{ 
    //定义变量fileNameVt储存文件名 
    VARIANT fileNameVt; 
 
    char fileName[MAX_PATHNAME_LEN]; 
 
    //获取该工程中文件sample16.c的路径名 
    GetFullPathFromProject ("sample16.c", fileName); 
	 
	//修改文件名为工程目录下的log.doc文件 
    fileName[strlen(fileName)-10]=0; 
	strcat (fileName, "log.doc"); 
     
    //设置fileNameVt为空 
    CA_VariantSetEmpty (&fileNameVt); 
     
    //将字符串数据转化成VARIANT类型数据 
    CA_VariantSetCString (&fileNameVt, fileName); 
     
    //存储文件 
    Word_DocumentSaveAs (docHandle, NULL, fileNameVt, 
                          CA_DEFAULT_VAL, CA_DEFAULT_VAL, 
                          CA_DEFAULT_VAL, CA_DEFAULT_VAL, 
                          CA_DEFAULT_VAL, CA_DEFAULT_VAL, 
                          CA_DEFAULT_VAL, CA_DEFAULT_VAL, 
                          CA_DEFAULT_VAL, CA_DEFAULT_VAL); 
 
    //设置fileNameVt为空 
    CA_VariantClear (&fileNameVt); 
	return 0; 
} 
 
//关闭Doc文件 
int CloseDocFile (void) 
{ 
   VARIANT wdSaveChangesVt ; 
    
   //释放currSelHandle句柄 
   CA_DiscardObjHandle (currSelHandle); 
   currSelHandle = 0; 
    
   //关闭Doc文件 
   CA_VariantSetLong (&wdSaveChangesVt, WordConst_wdDoNotSaveChanges); 
   Word_DocumentsClose (docHandle, NULL, wdSaveChangesVt, 
                      CA_DEFAULT_VAL, CA_DEFAULT_VAL); 
    
   //释放docHandle句柄 
   CA_DiscardObjHandle (docHandle); 
   docHandle = 0; 
   return 0; 
} 
 
int ShutdownWord (void) 
{ 
    VARIANT wdSaveChangesVt; 
     
    //关闭Word应用程序 
    CA_VariantSetLong (&wdSaveChangesVt, WordConst_wdDoNotSaveChanges); 
    Word_ApplicationQuit (appHandle, NULL, wdSaveChangesVt, 
                          CA_DEFAULT_VAL, CA_DEFAULT_VAL); 
 
    //释放appHandle句柄 
    CA_DiscardObjHandle (appHandle); 
    appHandle=0; 
	return 0; 
}