#include "ltwrappr.h"
virtual L_INT LAnnAutomation::SetAutoContainer(hContainer)
virtual L_INT LAnnAutomation::SetAutoContainer(pLContainer)
HANNOBJECT hContainer; |
handle to the container |
LAnnContainer * pLContainer; |
pointer to a container object |
Specifies the container for the Automation object. The automation object is used to implement default properties.
Parameter |
Description |
hContainer |
Handle to the container. |
pLContainer |
Pointer to a container object. |
SUCCESS |
The function was successful. |
< 1 |
An error occurred. Refer to Return Codes. |
This function associates the automation object with a root container without inserting the object into the container.
Required DLLs and Libraries
LTANN For a listing of the exact DLLs and Libraries needed, based on the toolkit version, refer to Files To Be Included With Your Application. |
Win32, x64.
#define MAKE_IMAGE_PATH(pFileName) TEXT("C:\\Users\\Public\\Documents\\LEADTOOLS Images\\")pFileNameclass MyAnnClass{public :LAnnAutomation m_MyAutomation; //Automation objectLAnnContainer m_MyContainer; //Container objectLAnnToolBar m_MyToolbar; //ToolbarHWND m_hWnd; //Handle to this windowLBitmapBase m_MyBitmap; //Bitmap image to draw on/*Register a window class and create our main window*//*Note that your window procedure must be static(CALLBACK functions must be static or friend). I use extra bytes per windowto hold the current object's pointer (this)*/BOOL CreateWnd(HINSTANCE hInst, LPRECT pRect){WNDCLASS wc;wc.style = CS_HREDRAW | CS_VREDRAW;wc.lpfnWndProc = MyWndProc; //static callbackwc.cbClsExtra = 0;wc.cbWndExtra = sizeof(MyAnnClass *); //In order to save this pointerwc.hInstance = hInst;wc.hIcon = LoadIcon(NULL,IDI_APPLICATION);wc.hCursor = LoadCursor(NULL, IDC_ARROW);wc.hbrBackground = (HBRUSH)GetStockObject(LTGRAY_BRUSH);wc.lpszMenuName = NULL;wc.lpszClassName = TEXT("MyAnnClass");if (RegisterClass(&wc)==0)return FALSE;m_hWnd= CreateWindow(TEXT("MyAnnClass"), NULL,WS_OVERLAPPEDWINDOW|WS_VISIBLE,pRect->left,pRect->top,pRect->right,pRect->bottom,NULL,(HMENU)NULL,hInst,NULL);//Attach the pointer to the windowif (m_hWnd)L_SETWINDOWLONGPTR(m_hWnd, 0, this);return (m_hWnd!=NULL);}MyAnnClass(HINSTANCE hInst, L_TCHAR * pszFileName){if (m_MyBitmap.Load(pszFileName)==SUCCESS){ANNRECT rcContainer ={0, 0, m_MyBitmap.GetWidth(), m_MyBitmap.GetHeight()};RECT rcClient ={0,0,640,480};POINT pt = {0,0};CreateWnd(hInst, &rcClient);m_MyContainer.Create(m_hWnd, &rcContainer, TRUE);m_MyContainer.SetScalarX((L_DOUBLE)rcClient.right/m_MyBitmap.GetWidth(),0);m_MyContainer.SetScalarY((L_DOUBLE)rcClient.bottom/m_MyBitmap.GetHeight(),0);m_MyContainer.SetOffsetX(0);m_MyContainer.SetOffsetY(0);m_MyContainer.SetUserMode(ANNUSER_DESIGN);//Assign the automation object to the containerm_MyAutomation.SetAutoContainer(&m_MyContainer);m_MyAutomation.SetActiveState(ANNACTIVE_ENABLED);m_MyAutomation.SetDpiX(600);m_MyAutomation.SetDpiY(600);m_MyAutomation.SetUndoDepth(3);m_MyToolbar.Create(m_hWnd, &pt, ANNTOOLALIGN_LEFT | ANNTOOLALIGN_TOP, TRUE);}}virtual ~MyAnnClass(){m_MyAutomation.SetActiveState(ANNACTIVE_DISABLED);m_MyAutomation.Destroy();m_MyContainer.Destroy();m_MyToolbar.Destroy();}static LRESULT CALLBACK MyWndProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam){MyAnnClass * This = (MyAnnClass *) L_GETWINDOWLONGPTR(hWnd, 0);if (This==NULL)return DefWindowProc(hWnd, uMsg, wParam, lParam);switch(uMsg){case WM_PAINT:{PAINTSTRUCT ps;BeginPaint(hWnd,&ps);if (This->m_MyBitmap.IsAllocated()){This->m_MyBitmap.SetClipDstRect(&ps.rcPaint);This->m_MyBitmap.CreatePaintPalette(ps.hdc);This->m_MyBitmap.Paint()->SetDC(ps.hdc);This->m_MyBitmap.Paint()->PaintDC();}if (This->m_MyContainer.IsValid())This->m_MyContainer.Draw(ps.hdc, &ps.rcPaint);EndPaint(hWnd, &ps);}break;case WM_SIZE:{if(This->m_MyContainer.IsCreated()){RECT rcDst;This->m_MyBitmap.GetRects(0,0,&rcDst,0);rcDst.right-=rcDst.left;rcDst.bottom-=rcDst.top;L_DOUBLE sx = (L_DOUBLE)((L_DOUBLE)(rcDst.right)/(L_DOUBLE)This->m_MyBitmap.GetWidth());L_DOUBLE sy = (L_DOUBLE)((L_DOUBLE)(rcDst.bottom)/(L_DOUBLE)This->m_MyBitmap.GetHeight());This->m_MyContainer.SetScalarX(sx,ANNFLAG_NOINVALIDATE);This->m_MyContainer.SetScalarY(sy,ANNFLAG_NOINVALIDATE);This->m_MyContainer.SetOffsetX(rcDst.left,ANNFLAG_NOINVALIDATE);This->m_MyContainer.SetOffsetY(rcDst.top,ANNFLAG_NOINVALIDATE);}}break;case WM_LTANNEVENT:if (wParam==LTANNEVENT_TOOLCHECKED)This->m_MyAutomation.SetTool((L_UINT)lParam);break;default:return DefWindowProc(hWnd, uMsg,wParam,lParam);}return FALSE;}};L_INT SetAutoContainerExample(HINSTANCE hInst){LBase::LoadLibraries(LT_ALL_LEADLIB);//make sure all libraries are loadedLBase::EnableAutoErrorDisplay(TRUE);MyAnnClass MyAnnotationObject(hInst,MAKE_IMAGE_PATH(TEXT("image1.cmp")));//loop till the user cancels the operationMSG msg;for (;;){while (PeekMessage(&msg, NULL, 0,0, PM_REMOVE)){switch (msg.message){case WM_KEYDOWN:if (msg.wParam != VK_ESCAPE)break;case WM_QUIT:PostQuitMessage(0);return 0;}TranslateMessage(&msg);DispatchMessage(&msg);}}}
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
