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