2008-10-22 31 views
5

我正在構建「從Excel導入」功能。它必須位於從非MFC應用程序調用的DLL中。必須提供電子表格的圖像,用戶可以拖動選擇框(選擇單元格),然後單擊導入按鈕,併發生正確的事情。無法獲得電子表格,有一個按鈕靠近它,併發生在一個DLL中。需要ActiveX控件才能將Excel嵌入到對話框中

我走了一個DLL對話框中的MFC對話框的路由,但在試圖爲對話框上的窗口上的excel調出一個OLE客戶端時被阻止。只有支持我發現使用OLE顯示Excel需要SDI。我能夠使自動化功能工作,並且我可以讀取單元格並在對話框中繪製它們的「假圖像」......但是恐怕這將不符合我的要求。

所以我試着創建一個SDI。我能夠創建一個將Excel作爲OLE客戶端的SDI。我能夠處理「選擇更改」事件,並轉到我需要的單元格數據。我在這一點被2項挫敗:

  1. 無法使此SDI在MFC DLL中工作。在CWinApp構造函數中崩潰,斷言AfxGetThread不爲null。將「theApp」移到單個導出的DLL函數的本地範圍內,但仍然無法使其工作,但具有不同的症狀:添加AFX_MANAGE_STATE(AfxGetStaticModuleState())時崩潰;導出DLL函數,如果我沒有使用它,則從未輸入OnInitInstance。嘗試添加對應用程序的Run()函數的調用,但這沒有幫助。如果有人認爲他們有一個想法是什麼問題,我可以發佈此代碼。

  2. 當Excel客戶端項目處於活動狀態時,無法顯示工具欄。我可以將我的「導入」(和其他選項)放在頂部的菜單欄上,但這不夠明顯。即使是一個浮動工具欄也被關閉它是有道理的,它會這樣做,因爲如果有一個工具欄不能對當前活動的項目執行操作會令人困惑......但在我的情況下,這是一個問題。

所以,現在我想我需要回到對話的方式,並嵌入,帶來了一個Excel電子表格文件導入的ActiveX控件。

必須允許我處理選擇更改事件,或者必須允許我查找選定哪些單元格(或者如果單擊對話框上的「導入」按鈕導致選定單元格變爲未選中,最近選定的單元格)。

它還必須提供合理的許可條款,因爲這將用於廣泛向公衆提供的商業應用程序。

如果有人知道對我嘗試過的任何一種方法的「快速修復」,那也是有用的。

希望有人能幫助我!

回答

0

如果你只是想嵌入Excel,你不需要任何東西。

只需將其嵌入到標準OCX主機控件中即可。

+0

嗨弗雷德。我不熟悉這種控制。谷歌變成了一堆第三方應用程序引用,並在VS中,右鍵單擊我的對話框,然後選擇「插入Active X控件...」沒有任何聽起來像OCX主機控制的東西。你能爲我指出正確的方向嗎?非常感謝!! – Steve 2008-10-23 16:33:48

相關問題