با سلام

برای چاپ کردن داده ها باید OCX استفاده کنم . تا حالا هم با Mfc ActiveX Control تو سی++ کار نکردم.

لطفا در مورد نحوه کار و استفاده از این امکان راهنمایی کنید.

توضیحات اولیه : بصورت تستی یک نوع از کنترل ایجاد کردم تابعی رو هم برای تست نئشتم که مثلا یک پیغام خطا ارسال کند اما بعد از صدور پیغام خطا , ارور میدهد.

روش ارسال پیغام :

char str[] = "ok";
char *pStr1 = str;


LPCTSTR myStr = (LPCTSTR)str;
MessageBox(myStr ,0,0);


بعد از نشان دادن پیغام این خطا رخ میدهد :
ByRef value type parameter cannot be null.
تابع بصورت Event در خروجی نشان داده میشود.(هنگام استفاده از کنترل)

در مرحله بعد در همین تابع که میخوام یک فایل Crystal Report رو باز کنم که بتونم چاپ کنم خطا میدهد.

کد باز کردن و گزارش :

IApplicationPtr m_Application;
IReportPtr m_Report;
VARIANT dummy;
VariantInit (&dummy);
dummy.vt = VT_EMPTY;
HRESULT hr = S_OK;
// Specify the path to the report you want to print
_bstr_t ReportPath("c:\\RptTestOcx1.rpt");
variant_t vtEmpty(DISP_E_PARAMNOTFOUND, VT_ERROR);
// Instantiate the IApplication object
m_Application.CreateInstance("CrystalRuntime.Appli cation");
//Open the Report using the OpenReport method
m_Report = m_Application->OpenReport("c:\\RptTestOcx.rpt", dummy.vt);


خطای تولید شده :


Exception of type 'System.OutOfMemoryException' was thrown.


لطفا راهنمایی کنید , با تشکر