L_VecAttachToWindow

#include "lvkrn.h"

L_INT EXT_FUNCTION L_VecAttachToWindow(hWnd, pVector, nEngine, dwFlags)

HWND hWnd;

/* window handle */

pVECTORHANDLE pVector;

/* pointer to a vector handle */

L_INT nEngine;

/* vector engine */

L_UINT32 dwFlags;

/* flags */

Attaches a vector handle to a window.

Parameter

Description

hWnd

Handle of the window to which the vector handle will be attached.

pVector

Pointer to a vector handle that will be attached to the window specified in hWnd.

nEngine

The vector engine to associate with the specified vector handle. Possible values are:

 

Value

Meaning

 

VECTOR_ENGINE_GDI

Use GDI rendering. (No lights and shading).

 

VECTOR_ENGINE_OPENGL

Use OpenGL rendering. (Viewing only, drawings not editable).

dwFlags

Flags that modify the vector engine. Possible values are:

 

Value

Meaning

 

VECTOR_ENGINE_DOUBLEBUFFER

Use double buffering for flicker-free screen updates.

Returns

SUCCESS

The function was successful.

< 1

An error occurred. Refer to Return Codes.

Comments

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.

After the vector engine is successfully attached, all subsequent calls to the vector functions with this vector handle will use this engine for rendering.

Note:

OpenGL and DirectX engines will not work in a palletized screen mode (256-colors or less). This function will fail, and return ERROR_INV_PARAMETER if an attempt is made to use either of these engines in 256-color mode or less.

Required DLLs and Libraries

LVKRN

For a listing of the exact DLLs and Libraries needed, based on the toolkit version, refer to Files To Be Included With Your Application.

See Also

Functions:

L_VecSetEngine, L_VecPaint, L_VecCopy

Example

/* 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( TEXT("TEMP.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_GDI, 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 );
   }
}