最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

LabVIEW和LabWindows/CVI前面板界面中嵌入word等Office辦公軟件

2023-07-21 14:23 作者:江南拱橋夜  | 我要投稿

? ? ? ?在使用office辦公軟件的過(guò)程中,有時(shí)為了使用方便,通常會(huì)將如word,excel等嵌入到程序界面中。LabVIEW與LabWindows/CVI中同樣支持這一功能,只需要提供相關(guān)的ActiveX插件就行。

? ? ? ? ActiveX控件基于COM服務(wù)器進(jìn)行操作,且與開(kāi)發(fā)平臺(tái)無(wú)關(guān),因此,在一種編程語(yǔ)言上開(kāi)發(fā)的ActiveX控件無(wú)需任何修改,就可在另一種編程語(yǔ)言中使用。由于其可重用性的特點(diǎn),目前,除操作系統(tǒng)本身提供的ActiveX控件外,在網(wǎng)絡(luò)資源上也能得到相當(dāng)多的ActiveX控件,可以幫助我們完成各種各樣的軟件開(kāi)發(fā)任務(wù)。

? ? ? ? 下面通過(guò)一個(gè)例子說(shuō)明在LabVIEW和LabWindows/CVI平臺(tái)中使用ActiveX控件編程的方法實(shí)現(xiàn)將如word,excel等嵌入到程序界面中。 需要的插件為:Edrawoffice Viewer ActiveX Control,Edraw office Viewer ActiveX Control不免費(fèi),使用介紹后總會(huì)彈出提示對(duì)話框,但不影響使用,當(dāng)然也可以自己在網(wǎng)上找免費(fèi)的資源。安裝步驟如下:

? ? ? ? ?1、??安裝Edraw OfficeViewer ActiveX Control,安裝完后在安裝路徑下找到redist文件夾,里面有32位和64位的officeviewer.ocx文件,其實(shí)我們需要的只是這個(gè)文件,即使電腦上不安裝Edraw Office Viewer ActiveX Control,只要注冊(cè)這個(gè)文件就可以了。

? ? ? ? ?2、??需要手動(dòng)注冊(cè)officeviewer.ocx文件,注冊(cè)方法如下:officeviewer.ocx下載放在目錄c:\windows\syswow64目錄下。CMD管理員運(yùn)行,命令行中輸入regsvr32 c:\Windows\SysWOW64\officeviewer.ocx(相應(yīng)控件名)

? ? ?3、??注冊(cè)之后打開(kāi)LabVIEW,在新建VI前面板中插入狀態(tài)欄控件的方法為,在前面板“ActiveX容器”控件的右鍵菜單中選擇“插入ActiveX對(duì)象...”命令,彈出“選擇ActiveX對(duì)象”對(duì)話框,選擇”Edraw OfficeViewer Component”,如圖1所示。此時(shí)前面板中ActiveX容器顯示如圖2所示;

圖1
圖2

? ? ? ?同樣在LabWindows/CVI中,注冊(cè)之后打開(kāi)LabWindows/CVI,在新建uir前面板中鼠標(biāo)右鍵快捷菜單選擇ActiveX…,右鍵插入ActiveX對(duì)象,找到”Edraw OfficeViewer Component”,添加到面板上。如圖3所示。此時(shí)前面板中ActiveX容器顯示如圖4所示;注意:在LabWindows/CVI中,需要引入引入了fp和.h文件 。步驟如下:右鍵菜單---》Generate ActiveX Control Driver創(chuàng)建控件驅(qū)動(dòng),也就是引入一堆操作頭文件,否則無(wú)法編碼操作。

圖3

圖4

LabVIEW前面板設(shè)計(jì)

? ? ? ?本例VI程序運(yùn)行前面板如圖所示,在前面板上中間位置調(diào)用了我們已經(jīng)注冊(cè)好的ActiveX控件——“Edraw OfficeViewer Component”,當(dāng)按下面板上的”打開(kāi)文件”按鈕,會(huì)彈出選擇文件對(duì)話框,選擇相應(yīng)的文件后,word文檔會(huì)顯示在界面上;當(dāng)我們?cè)诳丶?nèi)修改文件后,點(diǎn)擊”修改文件”按鈕后,源文件的內(nèi)容會(huì)被修改;點(diǎn)擊“退出”按鈕則退出程序。

LabVIEW程序框圖的代碼實(shí)現(xiàn)

? ? ? ?本例程序框圖使用了事件結(jié)構(gòu),在事件結(jié)構(gòu)中響應(yīng)前面板的所有命令按鈕的“值改變”事件。通過(guò)事件結(jié)構(gòu)我們可以實(shí)現(xiàn)我們所要求的功能。部分程序框圖如下:

? ? ? 首先說(shuō)明一下什么是屬性,屬性是指對(duì)象(如控件、VI或應(yīng)用程序等)的特性,相當(dāng)于C++類中的數(shù)據(jù)。具有“可讀”、“可寫(xiě)”或“可讀寫(xiě)”等操作方式。在程序框圖中的屬性節(jié)點(diǎn)函數(shù)上有一個(gè)小箭頭,若在左邊,表明該屬性可寫(xiě),若在右邊,表明該屬性可讀。對(duì)于可讀可寫(xiě)的屬性,右鍵單擊屬性節(jié)點(diǎn)中的某個(gè)屬性,可以在右鍵菜單中選擇“轉(zhuǎn)換為讀取”或“轉(zhuǎn)換為寫(xiě)入”,在兩者之間進(jìn)行切換。關(guān)于屬性節(jié)點(diǎn)的生成不在本文論述的范圍內(nèi)。

LabWindows/CVI前面板設(shè)計(jì)

? ? ? 本例程序運(yùn)行前面板如圖所示,在前面板上的中間位置調(diào)用了操作系統(tǒng)提供的ActiveX控件——“Edraw OfficeViewer Component”, 當(dāng)按下面板上的”生成報(bào)表”按鈕,會(huì)自動(dòng)生成報(bào)表;當(dāng)按下面板上的”閱讀報(bào)表”按鈕,word報(bào)表文檔會(huì)顯示在界面上;當(dāng)我們?cè)诳丶?nèi)修改文件后,點(diǎn)擊”修改報(bào)表”按鈕后,源文件的內(nèi)容會(huì)被修改;點(diǎn)擊“退出”按鈕則退出程序。

LabWindows/CVI程序的代碼實(shí)現(xiàn):

部分代碼如下:

#include <cvirte.h>?????????

#include <userint.h>

#include "wordreport.h"

#include "word.h"

#include <utility.h>

#include "report.h"

#include "officeviewer.h"

?

#define rowNum 1


static int panelHandle;

static CAObjHandle appHandle = 0;

static CAObjHandle docHandle = 0;

static CAObjHandle tablesHandle = 0;

static CAObjHandle columnsHandle=0;

static CAObjHandle borderHandle=0;

static CAObjHandle bordersHandle=0;

static CAObjHandle rowHandle=0,rowsHandle=0;

static CAObjHandle shadingHandle=0;

static CAObjHandle wordhandle=0;

?

char WordFileName[MAX_PATHNAME_LEN]={0};

?

int main (int argc, char *argv[])

{

???? if (InitCVIRTE (0, argv, 0) == 0)

??????????? return -1;?? /* out of memory */

???? if ((panelHandle = LoadPanel (0, "report.uir", PANEL)) < 0)

??????????? return -1;

???? DisplayPanel (panelHandle);

???? RunUserInterface ();

???? DiscardPanel (panelHandle);

???? return 0;

}

……

int CVICALLBACK Read (int panel, int control, int event,

???????????????????????????????? ? void *callbackData, int eventData1, int eventData2)

{

???? switch (event)

???? {

??????????? case EVENT_COMMIT:

?????????????????? GetObjHandleFromActiveXCtrl (panelHandle, PANEL_EDOFFICE, &wordhandle);

?????????????????? GetProjectDir(WordFileName);

?????????????????? strcat(WordFileName,"\\model\\report.docx");

??????????????????

??????????? EDOfficeLib__DEDOfficeOpenWord (wordhandle, NULL, WordFileName, 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, NULL);

??????????????????

?????????????????? CA_DiscardObjHandle(wordhandle);

?????????????????? break;

???? }

???? return 0;

}

?

int CVICALLBACK Save (int panel, int control, int event,

???????????????????????????????? ? void *callbackData, int eventData1, int eventData2)

{

???? switch (event)

???? {

??????????? case EVENT_COMMIT:

??????????? GetObjHandleFromActiveXCtrl (panelHandle, PANEL_EDOFFICE, &wordhandle);

?????????????????? GetProjectDir(WordFileName);

?????????????????? strcat(WordFileName,"\\model\\report.docx");

?????????????????? EDOfficeLib__DEDOfficeSaveAs (wordhandle, NULL, WordFileName, CA_DEFAULT_VAL, NULL);

?????????????????? CA_DiscardObjHandle(wordhandle);

?????????????????? break;

???? }

???? return 0;

}

? ? ? ? ? EDOfficeLib__DEDOfficeOpenWord函數(shù)用于word文件的打開(kāi),其聲明如下:

HRESULT EDOfficeLib__DEDOfficeOpenWord(CAObjHandle Object_Handle, ERRORINFO *Error_Info,const char *File_Name,VARIANT Confirm_Conversions, VARIANT Read_Only,VARIANT Add_To_Recent_Files,VARIANT Password_Document,VARIANT Password_Template, VARIANT Revert,VARIANT Write_Password_Document,VARIANT Write_Password_Template, VARIANT Format,VBOOL *Return_Value);

? ? ? ? EDOfficeLib__DEDOfficeSaveAs函數(shù)用于office文件的保存,其聲明如下:HRESULT EDOfficeLib__DEDOfficeSaveAs (CAObjHandle Object_Handle,ERRORINFO *Error_Info,const char *File_Path,VARIANT File_Format,VBOOL *Return_Value);

結(jié)論

? ? ? ?由上面的例子可以看出,ActiveX控件類似于LabVIEW和LabWindows/CVI本身的控件,具有獨(dú)立的顯示界面,以及獨(dú)立的屬性、方法甚至事件,在系統(tǒng)中安裝注冊(cè)一個(gè)ActiveX控件后,操作系統(tǒng)中所有應(yīng)用程序都可以使用這個(gè)控件,同時(shí),LabVIEW和LabWindows/CVI語(yǔ)言調(diào)用ActiveX控件的編程也相對(duì)比較簡(jiǎn)單。


LabVIEW和LabWindows/CVI前面板界面中嵌入word等Office辦公軟件的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
万载县| 华亭县| 浑源县| 曲麻莱县| 浪卡子县| 凯里市| 宣恩县| 垦利县| 涡阳县| 襄垣县| 巴林右旗| 繁昌县| 唐海县| 娄烦县| 岳阳县| 丽水市| 桃园县| 和平县| 漠河县| 阿克陶县| 防城港市| 绥棱县| 闽侯县| 福海县| 竹山县| 贺兰县| 荆州市| 封开县| 东丽区| 楚雄市| 长治县| 宁武县| 精河县| 七台河市| 剑阁县| 隆尧县| 鹿泉市| 呈贡县| 尚义县| 陆川县| 晴隆县|