Low-Level DigitalPaint: Using the DigitalPaint Common Dialogs
Start with the project you created in Low-Level DigitalPaint: Processing the Window Activation Messages.
1. |
Add the following popup menu to the main menu you created in Low-Level DigitalPaint: Initializing and Freeing a Paint Handle |
|
&Dialog Test |
|
|
&Shape … |
with ID = IDM_DIALOGTEST_SHAPE |
2. |
In stdafx.h add the following headers: (keep in mind, you may have to change the path to where the header files reside): |
#include "C:\Program Files\LEAD Technologies\LEADTOOLS 15\Include\Ltpdg.h"
3. |
Add the following function before the OnOpen function definition: |
L_VOID OnShapeDlg ( HWND hWnd, pPAINTHANDLE pPaint )
{
PAINTSHAPE shape ;
PAINTDLGSHAPEINFO ShapeDlgInfo ;
L_INT nRet ;
RECT rcRect;
HDC hdcTest;
hdcTest = GetDC (hWnd);
L_PntGetProperty ( pPaint, PAINT_GROUP_SHAPE, &shape ) ;
ShapeDlgInfo.dwFlags = PAINT_DLG_SHAPE_SHOWALL ;
ShapeDlgInfo.pszTitle = TEXT("Shape
Properties");
ShapeDlgInfo.nBackgroundStyle = shape.nBackgroundStyle ;
ShapeDlgInfo.crBackgroundColor = shape.crBackgroundColor ;
ShapeDlgInfo.ppszBackgroundTileBitmap = NULL ;
ShapeDlgInfo.uBackgroundTileBitmapCount = 0 ;
ShapeDlgInfo.nActiveBackgroundTileBitmapItem = -1 ;
ShapeDlgInfo.nBorderStyle = shape.nBorderStyle ;
ShapeDlgInfo.nBorderBrushStyle = shape.nBorderBrushStyle ;
ShapeDlgInfo.crBorderColor = shape.crBorderColor ;
ShapeDlgInfo.ppszBorderTileBitmap = NULL ;
ShapeDlgInfo.uBorderTileBitmapCount = 0 ;
ShapeDlgInfo.nActiveBorderTileBitmapItem = -1 ;
ShapeDlgInfo.nBorderWidth = shape.nBorderWidth ;
ShapeDlgInfo.nBorderEndCap = shape.nBorderEndCap ;
ShapeDlgInfo.nGradientStyle = shape.nGradientStyle ;
ShapeDlgInfo.crGradientStartColor = shape.crGradientStartColor ;
ShapeDlgInfo.crGradientEndColor = shape.crGradientEndColor ;
ShapeDlgInfo.uGradientSteps = shape.uGradientSteps ;
ShapeDlgInfo.nRoundRectEllipseWidth = shape.nRoundRectEllipseWidth ;
ShapeDlgInfo.nRoundRectEllipseHeight = shape.nRoundRectEllipseHeight ;
ShapeDlgInfo.nOpacity = shape.nOpacity ;
ShapeDlgInfo.ppszPaperTexture = NULL ;
ShapeDlgInfo.uPaperTextureCount = 0 ;
ShapeDlgInfo.nActivePaperTextureItem = -1 ;
nRet = L_PntDlgShape ( hWnd, &ShapeDlgInfo ) ;
if ( SUCCESS == nRet )
{
shape.nSize = sizeof ( PAINTSHAPE ) ;
shape.dwMask = PSF_ALL ;
shape.nBackgroundStyle = ShapeDlgInfo.nBackgroundStyle ;
shape.crBackgroundColor = ShapeDlgInfo.crBackgroundColor ;
shape.pBackgroundTileBitmap = NULL ;
shape.nBorderStyle = ShapeDlgInfo.nBorderStyle ;
shape.nBorderBrushStyle = ShapeDlgInfo.nBorderBrushStyle ;
shape.crBorderColor = ShapeDlgInfo.crBorderColor ;
shape.hBorderTileBitmap = NULL ;
shape.nBorderWidth = ShapeDlgInfo.nBorderWidth ;
shape.nBorderEndCap = ShapeDlgInfo.nBorderEndCap ;
shape.nGradientStyle = ShapeDlgInfo.nGradientStyle ;
shape.crGradientStartColor = ShapeDlgInfo.crGradientStartColor ;
shape.crGradientEndColor = ShapeDlgInfo.crGradientEndColor ;
shape.uGradientSteps = ShapeDlgInfo.uGradientSteps ;
shape.nRoundRectEllipseWidth = ShapeDlgInfo.nRoundRectEllipseWidth ;
shape.nRoundRectEllipseHeight = ShapeDlgInfo.nRoundRectEllipseHeight ;
shape.nOpacity = ShapeDlgInfo.nOpacity ;
shape.pTexture = NULL ;
L_PntSetProperty ( pPaint, PAINT_GROUP_SHAPE, &shape ) ;
// now draw something to see the results of the dialog settings
SetRect(&rcRect, 10, 10, 100, 100);
L_PntDrawShapeRectangle(pPaint, hdcTest, &rcRect);
}
}
4. |
Add the following line after the "return 0L ;" of the "case IDM_PAINTTEST_TEXT:" statement: |
case IDM_DIALOGTEST_SHAPE:
OnShapeDlg ( hWnd, pPaint ) ;
return 0L ;
5. |
Add the following lines in Imports.cpp
#if defined(FOR_WIN64) … #pragma comment(lib, "..\\..\\..\\..\\..\\..\\Lib\\API\\x64\\ltpdg_x.lib") … #elif defined(FOR_WIN32) … #pragma comment(lib, "..\\..\\..\\..\\..\\..\\Lib\\API\\Win32\\ltpdg_u.lib") … #endif
|
6. |
Compile and run the project by selecting Build->Execute tutorial.exe from the menu. |
7. |
Go to the "Dialog Test" menu and select the item "Shape…" to start playing with the shape dialog. |