DEMO4_7D.C
上传用户:cncajx
上传日期:2007-01-03
资源大小:190k
文件大小:3k
源码类别:

GDI/图象编程

开发平台:

Visual C++

  1.   1 #include "demo4_7.h"
  2.   2 #include <windows.h>
  3.   3 
  4.   4 
  5.   5 void FAR PASCAL LineDDAProc(short, short, LPSTR);
  6.   6 
  7.   7 COLORREF ColorStyle[3][16] =
  8.   8   {  { RGB(255,255,255), RGB(255,  0,  0), RGB(  0,255,  0),
  9.   9        RGB(  0,  0,255), RGB(255,255,  0), RGB(  0,255,255),
  10.  10        RGB(255,  0,255), RGB(192,192,192), RGB(128,  0,  0),
  11.  11        RGB(  0,128,  0), RGB(  0,  0,128), RGB(128,128,  0),
  12.  12        RGB(  0,128,128), RGB(128,  0,128), RGB(128,128,128),
  13.  13        RGB(255,255,128)
  14.  14      },
  15.  15      { RGB(255,  0,  0), RGB(  0,255,  0), RGB(  0,  0,255),
  16.  16        RGB(255,  0,  0), RGB(  0,255,  0), RGB(  0,  0,255),
  17.  17        RGB(255,  0,  0), RGB(  0,255,  0), RGB(  0,  0,255),
  18.  18        RGB(255,  0,  0), RGB(  0,255,  0), RGB(  0,  0,255),
  19.  19        RGB(255,  0,  0), RGB(  0,255,  0), RGB(  0,  0,255),
  20.  20        RGB(255,  0,  0)
  21.  21      },
  22.  22      { RGB(255,  0,  0), RGB(255, 16, 16), RGB(255, 32, 32),
  23.  23        RGB(255, 48, 48), RGB(255, 64, 64), RGB(255, 80, 80),
  24.  24        RGB(255, 96, 96), RGB(255,112,112), RGB(255,128,128),
  25.  25        RGB(255,144,144), RGB(255,160,160), RGB(255,176,176),
  26.  26        RGB(255,192,192), RGB(255,208,208), RGB(255,224,224),
  27.  27        RGB(255,255,255)
  28.  28      }
  29.  29   };
  30.  30 
  31.  31 extern FARPROC lpLineDDAProc;
  32.  32 extern HANDLE  hInst;
  33.  33 extern int     StyleID;
  34.  34 
  35.  35 
  36.  36 void ReDrawLine(HANDLE hCtrl)
  37.  37 {
  38.  38    RECT     Client;
  39.  39    HDC      hDC;
  40.  40    int      Y;
  41.  41 
  42.  42    hDC = GetDC(hCtrl);
  43.  43    GetClientRect(hCtrl, &Client);
  44.  44 
  45.  45    lpLineDDAProc = MakeProcInstance((FARPROC) LineDDAProc,
  46.  46                                     hInst);
  47.  47 
  48.  48    Y = (Client.top + Client.bottom) / 2;
  49.  49    LineDDA(Client.left, Y, Client.right, Y,
  50.  50            lpLineDDAProc, (LPSTR) &hDC);
  51.  51 
  52.  52    FreeProcInstance(lpLineDDAProc);
  53.  53 
  54.  54    ReleaseDC(hCtrl, hDC);
  55.  55 }
  56.  56 
  57.  57 
  58.  58 
  59.  59 BOOL FAR PASCAL LineDlgProc(HWND hDlg, unsigned msg,
  60.  60                             WORD wParam, LONG lParam)
  61.  61 {
  62.  62    HANDLE     hCtrl;
  63.  63    static int nChooseStyle;
  64.  64    int        nTemp, i;
  65.  65 
  66.  66    switch (msg)
  67.  67      {
  68.  68        case WM_INITDIALOG :
  69.  69           SetFocus(GetDlgItem(hDlg, StyleID));
  70.  70           return (FALSE);
  71.  71 
  72.  72        case WM_CLOSE :
  73.  73           EndDialog(hDlg, FALSE);
  74.  74           return (TRUE);
  75.  75 
  76.  76        case WM_PAINT :
  77.  77           nTemp = StyleID;
  78.  78 
  79.  79           for (i=0; i<3; i++)
  80.  80             {
  81.  81               hCtrl = GetDlgItem(hDlg, DI_LINE1+i);
  82.  82               StyleID = DI_STYLE1 + i;
  83.  83               ReDrawLine(hCtrl);
  84.  84             }
  85.  85 
  86.  86           StyleID = nTemp;
  87.  87           return (FALSE);
  88.  88 
  89.  89        case WM_COMMAND :
  90.  90           switch (wParam)
  91.  91             {
  92.  92               case DI_OK :
  93.  93                   StyleID = nChooseStyle;
  94.  94                   EndDialog(hDlg, TRUE);
  95.  95                   return (TRUE);
  96.  96 
  97.  97               case DI_CANCEL :
  98.  98                   EndDialog(hDlg, FALSE);
  99.  99                   return (TRUE);
  100. 100 
  101. 101               case DI_STYLE1 :
  102. 102               case DI_STYLE2 :
  103. 103               case DI_STYLE3 :
  104. 104                   nChooseStyle = wParam;
  105. 105                   return (TRUE);
  106. 106             }
  107. 107           return (FALSE);
  108. 108 
  109. 109        default :
  110. 110           return (FALSE);
  111. 111      }
  112. 112 }
  113. 113