我按著網上的vc操作word的教程用類向導匯入MSWORD.OLB添加型別庫中的MFC類,我把里面所有人類都匯出了,可是為啥沒有
msword.h這個檔案啊,大神求助啊.
uj5u.com熱心網友回復:
import后,生成的不是.h檔案,是叫tlh和.tli?檔案,并且應該是在debug的目錄下
uj5u.com熱心網友回復:
我是在 debug 目錄下發現了 msword.tlh檔案可是這個是怎么用啊.
我不是import,我是用類向導點擊從型別庫中添加MFC類選擇MSWORD.OLB檔案將其中的所有類都匯出到了專案,可是沒有msword.h這個檔案是啥問題啊.
uj5u.com熱心網友回復:
msword.tlh這個和.h檔案相當,可以使用IDE打開
uj5u.com熱心網友回復:
我也遇到同樣的問題了。
按照網上的方法在類向導里添加檔案:“C:\Program Files\Microsoft Office\OFFICE11\MSWORD.OLE“,然后把所有的類都添加到專案里。然后自定義一個類 在添加頭檔案#include "msword.h"的時候 編譯器報錯了.百度了好久也沒找到方法
uj5u.com熱心網友回復:
參考 5 樓 zhao4zhong1 的回復: 僅供參考://1.在VC中新建一控制臺程式,選支持MFC(當然,你也可以不選擇支持MFC的,不過會很麻煩)
//2.按CTRL+W調出MFC ClassWizard,Add Class->From a type library,選擇你的word的型別庫
// (例如我的是word2003,安裝在e盤,我的路徑是"e:\edittools\microsoft office\office11\msword.olb"),
// 選擇完畢后,在彈出的視窗中選擇要讓classwizard生成的包裝類,在本例中要用到
// _Application,
// Documents,
// _Document,
// Range
// 這四個類,選中他們后按OK
//3.進入你的main函式所在的cpp檔案,加入頭檔案參考
// #include "msword.h" //參考剛才classwizard生成的idispatch包裝類
//4.加入代碼
// console_word.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "console_word.h"
#include "msword.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// The one and only application object
CWinApp theApp;
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;
// initialize MFC and print and error on failure
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
// TODO: change error code to suit your needs
printf(_T("Fatal Error: MFC initialization failed!\n"));
nRetCode = 1;
}
else
{
// TODO: code your application's behavior here.
if (CoInitialize(NULL) != S_OK)
{
AfxMessageBox("初始化COM支持庫失敗!");
return -1;
}
_Application wordApp;
Documents docs;
_Document doc;
Range aRange;
COleVariant vTrue((short)TRUE), vFalse((short)FALSE), vOpt((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
CString txt;
wordApp.CreateDispatch("Word.Application",NULL);
wordApp.SetVisible(FALSE);
docs=wordApp.GetDocuments();
doc=docs.Open(COleVariant("c:\\new\\測驗.doc"),vFalse,vTrue,vFalse,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt);
aRange=doc.Range(vOpt,vOpt);
txt=aRange.GetText();
AfxMessageBox(txt);//這里GetText得到的就是word檔案的純文本了,你可以將其寫到txt檔案中
printf("[%s]\n",txt.GetBuffer(txt.GetLength()));//里面的換行不是\r\n而是\r,所以需要輸出重定向到文本檔案看結果。
aRange.ReleaseDispatch();
doc.Close(vOpt,vOpt,vOpt);
doc.ReleaseDispatch();
docs.ReleaseDispatch();
wordApp.Quit(vOpt,vOpt,vOpt);
wordApp.ReleaseDispatch();
CoUninitialize();
}
return nRetCode;
}
在64位Windows下:
64 位exe和dll在目錄c:\windows\system32 目錄下;
32 位exe和dll在目錄c:\windows\syswow64 目錄下;
所以要注意:
在win64位系統下注冊32位ocx或dll需要將32位ocx或dll拷貝到c:\windows\syswow64\目錄下。
且注冊要用c:\windows\syswow64\regsvr32 xxxxxxx.ocx或dll
你怎么總喜歡發一些所答非所問的帖子
uj5u.com熱心網友回復:
為MFC配置操作word的環境
兩種方式:1、將msword.h和msword.cpp添加到工程中(自己下,資源多),完成后會增加很多類。在實作檔案上添加#include "msword.h"即可。
2、從型別庫MSWORD.OLB匯入相關類,具體參見:點擊打開鏈接(一些細節解釋參見點擊打開鏈接 使用VS2010操作EXECL),實際測驗中將CApplication.h中自動生成的類似#import "C:\\Program Files\\Microsoft Office\\OFFICE11\\MSWORD.OLB" no_namespace 注釋掉后,只添加了前兩行代碼,然后為某些自動生成.h里個別漏void回傳值的成員函式添加了void即編譯通過(也不清楚為何會漏)。此外甚至有的不需要添加額外的代碼即通過,如點擊打開鏈接Automating Word 2016 using Visual C++ MFC in Visual Studio 2015(CodeProject上的開源工程,挺詳盡)。可以看出該方法挺繁雜,多種情況,但也有只添加需要的類,更規范優點。
其實第一種方式的兩個檔案是VC6.0匯入型別庫后自動生成的,無奈VS2010及以后的版本卻更不好使了。。。。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/67046.html
標籤:基礎類
上一篇:三次貝塞爾方程擬合完曲線后毛刺特別多是為什么
下一篇:求助—在使用vs2013創建的工程里添加資源檔案出現未知錯誤