| ImageGear Professional v18.2 > User Guide > Getting Started > MS Visual Studio .NET 2003 C++ MFC Application > Adding the Code |
Then open the header file created for your application's dialog (if you named your project IG_MFC, then the dialog header file will be IG_MFCDlg.h), and add five import statements near the top, as follows:
|
Copy Code
|
|
|---|---|
#if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #import "C:\Program Files\Accusoft\ImageGear v18\...\Shared\Bin\igcore18a.ocx" #import "C:\Program Files\Accusoft\ImageGear 18\...\Shared\Bin\igformats18a.ocx" #import "C:\Program Files\Accusoft\ImageGear v18\...\Shared\Bin\igdisplay18a.ocx" #import "C:\Program Files\Accusoft\ImageGear v18\...\Shared\Bin\igdlgs18a.ocx" #import "C:\Program Files\Accusoft\ImageGear v18\...\Shared\Bin\igview18a.ocx" |
|
This will cause .tlh and .thi files to be generated when your application is compiled. We have found that the wrapper classes defined in .tlh files are easier to use.
|
Copy Code
|
|
|---|---|
protected: HICON m_hIcon; GearCORELib::IIGPagePtr m_pPage; GearDISPLAYLib::IIGPageDisplayPtr m_pPageDisplay; GearDISPLAYLib::IIGDisplayCtlPtr m_pDisplayCtl; GearVIEWLib::IIGPageViewCtlPtr m_pPageViewCtl; GearFORMATSLib::IIGFormatsCtlPtr m_pFormatsCtl; GearCORELib::IIGCoreCtlPtr m_pCoreCtl; GearDIALOGSLib::IIGDlgsCtlPtr m_pDlgsCtl; GearDIALOGSLib::IIGFileDlgPtr m_pFileDialog; // Generated message map functions virtual BOOL OnInitDialog(); afx_msg void OnSysCommand(UINT nID, LPARAM lParam); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); DECLARE_MESSAGE_MAP() |
|
|
Copy Code
|
|
|---|---|
CIG_MFCDlg::CIG_MFCDlg(CWnd* pParent /*=NULL*/) : CDialog(CIG_MFCDlg::IDD, pParent) , m_pPage(NULL) , m_pPageDisplay(NULL) , m_pDisplayCtl(NULL) , m_pPageViewCtl(NULL) , m_pFormatsCtl(NULL) , m_pCoreCtl(NULL) , m_pDlgsCtl(NULL) , m_pFileDialog(NULL) { //{{AFX_DATA_INIT(CIG_MFCDlg) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } |
|
| Example Title |
Copy Code
|
|---|---|
BOOL CIG_MFCDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Set the icon for this dialog. The framework does this
// when the application's main window is not a dialog
SetIcon(m_hIcon, True); // Set big icon
SetIcon(m_hIcon, False); // Set small icon
CWnd *coreWnd, *formatsWnd, *displayWnd, *pageviewWnd,
*dlgsWnd;
coreWnd = GetDlgItem(IDC_IGCORECTL1);
formatsWnd = GetDlgItem(IDC_IGFORMATSCTL1);
dlgsWnd = GetDlgItem(IDC_IGDLGSCTL1);
displayWnd = GetDlgItem(IDC_IGDISPLAYCTL1);
pageviewWnd = GetDlgItem(IDC_IGPAGEVIEWCTL1);
//Create the different controls
m_pCoreCtl = (GearCORELib::IIGCoreCtlPtr)
coreWnd->GetControlUnknown();
m_pFormatsCtl = (GearFORMATSLib::IIGFormatsCtlPtr)
formatsWnd->GetControlUnknown();
m_pDlgsCtl = (GearDIALOGSLib::IIGDlgsCtlPtr)
dlgsWnd->GetControlUnknown();
m_pDisplayCtl = (GearDISPLAYLib::IIGDisplayCtlPtr)
displayWnd->GetControlUnknown();
m_pPageViewCtl = (GearVIEWLib::IIGPageViewCtlPtr)
pageviewWnd->GetControlUnknown();
m_pCoreCtl->GetLicense()->SetSolutionName("Accusoft");
m_pCoreCtl->GetResult()->NotificationFlags =
GearCORELib::IG_ERR_OLE_ERROR;
try
{
m_pCoreCtl->AssociateComponent(
m_pFormatsCtl->ComponentInterface );
m_pCoreCtl->AssociateComponent(
m_pDisplayCtl->ComponentInterface );
m_pDlgsCtl->GearFormats = m_pFormatsCtl-
>ComponentInterface;
m_pDlgsCtl->GearCore = m_pCoreCtl-
>ComponentInterface;
m_pDlgsCtl->GearDisplay = m_pDisplayCtl-
>ComponentInterface;
m_pFileDialog = m_pDlgsCtl->CreateFileDlg();
m_pPage = m_pCoreCtl->CreatePage();
m_pPageDisplay = m_pDisplayCtl-
>CreatePageDisplay(m_pPage);
m_pPageViewCtl->PageDisplay = m_pPageDisplay;
}
catch( _com_error err )
{
AfxMessageBox(err.Description());
}
return True; // return True unless you set the focus to
a
control
}
|
|
The code above includes:
| IGCoreCtl Control | License.SetSolutionName | This method of the IGLicense Object sets the solution name for the ImageGear license. |
| Result.NotificationFlag | This method of the IGResult Object tells ImageGear to report errors using the VB On Error mechanism. | |
| AssociateComponent | This method associates ImageGear components with the Core control. | |
| CreatePage | This method creates and returns a new IGPage Object. | |
| Result.isOk | This property of the IGResult Object tells if there are any errors on the error stack. | |
| IGDlgsCtl Control | GearFormats | This property sets the current Formats control used by the Dialog control. |
| GearCore | This property sets the current Core control used by the Dialog control. | |
| IGDisplayCtl Control | CreatePageDisplay | This method creates a new IGPageDisplay Object for the specified IGPage Object. |
| IGPageViewCtl Control | PageDisplay | This property sets the current Page Display object displayed by the Page View control. |
| UpdateView | This method causes the Page View control to redraw itself. |
In the Properties dialog box, click to select the WM_SIZE message, click the drop-down arrow, and then click the <ADD> OnSize option to create the WM_SIZE message handler method.
|
Copy Code
|
|
|---|---|
void CIG_MFCDlg::OnSize(UINT nType, int cx, int cy) { CDialog::OnSize(nType, cx, cy); // TODO: Add your message handler code here if (m_pPageViewCtl != NULL) { HWND hWnd = (HWND) m_pPageViewCtl->hWnd; ::SetWindowPos(hWnd, HWND_TOP, 0, 20, cx, cy-20, SWP_NOZORDER | SWP_NOACTIVATE); } } |
|
| Example Title |
Copy Code
|
|---|---|
void CIG_MFCDlg::OnBnClickedOpen() { try { GearDIALOGSLib::IIGFileDlgPageLoadOptionsPtr dlgLoadOptions; dlgLoadOptions = (GearDIALOGSLib::IIGFileDlgPageLoadOptionsPtr) m_pDlgsCtl->CreateFileDlgOptions( GearDIALOGSLib::IG_FILEDLGOPTIONS_PAGELOADOBJ ); if(m_pFileDialog->Show( (GearDIALOGSLib::IIGFileDlgOptionsPtr) dlgLoadOptions) ) { m_pFormatsCtl->LoadPageFromFile( m_pPage, dlgLoadOptions->FileName, dlgLoadOptions->PageNum); } m_pPageViewCtl->UpdateView(); } catch( _com_error err ) { AfxMessageBox(err.Description()); } } |
|
The code above includes:
| IGDlgsCtl Control | CreateFileDlgOptions | This method creates a file dialog options object that will contain for example the filename and page number |
| IGFileDlg Object | Show | This method shows the file dialog and returns True if the user clicked OK. |
| IGFormatsCtl Control | LoadPageFromFile | This method loads an image into the specified IGPage Object from the specified filename. |
|
Copy Code
|
|
|---|---|
void CIG_MFCDlg::OnBnClickedZoomin() { try { GearDISPLAYLib::IIGDisplayZoomInfoPtr zoominfo; zoominfo = (GearDISPLAYLib::IIGDisplayZoomInfoPtr) m_pPageDisplay->GetZoomInfo( m_pPageViewCtl->hWnd ); zoominfo->HZoom = zoominfo->HZoom * 1.25; zoominfo->VZoom = zoominfo->VZoom * 1.25; zoominfo->Mode = (GearDISPLAYLib::enumIGDsplZoomModes) (GearDISPLAYLib::IG_DSPL_ZOOM_H_FIXED | GearDISPLAYLib::IG_DSPL_ZOOM_V_FIXED); m_pPageDisplay->UpdateZoomFrom(zoominfo); m_pPageViewCtl->UpdateView(); } catch( _com_error err ) { AfxMessageBox(err.Description()); } } |
|
The above code zooms the image to 125 percent, or 5/4ths, of its size (zoom in by 25 percent).
|
Copy Code
|
|
|---|---|
void CIG_MFCDlg::OnBnClickedZoomout() { try { GearDISPLAYLib::IIGDisplayZoomInfoPtr zoominfo; zoominfo = (GearDISPLAYLib::IIGDisplayZoomInfoPtr) m_pPageDisplay->GetZoomInfo( m_pPageViewCtl->hWnd ); zoominfo->HZoom = zoominfo->HZoom * 0.80; zoominfo->VZoom = zoominfo->VZoom * 0.80; zoominfo->Mode = (GearDISPLAYLib::enumIGDsplZoomModes) (GearDISPLAYLib::IG_DSPL_ZOOM_H_FIXED | GearDISPLAYLib::IG_DSPL_ZOOM_V_FIXED); m_pPageDisplay->UpdateZoomFrom(zoominfo); m_pPageViewCtl->UpdateView(); } catch( _com_error err ) { AfxMessageBox(err.Description()); } } |
|
The above code zooms "out", decreasing the image to 4/5ths of its size, thereby canceling the effect of the zoom in above.
The code above includes:
| IGPageDisplay Object | GetZoomInfo | This method creates and returns a new IGDisplayZoomInfo Object that contains zoom mode and values. |
| UpdateZoomFrom | This method sets zoom mode and values from the specified IGDisplayZoomInfo Object. |