全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1865
推到 Plurk!
推到 Facebook!

在 .DLL 檔裡引入一個 QuickReport TQuickRep 出問題.

尚未結案
yunghant
一般會員


發表:7
回覆:9
積分:3
註冊:2002-10-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-03-03 22:16:22 IP:61.58.xxx.xxx 未訂閱
請問一下各位大大, 我嘗試把 QuickReport 做在 .DLL 檔來給 .EXE 使用, 今只在 .DLL 檔裡引入一個 QuickReport TQuickRep 且都還未設上什麼其他項, 又建立一個 Project1.exe 使用 BitBtn 來呼叫啟動試試, 但是一進入 .DLL的    //--------------// "UnitDll.cpp"    #include "UnitDll.h" #include "QuickList2.h"    #pragma argsused int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved) {         return 1; } //---------------------------------------------------------------------------    void DLL_EXP Show_Dll_Screen( HWND hWnd ) {   QuickReport2->Preview();      --> 一進來 DLL 就在這裡出現問題... }    //--------------// "UnitDll.h"    #ifndef  __DLLMAIN_H #define  __DLLMAIN_H    #ifdef  __DLL__ #define DLL_EXP __declspec( dllexport ) #else #define DLL_EXP __declspec( dllimport ) #endif    extern  "C" DLL_EXP void Show_Dll_Screen( HWND hWnd );    #endif    //--------------// "UnitTest.cpp"    #include  #pragma hdrstop #include "UnitTest.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" void (_stdcall *Show_Dll_Screen)(HWND); TTestForm *TestForm; //--------------------------------------------------------------------------- __fastcall TTestForm::TTestForm(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TTestForm::BitBtn1Click(TObject *Sender) { HINSTANCE dllInstance = LoadLibrary("DllMain.dll"); if ( dllInstance ) { (FARPROC &)Show_Dll_Screen = GetProcAddress(dllInstance,"_Show_Dll_Screen"); if ( Show_Dll_Screen ) { Show_Dll_Screen( Application->Handle ); } FreeLibrary( dllInstance ); } } //--------------------------------------------------------------------------- QuickReport 是 3.62, 謝謝各位大大的看完, 賜教, 謝謝。 ----- 壓縮檔 Dll_QuickReport.rar , 暫時錯放於發表文章中的圖檔存放區, 等站長刪除後再改上傳放於求助區。 發表人 - yunghant 於 2005/03/03 23:24:52
yunghant
一般會員


發表:7
回覆:9
積分:3
註冊:2002-10-05

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-04-13 18:51:42 IP:61.58.xxx.xxx 未訂閱
試了好久, 在 .DLL 檔加換幾行.. //--------------// "UnitDll.cpp" TQuickReport2 *QRep1; // 加上此行。 void DLL_EXP Show_Dll_Screen( HWND hWnd ) { // QuickReport2->Preview(); --> 一進來 DLL 就在這裡出現問題... // 改換成下面這幾行就行了 。 QRep1 = new TQuickReport2(Application); QRep1->Parent = QuickReport2; QRep1->Preview(); delete QRep1; }
系統時間:2024-04-19 10:25:06
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!