# include“l_bitmap.h”
L_LTDIS_APIL_INTL_SetMagGlassOwnerDrawCallback (hWnd, pfnCallback pUserData)
设置一个回调函数,它可以让用户提供自定义的放大镜呈现。
的处理窗口的放大镜。
回调函数被称为每次放大镜需要重新粉刷。
回调函数必须遵守所描述的函数原型MAGGLASSOWNERDRAWCALLBACK函数。
空指针,您可以使用它通过一个或多个回调函数需要额外的参数。
要使用该功能,赋值给一个变量或创建一个结构,其中包含你需要的尽可能多的领域。然后,在这个参数,通过变量的地址或结构,铸造L_VOID *。回调函数,接收地址的pUserData参数,可以把它适当的数据类型的指针来访问变量或结构。
如果不需要额外的参数,该参数可以传递NULL。
| 价值 | 意义 |
|---|---|
| 成功 | 函数是成功的。 |
| < 1 | 一个错误发生。指返回代码。 |
如果设置了一个用户定义的回调函数通过调用L_SetMagGlassOwnerDrawCallback,之后L_StartMagGlass被称为直流和放大镜油漆本身,但在放大镜显示在屏幕上,用户可以改变什么是直流的,通过用户定义的回调函数。这允许用户提供自定义渲染的放大镜。例如,该功能允许您呈现放大的注释,这可能是覆盖当前显示图像,或者只是简单地覆盖目前在放大镜显示区域。
必需的dll和库
x64 Win32。
请注意,这不是一个完整的示例!
这是一段注释的演示程序。
完整的代码,参考ANNOTATE.C。
/ * <结构体> * /# ifdef LET_DEFINE类型定义结构体_MAGCHILDDATA{intcxClient;客户区* / / *宽度intcyClient;/ *客户区* /的高度intnHScrollPos;/ * x滚动位置* /intnVScrollPos;* / / * y滚动位置intnHScrollMax;* / / *最大x滚动位置intnVScrollMax;/ *最大y滚动位置* /intnHScrollStep;/ * x滚动的一步价值* /intnVScrollStep;/ * y滚动的一步价值* /BOOL bThumbTrack;BOOL fFitImage;intnZoom;矩形rcView;矩形rcClient;矩形rcWindow;BITMAPHANDLE位图;HPALETTE HPALETTE;HANNOBJECT hContainer;HANNOBJECT hAutomation;BOOL fInScroll;BOOL fShowLock;HANNOBJECT hRect;HANNOBJECT hEllipse;BOOL fCapture;BOOL fLeftButtonDown;点pt0;BOOL bMagGlass;L_INT nMagWidth;L_INT nMagHeight;L_INT nMagZoom;L_BOOL bDoubleBuffer;L_HANDLE hDoubleBuffer;}MAGCHILDDATA,远* LPMAGCHILDDATA;# endif/ * < /结构体> * /L_INT EXT_CALLBACK MagGlassOwnerDrawCallback (L_HWND hWnd,HDC hMemDC,L_INT32 nXPos,L_INT32 nYPos,LPRECT pMagGlass,L_VOID * pUserData){UNREFERENCED_PARAMETER (hWnd);LPMAGCHILDDATA pData = (LPMAGCHILDDATA) pUserData;L_DOUBLE OffsetXOld OffsetYOld;L_DOUBLE OffsetX OffsetY;L_DOUBLE ScalarXOld ScalarYOld;L_DOUBLE ScalarX ScalarY;L_DOUBLE MagCenterX MagCenterY;L_DOUBLE BitmapX BitmapY;L_DOUBLE MagDestX MagDestY;矩形钢筋混凝土;L_AnnPushFixedState (pData - > hContainer ANNFLAG_RECURSE | ANNFLAG_NOINVALIDATE);L_AnnGetOffsetX (pData - > hContainer &OffsetXOld);L_AnnGetOffsetY (pData - > hContainer &OffsetYOld);L_AnnGetScalarX (pData - > hContainer &ScalarXOld);L_AnnGetScalarY (pData - > hContainer &ScalarYOld);MagCenterX = nXPos;MagCenterY = nYPos;BitmapX = (L_DOUBLE) (MagCenterX-pData - > rcView.left) / ((L_DOUBLE) (pData - > rcView。对- pData - > rcView.left) / (L_DOUBLE) BITMAPWIDTH (&pData - >位图));BitmapY = (L_DOUBLE) (MagCenterY-pData - > rcView.top) / ((L_DOUBLE) (pData - > rcView。底- pData - > rcView.top) / (L_DOUBLE) BITMAPHEIGHT (&pData - >位图));MagDestX = BitmapX * ((L_DOUBLE) (pData - > rcView。对- pData - > rcView.left) / (L_DOUBLE) BITMAPWIDTH (&pData - >位图))* ((L_DOUBLE) pData - > nMagZoom f / 100.0);MagDestY = BitmapY * ((L_DOUBLE) (pData - > rcView。底- pData - > rcView.top) / (L_DOUBLE) BITMAPHEIGHT (&pData - >位图))* ((L_DOUBLE) pData - > nMagZoom f / 100.0);OffsetX = ((L_DOUBLE) (pMagGlass - >右- pMagGlass - >左)/ 2.0 f) - MagDestX;OffsetY = ((L_DOUBLE) (pMagGlass - >下- pMagGlass - >上)/ 2.0 f) - MagDestY;ScalarX = (L_DOUBLE) (pData - > rcView。对- pData - > rcView.left) / (L_DOUBLE) BITMAPWIDTH (&pData - >位图)* ((L_DOUBLE) pData - > nMagZoom f / 100.0);ScalarY = (L_DOUBLE) (pData - > rcView。底- pData - > rcView.top) / (L_DOUBLE) BITMAPHEIGHT (&pData - >位图)* ((L_DOUBLE) pData - > nMagZoom f / 100.0);L_AnnSetOffsetX (pData - > hContainer、OffsetX ANNFLAG_NOINVALIDATE);L_AnnSetOffsetY (pData - > hContainer、OffsetY ANNFLAG_NOINVALIDATE);L_AnnSetScalarX (pData - > hContainer、ScalarX ANNFLAG_NOINVALIDATE);L_AnnSetScalarY (pData - > hContainer、ScalarY ANNFLAG_NOINVALIDATE);SetRect (rc, 0, 0, pData - > nMagWidth, pData - > nMagHeight);L_AnnDraw (hMemDC、rc pData - > hContainer);L_AnnSetOffsetX (pData - > hContainer、OffsetXOld ANNFLAG_NOINVALIDATE);L_AnnSetOffsetY (pData - > hContainer、OffsetYOld ANNFLAG_NOINVALIDATE);L_AnnSetScalarX (pData - > hContainer、ScalarXOld ANNFLAG_NOINVALIDATE);L_AnnSetScalarY (pData - > hContainer、ScalarYOld ANNFLAG_NOINVALIDATE);L_AnnPopFixedState (pData - > hContainer ANNFLAG_RECURSE | ANNFLAG_NOINVALIDATE);返回成功;}L_INT SetMagGlassOwnerDrawCallbackExample (L_HWND hwnd, LPMAGCHILDDATA pData){L_INT nRet;MAGGLASSOPTIONS选项;nRet = L_AnnSetActiveState (pData - > hAutomation ANNACTIVE_DISABLED);如果(nRet ! =成功)返回nRet;pData - > nMagWidth = 200;pData - > nMagHeight = 200;pData - > nMagZoom = 200;选项。uStructSize =运算符(MAGGLASSOPTIONS);选项。nWidth = pData - > nMagWidth;选项。nHeight = pData - > nMagHeight;选项。nZoom = pData - > nMagZoom;选项。clrPen = RGB (0, 0, 0);选项。hMagCursor =零;选项。clrBack = RGB (128128128);选项。bEllipse = FALSE;选项。nBorderSize = 1;选项。b3D = FALSE;选项。uPaintFlags = 0;选项。pMask =零;选项。uMaskCount = 0;选项。uMagGlassFlags = CROSSHAIR_FINE;选项。nCrosshair = 1;选项。bIgnoreRgn = TRUE;选项。bCenter = TRUE;nRet = L_StartMagGlass (hwnd,&pData - >位图,&pData - > rcView,选项,空,pData);如果(nRet ! =成功)返回nRet;nRet = L_SetMagGlassOwnerDrawCallback (hwnd, MagGlassOwnerDrawCallback pData);如果(nRet ! =成功)返回nRet;pData - > bMagGlass = TRUE;返回成功;}
帮助收藏
光栅net|C API|c++类库|HTML5 JavaScript
文档net|C API|c++类库|HTML5 JavaScript
医疗net|C API|c++类库|HTML5 JavaScript
医疗Web查看器net
188宝金博怎么下载
支持的平台上
net, Java, Android和iOS / macOS组件
C / c++类库的API
HTML5 JavaScript库
你的邮件已经发送到支持!有人应该联系!如果你的问题是紧急请回到聊天。
聊天时间:
周一——周五,上午6点等
谢谢你的反馈!
请填写表单重新开始一个新的聊天。
所有代理目前离线。
聊天时间:
周一-周五
早上8:30 - 6点
联系我们请填写这张表格,我们将通过电子邮件联系你。
