With The Case Of  Release The Power OF  Visual C++ !   Home Products | Purchase Support | Downloads  
View in English
View in Japanese
View in
View in Franšais
View in Italiano
View in 中文(繁體)
Download Evaluation
Pricing & Purchase?
E-XD++Visual C++/ MFC Products
Features Tour 
Electronic Form Solution
Visualization & HMI Solution
Power system HMI Solution
CAD Drawing and Printing Solution

Bar code labeling Solution
Workflow Solution

Coal industry HMI Solution
Instrumentation Gauge Solution

Report Printing Solution
Graphical modeling Solution
GIS mapping solution

Visio graphics solution
Industrial control SCADA &HMI Solution
BPM business process Solution

Industrial monitoring Solution
Flowchart and diagramming Solution
Organization Diagram Solution

Graphic editor Source Code
UML drawing editor Source Code
Map Diagramming Solution

Architectural Graphic Drawing Solution
Request Evaluation
VX++ Cross-Platform C/C++
ActiveX COM Products
Technical Support
  General Q & A
Discussion Board
Contact Us


Get Ready to Unleash the Power of UCanCode .NET

Graphics Library for WinCE, Draw Bitmap, Draw Gif, Draw Jpg with Win CE, Visual C++ Code 2023


CEDraw is high speed graphics library in WinCE. It depends on GAPI . This code was written in C++ using embedded VC++ to compile it. Testing was done on an iPaq h3600 with WinCE 3.0. CEDraw use double buffer and direct write video buffer technology to enhance Draw speed. With its own graphics arithmetic the drawing speed is much faster than WinGDI.

CE Draw supports these functions:

  • Draw Pixel
  • Fill Screen
  • Draw Line,HLine,VLine
  • Draw Polyline
  • Draw Polygon
  • Draw Rectangle
  • Fill Rectangle ( with alpha blend support )
  • Fill Polygon
  • Draw Bitmap ( Support Bmp,Gif,Jpg format, Support alpha blend )
  • Draw Text ( Own font file, support Chinese, support gdi text )

How to use it

Before use the CEDraw Library, you must copy some support file in you system.

a. Copy the dll to you WinCE system directory

  1. If using in emulation mode, copy two of the dll in …\CEGraph\DLL\X86Em directory ( gx.dll & cegl.dll) to the emulation windows system directory, always in the D:\Windows CE Tools\wce300\MS Pocket PC\emulation\palm300\windows directoty, then copy the file Hzk16 in the …\CEGraph\Res directory to the WinCE Root directory, always in D:\Windows CE Tools\wce300\MS Pocket PC\emulation\palm300
  2. if using an Arm system, copy the two DLLs in …\CEGraph\DLL\Arm ( gx.dll & cegl.dll) to the Pocket PC windows system directory. Then copy the file HZK16 to the System Root directory.

There a 4 step to use it:

Step 1 Directory:

Set the including directory to …\CEGraph\Include
And lib directory to …\CEGraph\Lib\X86Em ( if using in emulation system) or …\CEGraph\Lib\Arm ( if using in pocketpc)

Open the project setting->Link->Object/library Modules 

Add CEGL.lib

Setp 2 Head file Including:

Include the cedraw graphics header file: CEGL.h

#include "stdafx.h"
#include "SDKSample.h"
#include <commctrl.h>

#include <cegl.h> // Include CE Graphics library

Step 3 Create the CE Draw Class:

// Create the CE Draw Object:
CCEDraw m_ceDraw;

// Initialize after CreateWindow()

BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)

    HWND hWnd;
    TCHAR szTitle[MAX_LOADSTRING]; // The title bar text
    TCHAR szWindowClass[MAX_LOADSTRING]; // The window class name

    hInst = hInstance; // Store instance handle in our global variable
    // Initialize global strings
    LoadString(hInstance, IDC_SDKSAMPLE, szWindowClass, MAX_LOADSTRING);
    MyRegisterClass(hInstance, szWindowClass);
    LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
    hWnd = CreateWindow(szWindowClass, szTitle, WS_VISIBLE,
        0, 0, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN), 
        NULL, NULL, hInstance, NULL);
    if (!hWnd)
        return FALSE;

    // Create the CE Grahpics Library
    m_ceDraw.Create( hWnd );

    ShowWindow(hWnd, nCmdShow);

    return TRUE;

Step 4: Using CE Draw freely

                         WPARAM wParam, LPARAM lParam)
    HDC hdc;
    int wmId, wmEvent;

    switch (message)
    case WM_PAINT:
        RECT rt;
        hdc = BeginPaint(hWnd, &ps);
        GetClientRect(hWnd, &rt);
        LoadString(hInst, IDS_HELLO, szHello, MAX_LOADSTRING);
        DrawText(hdc, szHello, _tcslen(szHello), &rt,
        EndPaint(hWnd, &ps);

        Render(); // Render screen


void Render( void )
    POINT pt[5] ={ { 140, 100 }, { 70,120 }, { 104, 150 }, 
                   { 210, 122 }, { 75, 200 } };

    // Create the ce pen object...
    CCEPen cePen;
    // Convert RGB color to CE support Color
    cePen.CreatePen( 1, 1, m_ceDraw.ConvertColor( 255, 0, 0 ) ); 

    // Select it to the graphics system
    m_ceDraw.SetGDIObject( &cePen );

    // Create the ce brush object...
    CCEBrush ceBrush1, ceBrush2;
    ceBrush1.CreateBrush( 1, m_ceDraw.ConvertColor( 200, 200, 100 ), 1 );
    ceBrush2.CreateBrush( 1, m_ceDraw.ConvertColor( 0, 240, 0 ), 1 );

    // Select it to the graphics system
    m_ceDraw.SetGDIObject( &ceBrush1 );

    // Begin Draw
    m_ceDraw.Clear( (DWORD)255 ); // Clear screen use white color

    m_ceDraw.DrawLine( 1, 1, 100, 100 ); // Draw line

    m_ceDraw.DrawRect( 10, 10, 110, 80 ); // Draw Rect

    m_ceDraw.FillRect( 30, 30, 50, 50 ); // Fill Rect

    m_ceDraw.SetGDIObject( &ceBrush2 ); // Select another color brush
    m_ceDraw.FillRect( 40, 40, 100, 100, 0.4 ); // fill Rect with alpha blend

    m_ceDraw.FillPolygon( pt, 5 ); // Draw an polygon
    m_ceDraw.SetGDIObject( &ceBrush1 ); // Select another color brush
    m_ceDraw.FillPolygon( pt, 5, 40, 40 ); // Draw an polygon

    CCEBitmap ceBmp1,ceBmp2;

    // Load Gif picture from file
    ceBmp1.LoadBitmap( &m_ceDraw, L"windows\\wcelogo1.gif" );      
    ceBmp2.LoadBitmap( &m_ceDraw, L"windows\\welcomehead.gif" );

    // Draw bitmap with alpha blend
    ceBmp2.BitBlt( &m_ceDraw, 1, 80, 0, 0, 0, 0, SRCALPHA, 0.6f ); 
    ceBmp1.BitBlt( &m_ceDraw, 1, 200, 0, 0, 0, 0, SRCALPHA, 0.6f );

    POINT ptText = { 1, 300 };
    // Draw text with pen color
    m_ceDraw.DrawText( &ptText, "Hello CE Graph!", 16, 1 ); 

    // End Draw
    m_ceDraw.Flip(); // Flip the back buffer to the video buffer

Step 5:

Don’t forgot to release it:



This graphics library cannot be directly used in an MFC appwizard generated frame. Because it has two windows, one is frame window, the other is child Window. I’ve write a Framework that supports MFC. If anyone who want to use it in MFC  email me.

  • The CEGLDLLPrj is the dll project of CE Graphics Library. It's high recommend that if you want to use this library, use the project to build your own DLL & Lib Files. To Build this project. You Can setting the include directory and lib directory with ...\CEGraph\include & lib (The same as  Step 1 Directory )
  • The SDKSample Project is the sample NOT using MFC. Build it after setting & copying the library& DLL Files.


1 UCanCode Advance E-XD++ CAD Drawing and Printing Solution Source Code Solution for C/C++, .NET V2023 is released!

2 UCanCode Advance E-XD++ HMI & SCADA Source Code Solution for C/C++, .NET V2023 is released!

3 UCanCode Advance E-XD++ GIS SVG Drawing and Printing Solution Source Code Solution for C/C++, .NET V2023 is released!


Contact UCanCode Software

To buy the source code or learn more about with:



Ask any questions by MSN: Yahoo:


Copyright ?1998-2023 UCanCode.Net Software , all rights reserved.
Other product and company names herein may be the trademarks of their respective owners.

Please direct your questions or comments to