Attaches a vector handle to a window.
#include "ltvkrn.h"
L_LVKRN_API L_INT L_VecAttachToWindow(hWnd, pVector, dwFlags)
Handle of the window to which the vector handle will be attached.
Pointer to a vector handle that will be attached to the window specified in hWnd.
Flags that modify the vector engine. Possible values are:
Value | Meaning |
---|---|
VECTOR_ENGINE_DOUBLEBUFFER | Use double buffering for flicker-free screen updates. |
Value | Meaning |
---|---|
SUCCESS | The function was successful. |
< 1 | An error occurred. Refer to Return Codes. |
This function will attach a vector handle to a window handle. All subsequent changes to the vector image will be reflected on the window.
Note: When you copy one vector to another using L_VecCopy, and the source vector is attached to a window, the destination vector will NOT be attached to the same window automatically.
You can draw on the surface of any window using L_VecPaint, but to use double buffering, you must attach the vector handle to a window.
This example will assign a window handle to a vector handle.
/* This is the window procedure of the attached window. */
LRESULT WINAPI WndProc(HWND hwnd,
UINT message,
WPARAM wParam,
LPARAM lParam)
{
VECTORHANDLE Vector; /* Vector handle. */
L_INT nRet; /* return value. */
PAINTSTRUCT PaintStruct;
HDC hdc;
RECT rect;
switch(message)
{
case WM_CREATE:
/* Load an image into the vector handle. */
nRet = L_VecLoadFile( MAKE_IMAGE_PATH(TEXT("random.dxf")), &Vector, NULL, NULL );
if( nRet != SUCCESS )
{
MessageBox(hwnd, TEXT("Error loading the file."), TEXT("Error"), MB_OK);
return -1;
}
/* Attach the vector image with this window using the GDI engine and double buffering. */
nRet = L_VecAttachToWindow( hwnd, &Vector, VECTOR_ENGINE_DOUBLEBUFFER );
if( nRet != SUCCESS )
{
MessageBox(hwnd, TEXT("Error assigning vector image to window."), TEXT("Error"), MB_OK);
L_VecFree( &Vector );
return -1;
}
return 0;
case WM_SIZE:
/* Set new view port */
GetClientRect( hwnd, &rect );
L_VecSetViewport( &Vector, &rect );
return 0;
case WM_PAINT:
hdc = BeginPaint(hwnd, &PaintStruct);
/* Paint the vector image */
L_VecPaint( hdc, &Vector, TRUE );
EndPaint(hwnd, &PaintStruct);
return 0;
case WM_DESTROY:
/* Free the vector */
L_VecFree( &Vector );
PostQuitMessage( 0 );
return 0;
default:
return DefWindowProc( hwnd, message, wParam, lParam );
}
}