LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam) 
{
    HDC hdc; 
    int wmId,wmEvent; 
    PAINTSTRUCT ps; 
    TCHAR szHello[MAX_LOADSTRING]; 

    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,
            DT_SINGLELINE | DT_VCENTER | DT_CENTER);
        EndPaint(hWnd,&ps); 

        Render(); // ύĻ 
        break; 

        ... 
   } 
} 

void Render(void)
{
    POINT pt[5] ={{140,100},{70,120},{104,150},
                      {210,122},{75,200}}; 
    //  ce pen... 
    CCEPen cePen; 
    // 任RGBɫΪCE֧ɫ 
    cePen.CreatePen(1,1,m_ceDraw.ConvertColor(255,0,0)); 
    // ѡͼϵͳ 
    m_ceDraw.SetGDIObject(&cePen); 

    // ceʶ ... 
    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); 

    // ʼ 
    m_ceDraw.BeginDraw(); 
    m_ceDraw.Clear((DWORD)255); // ðɫĻ 
    
    m_ceDraw.DrawLine(1,1,100,100); //  

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

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

    m_ceDraw.SetGDIObject(&ceBrush2); // ѡɫĻ 
    m_ceDraw.FillRect(40,40,100,100,0.4); // alphaRect 

    m_ceDraw.FillPolygon(pt,5); // Draw an polygon 
    m_ceDraw.SetGDIObject(&ceBrush1); // ѡԭɫ 
    m_ceDraw.FillPolygon(pt,5,40,40); // һpolygon 

    CCEBitmap ceBmp1,ceBmp2; 

    // ļGifͼƬ 
    ceBmp1.LoadBitmap(&m_ceDraw,L"windows\\wcelogo1.gif"); 
    ceBmp2.LoadBitmap(&m_ceDraw,L"windows\\welcomehead.gif"); 

    //alphaϻλͼ 
    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};
    // øֱɫı 
    m_ceDraw.DrawText(&ptText,"Hello CE Graph!",16,1);

    //  
    m_ceDraw.EndDraw(); 
    m_ceDraw.Flip(); // ɺ󻺳תƵ
}  
ͷŶĴ룺
case WM_DESTROY:
    m_ceDraw.Release(); 
    PostQuitMessage(0); 
    break; 
ûʹMFCҪʹõļƵУͷļҲҪƵСSDKSample.cpp¡
#include "stdafx.h"
#include "SDKSample.h"
#include <commctrl.h>

#include <cegl.h>  // CE Graphics  

#define MAX_LOADSTRING 100 
// ȫֱ:
HINSTANCE    hInst;    // ǰʾ  
HWND          hwndCB;   // 

CCEDraw      m_ceDraw;  
  
// ڱģеĺ:
ATOM    MyRegisterClass (HINSTANCE,LPTSTR);
void Render(void) 

BOOL  InitInstance  (HINSTANCE,int);  
LRESULT CALLBACK  WndProc  (HWND,UINT,WPARAM, 
LPARAM);  
LRESULT CALLBACK  About  (HWND,UINT,WPARAM,LPARAM);

void Render(void)
{
 POINT pt[5] ={{140,100},{70,120},{104,150},{210,122},{75,200}};
 // һce pen...
 CCEPen cePen;
 cePen.CreatePen(1,1,m_ceDraw.ConvertColor(255,0,0)); // Convert RGB color to CE support Color
 // ѡͼϵͳSelect it to the graphics system
 m_ceDraw.SetGDIObject(&cePen); 

// ceˢ ... 
CCEBrush ceBrush1,ceBrush2; 
ceBrush1.CreateBrush(1,m_ceDraw.ConvertColor(200,200,100),1); 
ceBrush2.CreateBrush(1,m_ceDraw.ConvertColor(0,240,0),1); 
// ѡͼϵͳ 
m_ceDraw.SetGDIObject(&ceBrush1); 

// ʼ
m_ceDraw.BeginDraw(); 
m_ceDraw.Clear((DWORD)255);         // ðɫĻ 

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

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

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

m_ceDraw.SetGDIObject(&ceBrush2);  //ѡɫˢ 
m_ceDraw.FillRect(40,40,100,100,0.4); // alphaRect

m_ceDraw.FillPolygon(pt,5);         // һpolygon 
m_ceDraw.SetGDIObject(&ceBrush1);   // ѡɫˢ 
m_ceDraw.FillPolygon(pt,5,40,40); // һpolygon  

CCEBitmap ceBmp1,ceBmp2; 
ceBmp1.LoadBitmap(&m_ceDraw,L"windows\\wcelogo1.gif"); 
ceBmp2.LoadBitmap(&m_ceDraw,L"windows\\welcomehead.gif"); 
ceBmp2.BitBlt(&m_ceDraw,1,80,0,0,0,0,SRCALPHA,0.6f); // alphaϻλͼ 
ceBmp1.BitBlt(&m_ceDraw,1,200,0,0,0,0,SRCALPHA,0.6f); 

POINT ptText = {1,300}; 
m_ceDraw.DrawText(&ptText,"Hello CE Graph!",16,1); // øֱɫı

// 
 m_ceDraw.EndDraw(); 
 m_ceDraw.Flip(); // Ӻ󻺳תƵ 
}
int WINAPI WinMain(HINSTANCE hInstance,
                      HINSTANCE hPrevInstance,
                      LPTSTR  lpCmdLine, 
                      int  nCmdShow)  

{ 
 MSG msg;  
 HACCEL hAccelTable; 

// ִгʼ:
if (!InitInstance (hInstance,nCmdShow)) 
{
    return FALSE;
} 

hAccelTable = LoadAccelerators(hInstance,(LPCTSTR)IDC_SDKSAMPLE); 

// Ϣѭ:
while (GetMessage(&msg,NULL,0,0))
{
    if (!TranslateAccelerator(msg.hwnd,hAccelTable,&msg))  
    { 
        TranslateMessage(&msg);  
        DispatchMessage(&msg);  
   }  
}  

return msg.wParam;  
}  

//  
//  :MyRegisterClass()
//  
//  Ŀ:ǼǴ.
//  
//  ע: 
//  
//  ñҪӶʹȡΡСͼ.
//  
//  
 
ATOM MyRegisterClass(HINSTANCE hInstance,LPTSTR szWindowClass)  
{ 
 WNDCLASS wc;  

    wc.style 			= CS_HREDRAW | CS_VREDRAW;  
    wc.lpfnWndProc 	= (WNDPROC) WndProc; 
    wc.cbClsExtra 	= 0;  
    wc.cbWndExtra 	= 0;  
    wc.hInstance 	= hInstance;  
    wc.hIcon 		= LoadIcon(hInstance,MAKEINTRESOURCE(IDI_SDKSAMPLE));  
    wc.hCursor = 0;  
    wc.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);  
    wc.lpszMenuName = 0;  
    wc.lpszClassName = szWindowClass;  

return RegisterClass(&wc);  
}  

// 

// :InitInstance(HANDLE,int) 
// 
// Ŀ:ʾ 
// 
// ע:
// 

// ڱ,ȫֱбʾʾ. 
// 

BOOL InitInstance(HINSTANCE hInstance,int nCmdShow) 
{
 HWND hWnd; 
 TCHAR szTitle[MAX_LOADSTRING]; // ı
 TCHAR szWindowClass[MAX_LOADSTRING];  //  

 hInst = hInstance; // ǵȫֱд洢ʾ
 // ʼȫַ
 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;
} 

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

 ShowWindow(hWnd,nCmdShow); 
  UpdateWindow(hWnd); 

 return TRUE; 
} 

// 
// :WndProc(HWND,unsigned,WORD,LONG) 
// 
// Ŀ:ΪϢ. 
// 
// WM_COMMAND - ˵ 
// WM_PAINT -  
// WM_DESTROY - ˳Ϣ 
// 
// 

LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam) 
{
 HDC hdc; 
 int wmId,wmEvent; 
 PAINTSTRUCT ps; 
 TCHAR szHello[MAX_LOADSTRING]; 

 switch (message) 
 {

    case WM_COMMAND:
          wmId  = LOWORD(wParam);  
          wmEvent = HIWORD(wParam); 
          // ˵ѡ:
          switch (wmId)
          {
              case IDM_HELP_ABOUT:
                  DialogBox(hInst,(LPCTSTR)IDD_ABOUTBOX,hWnd,(DLGPROC)About);
                  break; 
              case IDM_FILE_EXIT:
                  DestroyWindow(hWnd);
                  break; 
                  default:
                     return DefWindowProc(hWnd,message,wParam,lParam); 
         }
          break; 
    case WM_CREATE:
          break; 
     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,
               DT_SINGLELINE | DT_VCENTER | DT_CENTER);
           EndPaint(hWnd,&ps); 

           Render(); // ύĻ
           break; 
      case WM_DESTROY:
           CommandBar_Destroy(hwndCB); 
           PostQuitMessage(0); 
           break; 
      case WM_KEYDOWN:
           PostMessage(hWnd,WM_DESTROY,0,0); 
           break; 
      default:
           return DefWindowProc(hWnd,message,wParam,lParam); 
   }
    return 0; 
} 

// AboutϢ.
LRESULT CALLBACK About(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam) 
{
 RECT rt,rt1; 
 int DlgWidth,
 DlgHeight; // صԪеĶԻȺ͸߶ 
 int NewPosX,NewPosY; 
 switch (message) 
{
    case WM_INITDIALOG:
          // AboutԻ 
          if (GetWindowRect(hDlg,&rt1)) {
                 GetClientRect(GetParent(hDlg),&rt); 
                 DlgWidth = rt1.right - rt1.left; 
                 DlgHeight = rt1.bottom - rt1.top ; 
                 NewPosX  = (rt.right - rt.left -DlgWidth)/2; 
                 NewPosY = (rt.bottom - rt.top - DlgHeight)/2; 

                 // AboutʵĻ
                 if (NewPosX < 0) NewPosX = 0; 
                 if (NewPosY < 0) NewPosY = 0; 
                 SetWindowPos(hDlg,0,NewPosX,NewPosY,
                      0,0,SWP_NOZORDER | SWP_NOSIZE);
            }
             return TRUE; 

        case WM_COMMAND:
              if ((LOWORD(wParam) == IDOK) || (LOWORD(wParam) == IDCANCEL))
              {
                  EndDialog(hDlg,LOWORD(wParam));
                  return TRUE; 
             }
              break; 
} 
    return FALSE; 
} 


