Take the following steps to start a project and to add some code that positions, scales, and displays an image in a dialog box.
| 1. | Start a new project as follows: | |
| Run Microsoft Visual Studio. From the main menu select the File -> New, and do the following: | ||
| a. | Make sure Projects tab is selected, if it is already not. | |
| b. | Select MFC AppWizard(exe). | |
| c. | In the Project name edit box, specify Automated. | |
| d. | In the Location edit box, specify the path of the project. | |
| e. | Click the OK button. | |
| 2. | In MFC AppWizard - Step1 select Dialog based as application type then click Next. | |
| 3. | In MFC AppWizard - Step 2 of 4, do the following: | |
| a. | Make sure About box checkbox is selected. | |
| b. | Make sure 3D controls checkbox is selected. | |
| c. | Make sure ActiveX Controls checkbox is selected. | |
| d. | Make sure Automated is specified in the title edit box. | |
| e. | Click the Next button. | |
| 4. | In MFC AppWizard - Step 3 of 4, do the following: | |
| a. | Make sure MFC Standard radio button is selected. | |
| b. | Make sure As a shared DLL radio button is selected. | |
| c. | Click the Next button. | |
| 5. | In MFC AppWizard - Step 4 of 4, click the Finish button. | |
| 6. | Add #include statements to your program so you can access the LEAD C++ Class Library constants and classes: | |
| a. | In the Project Workspace, click the FileView tab. | |
| b. | Expand the Automated files folder to view it's contents. | |
| c. | Expand the Header Files folder to view it's contents. | |
| d. | Double-click the StdAfx.h file to edit it. | |
| e. | Add the following line to the end of the file (keep in mind, you may have to change the path to where the header files reside): | |
#include "..\..\..\..\..\Include\ClassLib\ltWrappr.h"
|
f. |
Add the following define statement after #define VC_EXTRALEAN (keep in mind, you need to change the XX to your current LEADTOOLS version): |
#define LTVXX_CONFIG | 7. | Add the following setting to the project as follows: | |
| a. | From the main menu, select Project -> Settings... | |
| b. | Select the C/C++ tab. | |
| c. | Add the IGNORE_CLASSLIB_WIA flag to the end of text in Preprocessor definitions: edit box. | |
| 8. | Add a Button control to the main window as follows: | |
| a. | In the Project Workspace, click the ResourceView tab. | |
| b. | Expand the Automated resources folder to view it's contents. | |
| c. | Expand the Dialog folder to view it's contents. | |
| d. | Double-click IDD_AUTOMATED_DIALOG to design the form. | |
| e. | Select the TODO... text control; then press the Delete key to delete it. | |
| f. | From Controls context menu, click the Button control icon; then size and position the control as you want it to appear at run time. | |
| 9. | Right-click the newly created button and select Properties. In the General tab specify the following: | |
| ID | Caption | |
| IDC_BITMAPWND | Bitmap Window | |
| 10. | Change the command button properties as follows: | |
| a. | From General tab, set Visible property to FALSE. | |
| b. | From Style tab, set Owner draw property to TRUE. | |
| c. | From Style tab, set Flat property to TRUE. | |
| d. | Save the changes. | |
| 11. | Press Ctrl-F4 to close all windows back to the Project Workspace. | |
| 12. | Add a new class to the project as follows -- this class will be inherited from the LBitmapWindow class: | |
| a. | From the main menu, select Insert -> New Class... | |
| b. | In the Class Type combo box, select Generic class | |
| c. | In the Class name edit box, specify CBitmapWindow | |
| d. | Click on "Derived From" and type LBitmapWindow | |
| e. | Click on "As" and specify public | |
| f. | Click the OK button. | |
| 13. | Add #include statements to your program so you can access the LEAD C++ Class Library constants and classes: | |
| a. | In the Project Workspace, click the FileView tab. | |
| b. | Expand the Automated files folder to view it's contents. | |
| c. | Expand the Header Files folder to view it's contents. | |
| d. | Double-click the AutomatedDlg.h file to edit it. | |
| e. | Add the following lines to the beginning of the file, after pragma once. | |
#include "BitmapWindow.h"#define MAKE_IMAGE_PATH(pFileName) TEXT("C:\\Users\\Public\\Documents\\LEADTOOLS Images\\")pFileName
14. |
Add the following Member Variables to the CBitmapWindow class right after public section: |
LRESULT MsgProcCallBack(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam);L_VOID SetContainer(LAnnContainer * pContainer);L_VOID SetAutomation(LAnnAutomation * pAutomation);L_VOID SetToolBar(LAnnToolBar * pToolBar);L_VOID OnDraw(HDC hdc, RECT & Rect);private:LAnnContainer* m_pContainer;LAnnAutomation *m_pAutomation;LAnnToolBar *m_pToolBar;
| 15. | Add implementation to the member method in CBitmapWindow class: | |
| a. | In the Project Workspace, click the FileView tab. | |
| b. | Expand the Automated files folder to view it's contents. | |
| c. | Expand the Source Files folder to view it's contents. | |
| d. | Double-click the BitmapWindow.cpp file to edit it. | |
| e. | Add the following two lines in the CBitmapWindow::CBitmapWindow() constructor: | |
m_pContainer = NULL;m_pAutomation = NULL;
|
f. |
Add the following code after the CBitmapWindow::~CBitmapWindow() destructor: |
L_VOID CBitmapWindow::SetContainer(LAnnContainer * pContainer){m_pContainer = pContainer;}L_VOID CBitmapWindow::SetAutomation(LAnnAutomation * pAutomation){m_pAutomation = pAutomation;}L_VOID CBitmapWindow::SetToolBar(LAnnToolBar * pToolBar){m_pToolBar = pToolBar;}L_VOID CBitmapWindow::OnDraw (HDC hdc, RECT & Rect){LBitmapWindow::OnDraw(hdc, Rect);L_INT nRet;if (m_pContainer != NULL){nRet = m_pContainer->Draw(hdc, &Rect);}}LRESULT CBitmapWindow::MsgProcCallBack(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam){switch (uMsg){case WM_LTANNEVENT:if(m_pAutomation != NULL){int uChecked = m_pToolBar->GetToolChecked() ;m_pAutomation->SetTool(uChecked);}break;};return LBitmapWindow::MsgProcCallBack(hWnd,uMsg,wParam,lParam);}
| 16. | Create a new file called Imports.cpp and place it in Source Files folder in your project. | |
| a. | From the main menu, select File -> New. | |
| b. | Select C++ Source File in the Files tab. | |
| c. | Make sure that Add to project: checkbox is checked, and type Imports.cpp in the File name: edit box, then click OK. | |
#include "StdAfx.h"#if defined(LEADTOOLS_V18_OR_LATER)#if defined(FOR_UNICODE)#if defined(WIN64)#pragma comment(lib, "..\\..\\..\\..\\Lib\\CDLLVC10\\x64\\Ltwvc_x.lib")#else#if _MSC_VER <=1200#pragma comment(lib, "..\\..\\..\\..\\Lib\\CDLLVC10\\Win32\\Ltwvc2_u.lib")#else#pragma comment(lib, "..\\..\\..\\..\\Lib\\CDLLVC10\\Win32\\Ltwvc_u.lib")#endif#endif // #if defined(WIN64)#else#if defined(WIN64)#pragma comment(lib, "..\\..\\..\\..\\Lib\\CDLLVC10\\x64\\Ltwvc_ax.lib")#else#pragma comment(lib, "..\\..\\..\\..\\Lib\\CDLLVC10\\Win32\\Ltwvc_a.lib")#endif // #if defined(WIN64)#endif // #if defined(FOR_UNICODE)#else#if defined(FOR_UNICODE)#if defined(WIN64)#pragma comment(lib, "..\\..\\..\\..\\Lib\\"L_PLATFORM_DESIGNATOR"\\x64\\Ltwvc_x.lib")#else#if _MSC_VER <=1200#pragma comment(lib, "..\\..\\..\\..\\Lib\\"L_PLATFORM_DESIGNATOR"\\Win32\\Ltwvc2_u.lib")#else#pragma comment(lib, "..\\..\\..\\..\\Lib\\"L_PLATFORM_DESIGNATOR"\\Win32\\Ltwvc_u.lib")#endif#endif // #if defined(WIN64)#else#if defined(WIN64)#pragma comment(lib, "..\\..\\..\\..\\Lib\\"L_PLATFORM_DESIGNATOR"\\x64\\Ltwvc_ax.lib")#else#pragma comment(lib, "..\\..\\..\\..\\Lib\\"L_PLATFORM_DESIGNATOR"\\Win32\\Ltwvc_a.lib")#endif // #if defined(WIN64)#endif // #if defined(FOR_UNICODE)#endif // #if defined(LEADTOOLS_V18_OR_LATER)
17. |
Add the following Member Variables to CAutomatedDlg Class in the header file AutomatedDlg.h: |
LAnnContainer m_LeadAContainer;LAnnToolBar m_LeadAToolBar;HANNOBJECT hAutoObject;LAnnAutomation m_LeadAAutomation;CBitmapWindow m_LBitmap;
| 18. | Go to the OnInitDialog() function as follows: | |
| a. | In the Project Workspace, click the ClassView tab. | |
| b. | Expand the Automated classes folder to view it's contents. | |
| c. | Expand the CAutomatedDlg class to view it's contents. | |
| d. | Double-click the OnInitDialog() function to edit it. | |
| 19. |
Edit the OnInitDialog() function to add the following code after the line that says //TODO: Add extra initialization here:
|
|
LSettings::LoadLibraries(LT_ALL_LEADLIB);L_TCHAR * pszLicenseFile = (L_TCHAR *)L"Replace this with the path to the LEADTOOLS license file";L_TCHAR * pszDeveloperKey = (L_TCHAR *)L"Replace this with your developer key";LSettings::SetLicenseFile(pszLicenseFile, pszDeveloperKey);CWnd* pWnd = GetDlgItem(IDC_BITMAPWND);// m_LBitmap.SetWndHandle(hWnd);*/m_LBitmap.EnableAutoScroll(FALSE);CRect rcRect;// Get the rectangle of the buttonpWnd->GetWindowRect(&rcRect);ScreenToClient(&rcRect);// Create the LBitmapWindow control, make it visible, and make it center the imageHWND hWnd = m_LBitmap.CreateWnd(GetSafeHwnd(), 901, WS_VISIBLE|L_BS_CENTER|WS_HSCROLL, rcRect.TopLeft().x, rcRect.TopLeft().y, rcRect.BottomRight().x, rcRect.BottomRight().y);int nRet = 0;RECT rcClientArea;ANNRECT rcContainerRect;nRet = m_LBitmap.Load(MAKE_IMAGE_PATH(TEXT("image1.cmp")));if(nRet == SUCCESS){::GetClientRect(hWnd,&rcClientArea);m_LBitmap.SetDstRect(&rcClientArea);rcContainerRect.left = 0;rcContainerRect.top = 0;rcContainerRect.right = rcClientArea.right-rcClientArea.left;rcContainerRect.bottom = rcClientArea.bottom-rcClientArea.top;m_LeadAContainer.Create(hWnd,&rcContainerRect,TRUE);m_LeadAContainer.SetOffsetX((L_DOUBLE) 0, 0);m_LeadAContainer.SetOffsetY((L_DOUBLE) 0, 0);m_LeadAAutomation.Create();/* Assign the automation object to the container */m_LeadAAutomation.SetAutoContainer(&m_LeadAContainer);/* Enable the automation object */m_LeadAAutomation.SetActiveState(ANNACTIVE_ENABLED);/* Set design mode, which allows creation of annotations */m_LeadAContainer.SetUserMode();/* Set the dots per inch for interpreting physical measurements */m_LeadAContainer.SetDpiX(600, 0);m_LeadAContainer.SetDpiY(600, 0);/* Set the number of possible undo actions */m_LeadAAutomation.SetUndoDepth(3);/* Set the line tool as the initial annotation tool */m_LeadAToolBar.Create(this->GetSafeHwnd(), NULL, ANNTOOLALIGN_RIGHT | ANNTOOLALIGN_TOP, TRUE);m_LBitmap.SetContainer(&m_LeadAContainer);m_LBitmap.SetAutomation(&m_LeadAAutomation);m_LBitmap.SetToolBar(&m_LeadAToolBar);}
20. |
Go to AutomatedDlg.h file then add the following function declaration right before DECLARE_MESSAGE_MAP(): |
afx_msg void OnClose(); 21. |
Go to AutomatedDlg.cpp file then add the following line between the BEGIN_MESSAGE_MAP and END_MESSAGE_MAP: |
ON_WM_CLOSE() 22. |
Add the following function to the end of AutomatedDlg.cpp file: |
void CAutomatedDlg::OnClose(){if(m_LBitmap.IsAllocated()){m_LBitmap.Free();m_LBitmap.SetContainer(NULL);m_LBitmap.SetAutomation(NULL);m_LBitmap.SetToolBar(NULL);m_LeadAAutomation.SetActiveState(ANNACTIVE_DISABLED);m_LeadAAutomation.Destroy ();m_LeadAContainer.Destroy();m_LeadAToolBar.Destroy();}CDialog::OnClose();}
23. |
From the main menu, select Build -> Build Automated.exe to build the project. |
24. |
From the main menu, select Build -> Execute Automated.exe to run the project. |
Raster .NET | C API | C++ Class Library | JavaScript HTML5
Document .NET | C API | C++ Class Library | JavaScript HTML5
Medical .NET | C API | C++ Class Library | JavaScript HTML5
Medical Web Viewer .NET
