請問捕捉 EOleException (使用PowerPoint COM元件) |
尚未結案
|
ericssoneric
一般會員 發表:9 回覆:5 積分:2 註冊:2005-01-31 發送簡訊給我 |
|
rogan321
高階會員 發表:21 回覆:307 積分:200 註冊:2003-05-15 發送簡訊給我 |
|
ericssoneric
一般會員 發表:9 回覆:5 積分:2 註冊:2005-01-31 發送簡訊給我 |
|
ericssoneric
一般會員 發表:9 回覆:5 積分:2 註冊:2005-01-31 發送簡訊給我 |
其實還有個問題
就是在我所catch到的EOleException}之前
會有一個HRCHECK的錯誤訊息 <=有辦法把它弄掉嗎?
如圖 以下的圖是catch EOleException 後自己寫的ShowMessage
PS:我是直接拖曳BCB提供的VCL元件(PowerPointApplication)
以下是 播放投影片 的程式碼
void __fastcall TForm1::N6Click(TObject *Sender)
{
PowerPointApplication1->ActivePresentation->SlideShowSettings->Run();
} 萬分感謝
|
rogan321
高階會員 發表:21 回覆:307 積分:200 註冊:2003-05-15 發送簡訊給我 |
|
ericssoneric
一般會員 發表:9 回覆:5 積分:2 註冊:2005-01-31 發送簡訊給我 |
恩,不好意思,是我表達的不好
假設目前PowerPoint應用程式沒有開啟,但是我卻按下自己寫的程式(例如:有一個按鈕『下一頁』)便會發出此HRESULT錯誤訊息
這便是我所指的不正當的操作 (總得避免使用者的不正當操作程序) 以下附一下我的一些code (以下的程式我都有用try 與 catch(EOleException &ee))
//開啟舊檔 void __fastcall TForm1::N2Click(TObject *Sender) { Variant PathName; if(OpenDialog1->Execute()){ //記錄開檔位置 PathName=OpenDialog1->FileName; //將powerpoint的應用程式設為可見 PowerPointApplication1->set_Visible(msoTrue); PowerPointApplication1->Presentations->Open(PathName,msoFalse,msoFalse,msoTrue); } } //儲存檔案 void __fastcall TForm1::N11Click(TObject *Sender) { Variant PathName; if(SaveDialog1->Execute()){ PathName = SaveDialog1->FileName; //另存成投影片格式(.ppt) if(SaveDialog1->FilterIndex ==1 ) PowerPointApplication1->ActivePresentation->SaveAs( PathName, ppSaveAsPresentation, msoTrue ); //另存成JPEG檔案交換格式(.jpg) else if(SaveDialog1->FilterIndex ==2) PowerPointApplication1->ActivePresentation->SaveAs( PathName, ppSaveAsJPG, msoTrue); } } //網頁預覽 void __fastcall TForm1::Web1Click(TObject *Sender) { PowerPointApplication1->ActivePresentation->WebPagePreview(); } //簽字筆 void __fastcall TForm1::P1Click(TObject *Sender) { PowerPointApplication1->ActivePresentation->SlideShowWindow->View->PointerType = ppSlideShowPointerPen; } 對了,PowerPointApplication元件好像只能用簽字筆 ,沒有螢光筆或是鋼珠筆 即使我用OLE也沒有 //擦掉所有筆跡 void __fastcall TForm1::N34Click(TObject *Sender) { PowerPointApplication1->ActivePresentation->SlideShowWindow->View->EraseDrawing(); } 這個method再Office2003有bug , 他會修飾筆跡,而不是擦掉所有筆跡發表人 - ericssoneric 於 2005/03/24 01:38:52 發表人 - ericssoneric 於 2005/03/24 01:40:11 |
rogan321
高階會員 發表:21 回覆:307 積分:200 註冊:2003-05-15 發送簡訊給我 |
引言: 假設目前PowerPoint應用程式沒有開啟,但是我卻按下自己寫的程式(例如:有一個按鈕『下一頁』)便會發出此HRESULT錯誤訊息 這便是我所指的不正當的操作 (總得避免使用者的不正當操作程序)我的看法是: 在你所謂的應用程式沒有開啟之下你要做的保護應該是讓按鈕『下一頁』失效 Enabled=false或給於使用者訊息(ShowMessage)說明該動作可行的條件而不是 交由vcl元件給的這個"?"訊息~此非錯誤訊息,而是元件告知你動作有問題,你要讓 他失效~除非你去更改該元件code改由他來判斷錯誤的操作~事實上面的訊息看 起來就是他給的無法執行該功能的判斷訊息~由自己的程式判斷也簡單多了~給的 bool值去判斷或"你的資料開啟"之下再將按鈕enabled打開~以上看法或許有 不正確還望指教~~~^^ |
ericssoneric
一般會員 發表:9 回覆:5 積分:2 註冊:2005-01-31 發送簡訊給我 |
感謝您的寶貴意見
我所指的不正當操作其實不單單只有PowerPoint未開啟的狀態
像投影片播放模式的時候,若使用者按到任何有關於編輯模式的功能皆會出現錯誤訊息
所以程式一大,if-else的判斷要何其多,這就是為什麼要try-catch的原因吧!?
但是若是用BCB所提供的PowerPointApplication元件
即使我有try{}catch(EOleException &xx){}
在程式catch到之前皆會先出現HRESULT的訊息
但若是用OLE的話便不會出現HRESULT,而是直接捕捉到錯誤訊息
(OLE內是用 catch(EOleSysException &se))
但用OLE很麻煩而且我不熟><
所以才想說可否處理掉HRESULT的問題,
謝謝您
|
BIMEGiGio
一般會員 發表:3 回覆:6 積分:6 註冊:2004-11-15 發送簡訊給我 |
最近也碰到了這個HRCHECK的問題 我看了一下 BCB6下面的 utilcls.h 中的檔案
要把HRESULT拿掉的話需要: [code cpp] #if !defined(PROMPT_ON_HRCHECK_FAILURE) int i = IDYES; #else int i = DebugHlpr_PROMPT(_T("HRCHECK: "), szMsg); [/code] 只要上方的條件成立,就會自動回傳IDYES就不會出現HRCHECK的畫面, 如果說是要直接修改該.h檔也是可以 但是我覺得還是不要修改比較好 但是我ㄧ直沒辦法將上方的條件成立 請問各位先進是否是要在BCB裡面的設定要做? 我在我的Unit1.cpp的最前面有加上 [code cpp] #define NO_PROMPT_ON_HRCHECK_FAILURE 1 #define PROMPT_ON_HRCHECK_FAILURE 0 [/code] 但是還是無法使 #if !defined(PROMPT_ON_HRCHECK_FAILURE) int i = IDYES; 成立。 特來此請教。謝謝。 ===================引 用 ericssoneric 文 章=================== 感謝您的寶貴意見我所指的不正當操作其實不單單只有PowerPoint未開啟的狀態像投影片播放模式的時候,若使用者按到任何有關於編輯模式的功能皆會出現錯誤訊息所以程式一大,if-else的判斷要何其多,這就是為什麼要try-catch的原因吧!? 但是若是用BCB所提供的PowerPointApplication元件即使我有try{}catch(EOleException &xx){} 在程式catch到之前皆會先出現HRESULT的訊息 但若是用OLE的話便不會出現HRESULT,而是直接捕捉到錯誤訊息 (OLE內是用 catch(EOleSysException &se)) 但用OLE很麻煩而且我不熟>< 所以才想說可否處理掉HRESULT的問題, 謝謝您
編輯記錄
BIMEGiGio 重新編輯於 2008-02-05 10:58:33, 註解 無‧
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |