XTColorPageStandard.cpp
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:42k
源码类别:

对话框与窗口

开发平台:

Visual C++

  1. // XTColorPageStandard.cpp : implementation file
  2. //
  3. // This file is a part of the XTREME CONTROLS MFC class library.
  4. // (c)1998-2008 Codejock Software, All Rights Reserved.
  5. //
  6. // THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
  7. // RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
  8. // CONSENT OF CODEJOCK SOFTWARE.
  9. //
  10. // THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
  11. // IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
  12. // YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
  13. // SINGLE COMPUTER.
  14. //
  15. // CONTACT INFORMATION:
  16. // support@codejock.com
  17. // http://www.codejock.com
  18. //
  19. /////////////////////////////////////////////////////////////////////////////
  20. #include "stdafx.h"
  21. #include "Resource.h"
  22. #include "Common/XTPColorManager.h"
  23. #include "Common/XTPDrawHelpers.h"
  24. #include "XTDefines.h"
  25. #include "XTColorDialog.h"
  26. #include "XTColorPageStandard.h"
  27. #ifdef _DEBUG
  28. #define new DEBUG_NEW
  29. #undef THIS_FILE
  30. static char THIS_FILE[] = __FILE__;
  31. #endif
  32. const COLORREF CXTColorHex::clrSelArray[] =
  33. {
  34. RGB(0x00, 0x33, 0x66), // row 1
  35. RGB(0x33, 0x66, 0x99),
  36. RGB(0x33, 0x66, 0xCC),
  37. RGB(0x00, 0x33, 0x99),
  38. RGB(0x00, 0x00, 0x99),
  39. RGB(0x00, 0x00, 0xCC),
  40. RGB(0x00, 0x00, 0x66),
  41. RGB(0x00, 0x66, 0x66), // row 2
  42. RGB(0x00, 0x66, 0x99),
  43. RGB(0x00, 0x99, 0xCC),
  44. RGB(0x00, 0x66, 0xCC),
  45. RGB(0x00, 0x33, 0xCC),
  46. RGB(0x00, 0x00, 0xFF),
  47. RGB(0x33, 0x33, 0xFF),
  48. RGB(0x33, 0x33, 0x99),
  49. RGB(0x00, 0x80, 0x80), // row 3
  50. RGB(0x00, 0x99, 0x99),
  51. RGB(0x33, 0xCC, 0xCC),
  52. RGB(0x00, 0xCC, 0xFF),
  53. RGB(0x00, 0x99, 0xFF),
  54. RGB(0x00, 0x66, 0xFF),
  55. RGB(0x33, 0x66, 0xFF),
  56. RGB(0x33, 0x33, 0xCC),
  57. RGB(0x66, 0x66, 0x99),
  58. RGB(0x33, 0x99, 0x66), // row 4
  59. RGB(0x00, 0xCC, 0x99),
  60. RGB(0x00, 0xFF, 0xCC),
  61. RGB(0x00, 0xFF, 0xFF),
  62. RGB(0x33, 0xCC, 0xFF),
  63. RGB(0x33, 0x99, 0xFF),
  64. RGB(0x66, 0x99, 0xFF),
  65. RGB(0x66, 0x66, 0xFF),
  66. RGB(0x66, 0x00, 0xFF),
  67. RGB(0x66, 0x00, 0xCC),
  68. RGB(0x33, 0x99, 0x33), // row 5
  69. RGB(0x00, 0xCC, 0x66),
  70. RGB(0x00, 0xFF, 0x99),
  71. RGB(0x66, 0xFF, 0xCC),
  72. RGB(0x66, 0xFF, 0xFF),
  73. RGB(0x66, 0xCC, 0xFF),
  74. RGB(0x99, 0xCC, 0xFF),
  75. RGB(0x99, 0x99, 0xFF),
  76. RGB(0x99, 0x66, 0xFF),
  77. RGB(0x99, 0x33, 0xFF),
  78. RGB(0x99, 0x00, 0xFF),
  79. RGB(0x00, 0x66, 0x00), // row 6
  80. RGB(0x00, 0xCC, 0x00),
  81. RGB(0x00, 0xFF, 0x00),
  82. RGB(0x66, 0xFF, 0x99),
  83. RGB(0x99, 0xFF, 0xCC),
  84. RGB(0xCC, 0xFF, 0xFF),
  85. RGB(0xCC, 0xEC, 0xFF),
  86. RGB(0xCC, 0xCC, 0xFF),
  87. RGB(0xCC, 0x99, 0xFF),
  88. RGB(0xCC, 0x66, 0xFF),
  89. RGB(0xCC, 0x00, 0xFF),
  90. RGB(0x99, 0x00, 0xCC),
  91. RGB(0x00, 0x33, 0x00), // row 7
  92. RGB(0x00, 0x80, 0x00),
  93. RGB(0x33, 0xCC, 0x33),
  94. RGB(0x66, 0xFF, 0x66),
  95. RGB(0x99, 0xFF, 0x99),
  96. RGB(0xCC, 0xFF, 0xCC),
  97. RGB(0xFF, 0xFF, 0xFF),
  98. RGB(0xFF, 0xCC, 0xFF),
  99. RGB(0xFF, 0x99, 0xFF),
  100. RGB(0xFF, 0x66, 0xFF),
  101. RGB(0xFF, 0x00, 0xFF),
  102. RGB(0xCC, 0x00, 0xCC),
  103. RGB(0x66, 0x00, 0x66),
  104. RGB(0x33, 0x66, 0x00), // row 8
  105. RGB(0x00, 0x99, 0x00),
  106. RGB(0x66, 0xFF, 0x33),
  107. RGB(0x99, 0xFF, 0x66),
  108. RGB(0xCC, 0xFF, 0x99),
  109. RGB(0xFF, 0xFF, 0xCC),
  110. RGB(0xFF, 0xCC, 0xCC),
  111. RGB(0xFF, 0x99, 0xCC),
  112. RGB(0xFF, 0x66, 0xCC),
  113. RGB(0xFF, 0x33, 0xCC),
  114. RGB(0xCC, 0x00, 0x99),
  115. RGB(0x80, 0x00, 0x80),
  116. RGB(0x33, 0x33, 0x00), // row 9
  117. RGB(0x66, 0x99, 0x00),
  118. RGB(0x99, 0xFF, 0x33),
  119. RGB(0xCC, 0xFF, 0x66),
  120. RGB(0xFF, 0xFF, 0x99),
  121. RGB(0xFF, 0xCC, 0x99),
  122. RGB(0xFF, 0x99, 0x99),
  123. RGB(0xFF, 0x66, 0x99),
  124. RGB(0xFF, 0x33, 0x99),
  125. RGB(0xCC, 0x33, 0x99),
  126. RGB(0x99, 0x00, 0x99),
  127. RGB(0x66, 0x66, 0x33), // row 10
  128. RGB(0x99, 0xCC, 0x00),
  129. RGB(0xCC, 0xFF, 0x33),
  130. RGB(0xFF, 0xFF, 0x66),
  131. RGB(0xFF, 0xCC, 0x66),
  132. RGB(0xFF, 0x99, 0x66),
  133. RGB(0xFF, 0x7C, 0x80),
  134. RGB(0xFF, 0x00, 0x66),
  135. RGB(0xD6, 0x00, 0x93),
  136. RGB(0x99, 0x33, 0x66),
  137. RGB(0x80, 0x80, 0x00), // row 11
  138. RGB(0xCC, 0xCC, 0x00),
  139. RGB(0xFF, 0xFF, 0x00),
  140. RGB(0xFF, 0xCC, 0x00),
  141. RGB(0xFF, 0x99, 0x33),
  142. RGB(0xFF, 0x66, 0x00),
  143. RGB(0xFF, 0x50, 0x50),
  144. RGB(0xCC, 0x00, 0x66),
  145. RGB(0x66, 0x00, 0x33),
  146. RGB(0x99, 0x66, 0x33), // row 12
  147. RGB(0xCC, 0x99, 0x00),
  148. RGB(0xFF, 0x99, 0x00),
  149. RGB(0xCC, 0x66, 0x00),
  150. RGB(0xFF, 0x33, 0x00),
  151. RGB(0xFF, 0x00, 0x00),
  152. RGB(0xCC, 0x00, 0x00),
  153. RGB(0x99, 0x00, 0x33),
  154. RGB(0x66, 0x33, 0x00), // row 13
  155. RGB(0x99, 0x66, 0x00),
  156. RGB(0xCC, 0x33, 0x00),
  157. RGB(0x99, 0x33, 0x00),
  158. RGB(0x99, 0x00, 0x00),
  159. RGB(0x80, 0x00, 0x00),
  160. RGB(0xA5, 0x00, 0x21),
  161. RGB(0xF8, 0xF8, 0xF8), // row 1 (gray scale)
  162. RGB(0xDD, 0xDD, 0xDD),
  163. RGB(0xB2, 0xB2, 0xB2),
  164. RGB(0x80, 0x80, 0x80),
  165. RGB(0x5F, 0x5F, 0x5F),
  166. RGB(0x33, 0x33, 0x33),
  167. RGB(0x1C, 0x1C, 0x1C),
  168. RGB(0x08, 0x08, 0x08),
  169. RGB(0xEA, 0xEA, 0xEA), // row 2 (gray scale)
  170. RGB(0xC0, 0xC0, 0xC0),
  171. RGB(0x96, 0x96, 0x96),
  172. RGB(0x77, 0x77, 0x77),
  173. RGB(0x4D, 0x4D, 0x4D),
  174. RGB(0x29, 0x29, 0x29),
  175. RGB(0x11, 0x11, 0x11),
  176. RGB(0xFF, 0xFF, 0xFF), // large white cell
  177. RGB(0x00, 0x00, 0x00)   // large black cell
  178. };
  179. bool CXTColorHex::IsValidColor(COLORREF cr) const
  180. {
  181. int i;
  182. for (i = 0; i < _countof(clrSelArray); ++i)
  183. {
  184. if (cr == clrSelArray[i])
  185. {
  186. return true;
  187. }
  188. }
  189. return false;
  190. }
  191. /////////////////////////////////////////////////////////////////////////////
  192. // CXTColorHex
  193. CXTColorHex::CXTColorHex()
  194. {
  195. m_bSmallCell = TRUE;
  196. m_clrColor = (COLORREF)-1;
  197. m_bLBtnDown = FALSE;
  198. m_bPreSubclassInit = true;
  199. }
  200. CXTColorHex::~CXTColorHex()
  201. {
  202. while (!m_arCells.IsEmpty())
  203. {
  204. HEXCOLOR_CELL* pCI = m_arCells.RemoveHead();
  205. SAFE_DELETE_AR (pCI->pPoint);
  206. SAFE_DELETE (pCI);
  207. }
  208. }
  209. BEGIN_MESSAGE_MAP(CXTColorHex, CStatic)
  210. //{{AFX_MSG_MAP(CXTColorHex)
  211. ON_WM_PAINT()
  212. ON_WM_LBUTTONDOWN()
  213. ON_WM_LBUTTONUP()
  214. ON_WM_MOUSEMOVE()
  215. ON_WM_ERASEBKGND()
  216. ON_WM_LBUTTONDBLCLK()
  217. ON_WM_CREATE()
  218. //}}AFX_MSG_MAP
  219. END_MESSAGE_MAP()
  220. #define CX_ANCHOR   42
  221. #define CY_ANCHOR   3
  222. #define CX_HEXDISP  182
  223. #define CY_HEXDISP  196
  224. void CXTColorHex::OnPaint()
  225. {
  226. CPaintDC dc(this); // device context for painting
  227. CXTPClientRect rc(this);
  228. CXTPBufferDC memDC(dc);
  229. if (m_bmpPicker.GetSafeHandle() == NULL)
  230. {
  231. // create bitmap
  232. m_bmpPicker.DeleteObject();
  233. m_bmpPicker.CreateCompatibleBitmap(&memDC,
  234. rc.Width(), rc.Height());
  235. // create picker DC
  236. CDC dcPicker;
  237. dcPicker.CreateCompatibleDC(&memDC);
  238. CBitmap* pOldBitmap = dcPicker.SelectObject(&m_bmpPicker);
  239. dcPicker.SetBkMode(TRANSPARENT);
  240. HBRUSH hBrush = (HBRUSH)GetParent()->SendMessage(WM_CTLCOLORSTATIC, (WPARAM)dcPicker.GetSafeHdc(), (LPARAM)m_hWnd);
  241. if (hBrush)
  242. {
  243. ::FillRect(dcPicker.GetSafeHdc(), rc, hBrush);
  244. }
  245. else
  246. {
  247. dcPicker.FillSolidRect(rc, GetXtremeColor(COLOR_3DFACE));
  248. }
  249. DrawColorSelector(&dcPicker);
  250. dcPicker.SelectObject(pOldBitmap);
  251. }
  252. memDC.DrawState(CPoint(0, 0), rc.Size(), &m_bmpPicker, DSS_NORMAL, 0);
  253. SelectColorCell(&memDC);
  254. }
  255. BOOL CXTColorHex::OnEraseBkgnd(CDC* /*pDC*/)
  256. {
  257. return TRUE;
  258. }
  259. void CXTColorHex::SelectColorCell(CDC* pDC)
  260. {
  261. CXTColorDialog* pParentWnd = (CXTColorDialog*)GetParent()->GetParent();
  262. ASSERT(pParentWnd);
  263. if (!pParentWnd)
  264. return;
  265. if (pParentWnd->GetColor() == m_clrColor)
  266. {
  267. if (m_clrColor == RGB(0xff, 0xff, 0xff))
  268. {
  269. CXTPClientRect rcClient(this);
  270. CPoint ptCurrent = m_ptCurrent;
  271. m_ptCurrent.x = (rcClient.Width()-14)/2;
  272. m_ptCurrent.y = 74 + CY_ANCHOR;
  273. DrawSelectCell(pDC);
  274. m_ptCurrent.x = (rcClient.Width()-CX_HEXDISP)/2;
  275. m_ptCurrent.y = 171 + CY_ANCHOR;
  276. DrawLargeSelectCell(pDC);
  277. m_ptCurrent = ptCurrent;
  278. }
  279. else if (m_clrColor == RGB(0x00, 0x00, 0x00))
  280. {
  281. DrawLargeSelectCell(pDC);
  282. }
  283. else if (IsValidColor(m_clrColor))
  284. {
  285. if (m_bSmallCell)
  286. {
  287. DrawSelectCell(pDC);
  288. }
  289. else
  290. {
  291. DrawLargeSelectCell(pDC);
  292. }
  293. }
  294. }
  295. }
  296. void CXTColorHex::DrawLargeSelectCell(CDC* pDC)
  297. {
  298. int x = m_ptCurrent.x;
  299. int y = m_ptCurrent.y;
  300. x -= 2;
  301. COLORREF clr = RGB(0x00, 0x00, 0x00);
  302. // outer border
  303. int i;
  304. for (i = 0; i < 3; ++i)
  305. pDC->SetPixel(x + i, y-i, clr);
  306. pDC->SetPixel(x + 3, y-2, clr);
  307. pDC->SetPixel(x + 4, y-3, clr);
  308. pDC->SetPixel(x + 5, y-3, clr);
  309. pDC->SetPixel(x + 6, y-4, clr);
  310. pDC->SetPixel(x + 7, y-4, clr);
  311. pDC->SetPixel(x + 8, y-5, clr);
  312. pDC->SetPixel(x + 9, y-5, clr);
  313. pDC->SetPixel(x + 10, y-6, clr);
  314. pDC->SetPixel(x + 11, y-6, clr);
  315. pDC->SetPixel(x + 12, y-7, clr);
  316. pDC->SetPixel(x + 13, y-7, clr);
  317. pDC->SetPixel(x + 14, y-8, clr);
  318. pDC->SetPixel(x + 15, y-8, clr);
  319. pDC->SetPixel(x + 16, y-8, clr);
  320. pDC->SetPixel(x + 17, y-8, clr);
  321. pDC->SetPixel(x + 18, y-8, clr);
  322. pDC->SetPixel(x + 19, y-7, clr);
  323. pDC->SetPixel(x + 20, y-7, clr);
  324. pDC->SetPixel(x + 21, y-6, clr);
  325. pDC->SetPixel(x + 22, y-6, clr);
  326. pDC->SetPixel(x + 23, y-5, clr);
  327. pDC->SetPixel(x + 24, y-5, clr);
  328. pDC->SetPixel(x + 25, y-4, clr);
  329. pDC->SetPixel(x + 26, y-4, clr);
  330. pDC->SetPixel(x + 27, y-3, clr);
  331. pDC->SetPixel(x + 28, y-3, clr);
  332. pDC->SetPixel(x + 29, y-2, clr);
  333. pDC->SetPixel(x + 30, y-2, clr);
  334. pDC->SetPixel(x + 31, y-1, clr);
  335. for (i = 0; i < 17; ++i)
  336. pDC->SetPixel(x + 32, y + i, clr);
  337. pDC->SetPixel(x + 31, y + 17, clr);
  338. pDC->SetPixel(x + 30, y + 18, clr);
  339. pDC->SetPixel(x + 29, y + 18, clr);
  340. pDC->SetPixel(x + 28, y + 19, clr);
  341. pDC->SetPixel(x + 27, y + 19, clr);
  342. pDC->SetPixel(x + 26, y + 20, clr);
  343. pDC->SetPixel(x + 25, y + 20, clr);
  344. pDC->SetPixel(x + 24, y + 21, clr);
  345. pDC->SetPixel(x + 23, y + 21, clr);
  346. pDC->SetPixel(x + 22, y + 22, clr);
  347. pDC->SetPixel(x + 21, y + 22, clr);
  348. pDC->SetPixel(x + 20, y + 23, clr);
  349. pDC->SetPixel(x + 19, y + 23, clr);
  350. pDC->SetPixel(x + 18, y + 24, clr);
  351. pDC->SetPixel(x + 17, y + 24, clr);
  352. pDC->SetPixel(x + 16, y + 24, clr);
  353. pDC->SetPixel(x + 15, y + 24, clr);
  354. pDC->SetPixel(x + 14, y + 24, clr);
  355. pDC->SetPixel(x + 13, y + 23, clr);
  356. pDC->SetPixel(x + 12, y + 23, clr);
  357. pDC->SetPixel(x + 11, y + 22, clr);
  358. pDC->SetPixel(x + 10, y + 22, clr);
  359. pDC->SetPixel(x + 9, y + 21, clr);
  360. pDC->SetPixel(x + 8, y + 21, clr);
  361. pDC->SetPixel(x + 7, y + 20, clr);
  362. pDC->SetPixel(x + 6, y + 20, clr);
  363. pDC->SetPixel(x + 5, y + 19, clr);
  364. pDC->SetPixel(x + 4, y + 19, clr);
  365. pDC->SetPixel(x + 3, y + 18, clr);
  366. pDC->SetPixel(x + 2, y + 18, clr);
  367. pDC->SetPixel(x + 1, y + 17, clr);
  368. for (i = 0; i < 17; ++i)
  369. pDC->SetPixel(x, y + i, clr);
  370. // inner border
  371. for (i = 0; i < 15; ++i)
  372. pDC->SetPixel(x + 4, y + 1 + i, clr);
  373. pDC->SetPixel(x + 5, y + 16, clr);
  374. pDC->SetPixel(x + 6, y + 16, clr);
  375. pDC->SetPixel(x + 7, y + 17, clr);
  376. pDC->SetPixel(x + 8, y + 17, clr);
  377. pDC->SetPixel(x + 9, y + 18, clr);
  378. pDC->SetPixel(x + 10, y + 18, clr);
  379. pDC->SetPixel(x + 11, y + 19, clr);
  380. pDC->SetPixel(x + 12, y + 19, clr);
  381. pDC->SetPixel(x + 13, y + 20, clr);
  382. pDC->SetPixel(x + 14, y + 20, clr);
  383. pDC->SetPixel(x + 15, y + 21, clr);
  384. pDC->SetPixel(x + 16, y + 21, clr);
  385. pDC->SetPixel(x + 17, y + 21, clr);
  386. pDC->SetPixel(x + 18, y + 20, clr);
  387. pDC->SetPixel(x + 19, y + 20, clr);
  388. pDC->SetPixel(x + 20, y + 19, clr);
  389. pDC->SetPixel(x + 21, y + 19, clr);
  390. pDC->SetPixel(x + 22, y + 18, clr);
  391. pDC->SetPixel(x + 23, y + 18, clr);
  392. pDC->SetPixel(x + 24, y + 17, clr);
  393. pDC->SetPixel(x + 25, y + 17, clr);
  394. pDC->SetPixel(x + 26, y + 16, clr);
  395. pDC->SetPixel(x + 27, y + 16, clr);
  396. for (i = 0; i < 15; ++i)
  397. pDC->SetPixel(x + 28, y + 1 + i, clr);
  398. pDC->SetPixel(x + 27, y, clr);
  399. pDC->SetPixel(x + 26, y, clr);
  400. pDC->SetPixel(x + 25, y-1, clr);
  401. pDC->SetPixel(x + 24, y-1, clr);
  402. pDC->SetPixel(x + 23, y-2, clr);
  403. pDC->SetPixel(x + 22, y-2, clr);
  404. pDC->SetPixel(x + 21, y-3, clr);
  405. pDC->SetPixel(x + 20, y-3, clr);
  406. pDC->SetPixel(x + 19, y-4, clr);
  407. pDC->SetPixel(x + 18, y-4, clr);
  408. pDC->SetPixel(x + 17, y-5, clr);
  409. pDC->SetPixel(x + 16, y-5, clr);
  410. pDC->SetPixel(x + 15, y-5, clr);
  411. pDC->SetPixel(x + 14, y-4, clr);
  412. pDC->SetPixel(x + 13, y-4, clr);
  413. pDC->SetPixel(x + 12, y-3, clr);
  414. pDC->SetPixel(x + 11, y-3, clr);
  415. pDC->SetPixel(x + 10, y-2, clr);
  416. pDC->SetPixel(x + 9, y-2, clr);
  417. pDC->SetPixel(x + 8, y-1, clr);
  418. pDC->SetPixel(x + 7, y-1, clr);
  419. pDC->SetPixel(x + 6, y, clr);
  420. pDC->SetPixel(x + 5, y, clr);
  421. // fill inside.
  422. clr = RGB(0xff, 0xff, 0xff);
  423. for (i = 0; i < 17; ++i)
  424. {
  425. pDC->SetPixel(x + 1, y + i, clr);
  426. pDC->SetPixel(x + 2, y + i, clr);
  427. pDC->SetPixel(x + 3, y + i, clr);
  428. }
  429. pDC->SetPixel(x + 4, y, clr);
  430. pDC->SetPixel(x + 4, y + 16, clr);
  431. for (i = 0; i < 17; ++i)
  432. {
  433. pDC->SetPixel(x + 29, y + i, clr);
  434. pDC->SetPixel(x + 30, y + i, clr);
  435. pDC->SetPixel(x + 31, y + i, clr);
  436. }
  437. pDC->SetPixel(x + 28, y, clr);
  438. pDC->SetPixel(x + 28, y + 16, clr);
  439. for (i = 0; i < 5; ++i)
  440. {
  441. pDC->SetPixel(x + 2 + i, y-1, clr);
  442. pDC->SetPixel(x + 4 + i, y-2, clr);
  443. pDC->SetPixel(x + 6 + i, y-3, clr);
  444. pDC->SetPixel(x + 8 + i, y-4, clr);
  445. pDC->SetPixel(x + 10 + i, y-5, clr);
  446. pDC->SetPixel(x + 12 + i, y-6, clr);
  447. pDC->SetPixel(x + 16 + i, y-6, clr);
  448. pDC->SetPixel(x + 14 + i, y-7, clr);
  449. pDC->SetPixel(x + 18 + i, y-5, clr);
  450. pDC->SetPixel(x + 20 + i, y-4, clr);
  451. pDC->SetPixel(x + 22 + i, y-3, clr);
  452. pDC->SetPixel(x + 24 + i, y-2, clr);
  453. pDC->SetPixel(x + 26 + i, y-1, clr);
  454. pDC->SetPixel(x + 26 + i, y + 17, clr);
  455. pDC->SetPixel(x + 24 + i, y + 18, clr);
  456. pDC->SetPixel(x + 22 + i, y + 19, clr);
  457. pDC->SetPixel(x + 20 + i, y + 20, clr);
  458. pDC->SetPixel(x + 18 + i, y + 21, clr);
  459. pDC->SetPixel(x + 14 + i, y + 23, clr);
  460. pDC->SetPixel(x + 16 + i, y + 22, clr);
  461. pDC->SetPixel(x + 12 + i, y + 22, clr);
  462. pDC->SetPixel(x + 10 + i, y + 21, clr);
  463. pDC->SetPixel(x + 8 + i, y + 20, clr);
  464. pDC->SetPixel(x + 6 + i, y + 19, clr);
  465. pDC->SetPixel(x + 4 + i, y + 18, clr);
  466. pDC->SetPixel(x + 2 + i, y + 17, clr);
  467. }
  468. }
  469. void CXTColorHex::DrawSelectCell(CDC* pDC)
  470. {
  471. COLORREF clr = RGB(0x00, 0x00, 0x00);
  472. int x = m_ptCurrent.x;
  473. int y = m_ptCurrent.y;
  474. x -= 2;
  475. y -= 1;
  476. // outer border
  477. int i;
  478. for (i = 0; i < 11; ++i)
  479. pDC->SetPixel(x, y + i, clr);
  480. pDC->SetPixel(x + 1, y + 11, clr);
  481. pDC->SetPixel(x + 2, y + 11, clr);
  482. pDC->SetPixel(x + 3, y + 12, clr);
  483. pDC->SetPixel(x + 4, y + 12, clr);
  484. pDC->SetPixel(x + 5, y + 13, clr);
  485. pDC->SetPixel(x + 6, y + 13, clr);
  486. for (i = 0; i < 5; ++i)
  487. pDC->SetPixel(x + 7 + i, y + 14, clr);
  488. pDC->SetPixel(x + 12, y + 13, clr);
  489. pDC->SetPixel(x + 13, y + 13, clr);
  490. pDC->SetPixel(x + 14, y + 12, clr);
  491. pDC->SetPixel(x + 15, y + 12, clr);
  492. pDC->SetPixel(x + 16, y + 11, clr);
  493. pDC->SetPixel(x + 17, y + 11, clr);
  494. for (i = 0; i < 11; ++i)
  495. pDC->SetPixel(x + 18, y + i, clr);
  496. pDC->SetPixel(x + 16, y-1, clr);
  497. pDC->SetPixel(x + 17, y-1, clr);
  498. pDC->SetPixel(x + 14, y-2, clr);
  499. pDC->SetPixel(x + 15, y-2, clr);
  500. pDC->SetPixel(x + 12, y-3, clr);
  501. pDC->SetPixel(x + 13, y-3, clr);
  502. for (i = 0; i < 5; ++i)
  503. pDC->SetPixel(x + 7 + i, y-4, clr);
  504. pDC->SetPixel(x + 5, y-3, clr);
  505. pDC->SetPixel(x + 6, y-3, clr);
  506. pDC->SetPixel(x + 3, y-2, clr);
  507. pDC->SetPixel(x + 4, y-2, clr);
  508. pDC->SetPixel(x + 1, y-1, clr);
  509. pDC->SetPixel(x + 2, y-1, clr);
  510. // inner border
  511. for (i = 0; i < 7; ++i)
  512. pDC->SetPixel(x + 3, y + 2 + i, clr);
  513. pDC->SetPixel(x + 4, y + 9, clr);
  514. pDC->SetPixel(x + 5, y + 9, clr);
  515. pDC->SetPixel(x + 6, y + 10, clr);
  516. pDC->SetPixel(x + 7, y + 10, clr);
  517. for (i = 0; i < 3; ++i)
  518. pDC->SetPixel(x + 8 + i, y + 11, clr);
  519. pDC->SetPixel(x + 11, y + 10, clr);
  520. pDC->SetPixel(x + 12, y + 10, clr);
  521. pDC->SetPixel(x + 13, y + 9, clr);
  522. pDC->SetPixel(x + 14, y + 9, clr);
  523. for (i = 0; i < 7; ++i)
  524. pDC->SetPixel(x + 15, y + 2 + i, clr);
  525. pDC->SetPixel(x + 13, y + 1, clr);
  526. pDC->SetPixel(x + 14, y + 1, clr);
  527. pDC->SetPixel(x + 11, y, clr);
  528. pDC->SetPixel(x + 12, y, clr);
  529. for (i = 0; i < 3; ++i)
  530. pDC->SetPixel(x + 8 + i, y-1, clr);
  531. pDC->SetPixel(x + 6, y, clr);
  532. pDC->SetPixel(x + 7, y, clr);
  533. pDC->SetPixel(x + 4, y + 1, clr);
  534. pDC->SetPixel(x + 5, y + 1, clr);
  535. // fill inside.
  536. clr = RGB(0xff, 0xff, 0xff);
  537. x++;
  538. for (i = 0; i < 11; ++i)
  539. {
  540. pDC->SetPixel(x, y + i, clr);
  541. pDC->SetPixel(x + 1, y + i, clr);
  542. }
  543. for (i = 0; i < 3; ++i)
  544. pDC->SetPixel(x + 2, y + 9 + i, clr);
  545. pDC->SetPixel(x + 3, y + 10, clr);
  546. pDC->SetPixel(x + 3, y + 11, clr);
  547. for (i = 0; i < 3; ++i)
  548. pDC->SetPixel(x + 4, y + 10 + i, clr);
  549. pDC->SetPixel(x + 5, y + 11, clr);
  550. pDC->SetPixel(x + 5, y + 12, clr);
  551. for (i = 0; i < 3; ++i)
  552. pDC->SetPixel(x + 6, y + 11 + i, clr);
  553. pDC->SetPixel(x + 7, y + 12, clr);
  554. pDC->SetPixel(x + 7, y + 13, clr);
  555. pDC->SetPixel(x + 8, y + 12, clr);
  556. pDC->SetPixel(x + 8, y + 13, clr);
  557. pDC->SetPixel(x + 9, y + 12, clr);
  558. pDC->SetPixel(x + 9, y + 13, clr);
  559. for (i = 0; i < 3; ++i)
  560. pDC->SetPixel(x + 10, y + 11 + i, clr);
  561. pDC->SetPixel(x + 11, y + 11, clr);
  562. pDC->SetPixel(x + 11, y + 12, clr);
  563. for (i = 0; i < 3; ++i)
  564. pDC->SetPixel(x + 12, y + 10 + i, clr);
  565. pDC->SetPixel(x + 13, y + 10, clr);
  566. pDC->SetPixel(x + 13, y + 11, clr);
  567. for (i = 0; i < 3; ++i)
  568. pDC->SetPixel(x + 14, y + 9 + i, clr);
  569. for (i = 0; i < 11; ++i)
  570. {
  571. pDC->SetPixel(x + 15, y + i, clr);
  572. pDC->SetPixel(x + 16, y + i, clr);
  573. }
  574. for (i = 0; i < 3; ++i)
  575. pDC->SetPixel(x + 14, y-1 + i, clr);
  576. pDC->SetPixel(x + 13, y, clr);
  577. pDC->SetPixel(x + 13, y-1, clr);
  578. for (i = 0; i < 3; ++i)
  579. pDC->SetPixel(x + 12, y-2 + i, clr);
  580. pDC->SetPixel(x + 11, y-1, clr);
  581. pDC->SetPixel(x + 11, y-2, clr);
  582. for (i = 0; i < 3; ++i)
  583. pDC->SetPixel(x + 10, y-3 + i, clr);
  584. pDC->SetPixel(x + 7, y-2, clr);
  585. pDC->SetPixel(x + 7, y-3, clr);
  586. pDC->SetPixel(x + 8, y-2, clr);
  587. pDC->SetPixel(x + 8, y-3, clr);
  588. pDC->SetPixel(x + 9, y-2, clr);
  589. pDC->SetPixel(x + 9, y-3, clr);
  590. for (i = 0; i < 3; ++i)
  591. pDC->SetPixel(x + 6, y-3 + i, clr);
  592. pDC->SetPixel(x + 5, y-1, clr);
  593. pDC->SetPixel(x + 5, y-2, clr);
  594. for (i = 0; i < 3; ++i)
  595. pDC->SetPixel(x + 4, y-2 + i, clr);
  596. pDC->SetPixel(x + 3, y, clr);
  597. pDC->SetPixel(x + 3, y-1, clr);
  598. for (i = 0; i < 3; ++i)
  599. pDC->SetPixel(x + 2, y-1 + i, clr);
  600. }
  601. void CXTColorHex::DrawCell(CDC* pDC, CPoint point, COLORREF clr, int l, int u, int r, int d)
  602. {
  603. HEXCOLOR_CELL* pCI = new HEXCOLOR_CELL;
  604. CPen penNew(PS_SOLID, 1, clr);
  605. CPen* pOldPen = pDC->SelectObject(&penNew);
  606. pCI->clr = clr;
  607. pCI->bSmall = TRUE;
  608. pCI->pPoint = new CPoint[168];
  609. pCI->direction[0] = l;
  610. pCI->direction[1] = u;
  611. pCI->direction[2] = r;
  612. pCI->direction[3] = d;
  613. m_arCells.AddTail(pCI);
  614. if (clr == m_clrColor)
  615. {
  616. m_ptCurrent.x = point.x;
  617. m_ptCurrent.y = point.y;
  618. }
  619. int idx = 0;
  620. int i;
  621. for (i = 0; i < 9; ++i)
  622. {
  623. CPoint point1(point.x, point.y + i);
  624. pDC->SetPixel(point1, clr);
  625. if (pCI != NULL)
  626. {
  627. pCI->pPoint[idx] = point1;
  628. idx++;
  629. }
  630. CPoint point2(point.x + 1, point.y + i);
  631. pDC->SetPixel(point2, clr);
  632. if (pCI != NULL)
  633. {
  634. pCI->pPoint[idx] = point2;
  635. idx++;
  636. }
  637. }
  638. for (i = 0; i < 11; ++i)
  639. {
  640. CPoint point1(point.x + 2, (point.y-1)+i);
  641. pDC->SetPixel(point1, clr);
  642. if (pCI != NULL)
  643. {
  644. pCI->pPoint[idx] = point1;
  645. idx++;
  646. }
  647. CPoint point2(point.x + 3, (point.y-1)+i);
  648. pDC->SetPixel(point2, clr);
  649. if (pCI != NULL)
  650. {
  651. pCI->pPoint[idx] = point2;
  652. idx++;
  653. }
  654. }
  655. for (i = 0; i < 13; ++i)
  656. {
  657. CPoint point1(point.x + 4, (point.y-2)+i);
  658. pDC->SetPixel(point1, clr);
  659. if (pCI != NULL)
  660. {
  661. pCI->pPoint[idx] = point1;
  662. idx++;
  663. }
  664. CPoint point2(point.x + 5, (point.y-2)+i);
  665. pDC->SetPixel(point2, clr);
  666. if (pCI != NULL)
  667. {
  668. pCI->pPoint[idx] = point2;
  669. idx++;
  670. }
  671. }
  672. for (i = 0; i < 15; ++i)
  673. {
  674. CPoint point1(point.x + 6, (point.y-3)+i);
  675. pDC->SetPixel(point1, clr);
  676. if (pCI != NULL)
  677. {
  678. pCI->pPoint[idx] = point1;
  679. idx++;
  680. }
  681. CPoint point2(point.x + 7, (point.y-3)+i);
  682. pDC->SetPixel(point2, clr);
  683. if (pCI != NULL)
  684. {
  685. pCI->pPoint[idx] = point2;
  686. idx++;
  687. }
  688. CPoint point3(point.x + 8, (point.y-3)+i);
  689. pDC->SetPixel(point3, clr);
  690. if (pCI != NULL)
  691. {
  692. pCI->pPoint[idx] = point3;
  693. idx++;
  694. }
  695. }
  696. for (i = 0; i < 13; ++i)
  697. {
  698. CPoint point1(point.x + 9, (point.y-2)+i);
  699. pDC->SetPixel(point1, clr);
  700. if (pCI != NULL)
  701. {
  702. pCI->pPoint[idx] = point1;
  703. idx++;
  704. }
  705. CPoint point2(point.x + 10, (point.y-2)+i);
  706. pDC->SetPixel(point2, clr);
  707. if (pCI != NULL)
  708. {
  709. pCI->pPoint[idx] = point2;
  710. idx++;
  711. }
  712. }
  713. for (i = 0; i < 11; ++i)
  714. {
  715. CPoint point1(point.x + 11, (point.y-1)+i);
  716. pDC->SetPixel(point1, clr);
  717. if (pCI != NULL)
  718. {
  719. pCI->pPoint[idx] = point1;
  720. idx++;
  721. }
  722. CPoint point2(point.x + 12, (point.y-1)+i);
  723. pDC->SetPixel(point2, clr);
  724. if (pCI != NULL)
  725. {
  726. pCI->pPoint[idx] = point2;
  727. idx++;
  728. }
  729. }
  730. for (i = 0; i < 9; ++i)
  731. {
  732. CPoint point1(point.x + 13, point.y + i);
  733. pDC->SetPixel(point1, clr);
  734. if (pCI != NULL)
  735. {
  736. pCI->pPoint[idx] = point1;
  737. idx++;
  738. }
  739. }
  740. pDC->SelectObject(pOldPen);
  741. }
  742. void CXTColorHex::DrawLargeCell(CDC* pDC, CPoint point, COLORREF clr, int l, int u, int r, int d)
  743. {
  744. HEXCOLOR_CELL* pCI = new HEXCOLOR_CELL;
  745. CPen penNew(PS_SOLID, 1, clr);
  746. CPen* pOldPen = pDC->SelectObject(&penNew);
  747. pCI->clr = clr;
  748. pCI->bSmall = FALSE;
  749. pCI->pPoint = new CPoint[691];
  750. pCI->direction[0] = l;
  751. pCI->direction[1] = u;
  752. pCI->direction[2] = r;
  753. pCI->direction[3] = d;
  754. m_arCells.AddTail(pCI);
  755. if (clr == m_clrColor)
  756. {
  757. m_ptCurrent.x = point.x;
  758. m_ptCurrent.y = point.y;
  759. }
  760. int idx = 0;
  761. int i;
  762. for (i = 0; i < 17; ++i)
  763. {
  764. CPoint point1(point.x, point.y + i);
  765. pDC->SetPixel(point1, clr);
  766. if (pCI != NULL)
  767. {
  768. pCI->pPoint[idx] = point1;
  769. idx++;
  770. }
  771. CPoint point2(point.x + 1, point.y + i);
  772. pDC->SetPixel(point2, clr);
  773. if (pCI != NULL)
  774. {
  775. pCI->pPoint[idx] = point2;
  776. idx++;
  777. }
  778. }
  779. for (i = 0; i < 19; ++i)
  780. {
  781. CPoint point1(point.x + 2, (point.y-1)+i);
  782. pDC->SetPixel(point1, clr);
  783. if (pCI != NULL)
  784. {
  785. pCI->pPoint[idx] = point1;
  786. idx++;
  787. }
  788. CPoint point2(point.x + 3, (point.y-1)+i);
  789. pDC->SetPixel(point2, clr);
  790. if (pCI != NULL)
  791. {
  792. pCI->pPoint[idx] = point2;
  793. idx++;
  794. }
  795. }
  796. for (i = 0; i < 21; ++i)
  797. {
  798. CPoint point1(point.x + 4, (point.y-2)+i);
  799. pDC->SetPixel(point1, clr);
  800. if (pCI != NULL)
  801. {
  802. pCI->pPoint[idx] = point1;
  803. idx++;
  804. }
  805. CPoint point2(point.x + 5, (point.y-2)+i);
  806. pDC->SetPixel(point2, clr);
  807. if (pCI != NULL)
  808. {
  809. pCI->pPoint[idx] = point2;
  810. idx++;
  811. }
  812. }
  813. for (i = 0; i < 23; ++i)
  814. {
  815. CPoint point1(point.x + 6, (point.y-3)+i);
  816. pDC->SetPixel(point1, clr);
  817. if (pCI != NULL)
  818. {
  819. pCI->pPoint[idx] = point1;
  820. idx++;
  821. }
  822. }
  823. for (i = 0; i < 25; ++i)
  824. {
  825. CPoint point1(point.x + 7, (point.y-4)+i);
  826. pDC->SetPixel(point1, clr);
  827. if (pCI != NULL)
  828. {
  829. pCI->pPoint[idx] = point1;
  830. idx++;
  831. }
  832. CPoint point2(point.x + 8, (point.y-4)+i);
  833. pDC->SetPixel(point2, clr);
  834. if (pCI != NULL)
  835. {
  836. pCI->pPoint[idx] = point2;
  837. idx++;
  838. }
  839. }
  840. for (i = 0; i < 27; ++i)
  841. {
  842. CPoint point1(point.x + 9, (point.y-5)+i);
  843. pDC->SetPixel(point1, clr);
  844. if (pCI != NULL)
  845. {
  846. pCI->pPoint[idx] = point1;
  847. idx++;
  848. }
  849. CPoint point2(point.x + 10, (point.y-5)+i);
  850. pDC->SetPixel(point2, clr);
  851. if (pCI != NULL)
  852. {
  853. pCI->pPoint[idx] = point2;
  854. idx++;
  855. }
  856. }
  857. for (i = 0; i < 29; ++i)
  858. {
  859. CPoint point1(point.x + 11, (point.y-6)+i);
  860. pDC->SetPixel(point1, clr);
  861. if (pCI != NULL)
  862. {
  863. pCI->pPoint[idx] = point1;
  864. idx++;
  865. }
  866. CPoint point2(point.x + 12, (point.y-6)+i);
  867. pDC->SetPixel(point2, clr);
  868. if (pCI != NULL)
  869. {
  870. pCI->pPoint[idx] = point2;
  871. idx++;
  872. }
  873. }
  874. for (i = 0; i < 31; ++i)
  875. {
  876. CPoint point1(point.x + 13, (point.y-7)+i);
  877. pDC->SetPixel(point1, clr);
  878. if (pCI != NULL)
  879. {
  880. pCI->pPoint[idx] = point1;
  881. idx++;
  882. }
  883. CPoint point2(point.x + 14, (point.y-7)+i);
  884. pDC->SetPixel(point2, clr);
  885. if (pCI != NULL)
  886. {
  887. pCI->pPoint[idx] = point2;
  888. idx++;
  889. }
  890. CPoint point3(point.x + 15, (point.y-7)+i);
  891. pDC->SetPixel(point3, clr);
  892. if (pCI != NULL)
  893. {
  894. pCI->pPoint[idx] = point3;
  895. idx++;
  896. }
  897. }
  898. for (i = 0; i < 29; ++i)
  899. {
  900. CPoint point1(point.x + 16, (point.y-6)+i);
  901. pDC->SetPixel(point1, clr);
  902. if (pCI != NULL)
  903. {
  904. pCI->pPoint[idx] = point1;
  905. idx++;
  906. }
  907. CPoint point2(point.x + 17, (point.y-6)+i);
  908. pDC->SetPixel(point2, clr);
  909. if (pCI != NULL)
  910. {
  911. pCI->pPoint[idx] = point2;
  912. idx++;
  913. }
  914. }
  915. for (i = 0; i < 27; ++i)
  916. {
  917. CPoint point1(point.x + 18, (point.y-5)+i);
  918. pDC->SetPixel(point1, clr);
  919. if (pCI != NULL)
  920. {
  921. pCI->pPoint[idx] = point1;
  922. idx++;
  923. }
  924. CPoint point2(point.x + 19, (point.y-5)+i);
  925. pDC->SetPixel(point2, clr);
  926. if (pCI != NULL)
  927. {
  928. pCI->pPoint[idx] = point2;
  929. idx++;
  930. }
  931. }
  932. for (i = 0; i < 25; ++i)
  933. {
  934. CPoint point1(point.x + 20, (point.y-4)+i);
  935. pDC->SetPixel(point1, clr);
  936. if (pCI != NULL)
  937. {
  938. pCI->pPoint[idx] = point1;
  939. idx++;
  940. }
  941. CPoint point2(point.x + 21, (point.y-4)+i);
  942. pDC->SetPixel(point2, clr);
  943. if (pCI != NULL)
  944. {
  945. pCI->pPoint[idx] = point2;
  946. idx++;
  947. }
  948. }
  949. for (i = 0; i < 23; ++i)
  950. {
  951. CPoint point1(point.x + 22, (point.y-3)+i);
  952. pDC->SetPixel(point1, clr);
  953. if (pCI != NULL)
  954. {
  955. pCI->pPoint[idx] = point1;
  956. idx++;
  957. }
  958. }
  959. for (i = 0; i < 21; ++i)
  960. {
  961. CPoint point1(point.x + 23, (point.y-2)+i);
  962. pDC->SetPixel(point1, clr);
  963. if (pCI != NULL)
  964. {
  965. pCI->pPoint[idx] = point1;
  966. idx++;
  967. }
  968. CPoint point2(point.x + 24, (point.y-2)+i);
  969. pDC->SetPixel(point2, clr);
  970. if (pCI != NULL)
  971. {
  972. pCI->pPoint[idx] = point2;
  973. idx++;
  974. }
  975. }
  976. for (i = 0; i < 19; ++i)
  977. {
  978. CPoint point1(point.x + 25, (point.y-1)+i);
  979. pDC->SetPixel(point1, clr);
  980. if (pCI != NULL)
  981. {
  982. pCI->pPoint[idx] = point1;
  983. idx++;
  984. }
  985. CPoint point2(point.x + 26, (point.y-1)+i);
  986. pDC->SetPixel(point2, clr);
  987. if (pCI != NULL)
  988. {
  989. pCI->pPoint[idx] = point2;
  990. idx++;
  991. }
  992. }
  993. for (i = 0; i < 17; ++i)
  994. {
  995. CPoint point1(point.x + 27, point.y + i);
  996. pDC->SetPixel(point1, clr);
  997. if (pCI != NULL)
  998. {
  999. pCI->pPoint[idx] = point1;
  1000. idx++;
  1001. }
  1002. CPoint point2(point.x + 28, point.y + i);
  1003. pDC->SetPixel(point2, clr);
  1004. if (pCI != NULL)
  1005. {
  1006. pCI->pPoint[idx] = point2;
  1007. idx++;
  1008. }
  1009. }
  1010. pDC->SelectObject(pOldPen);
  1011. }
  1012. void CXTColorHex::DrawColorSelector(CDC* pDC)
  1013. {
  1014. CXTPClientRect rcClient(this);
  1015. int x = ((rcClient.Width()-CX_HEXDISP)/2)+CX_ANCHOR;
  1016. int y = CY_ANCHOR;
  1017. int i = -1;
  1018. DrawCell(pDC, CPoint(x, y), clrSelArray[++i], -1, -1, 1, 8);
  1019. DrawCell(pDC, CPoint(x + 14, y), clrSelArray[++i], 0, -1, 2, 9);
  1020. DrawCell(pDC, CPoint(x + 28, y), clrSelArray[++i], 1, -1, 3, 10);
  1021. DrawCell(pDC, CPoint(x + 42, y), clrSelArray[++i], 2, -1, 4, 11);
  1022. DrawCell(pDC, CPoint(x + 56, y), clrSelArray[++i], 3, -1, 5, 12);
  1023. DrawCell(pDC, CPoint(x + 70, y), clrSelArray[++i], 4, -1, 6, 13);
  1024. DrawCell(pDC, CPoint(x + 84, y), clrSelArray[++i], 5, -1, 7, 14);
  1025. x -= 7;
  1026. y += 12;
  1027. DrawCell(pDC, CPoint(x, y), clrSelArray[++i], 6, -1, 8, 16);
  1028. DrawCell(pDC, CPoint(x + 14, y), clrSelArray[++i], 7, 0, 9, 17);
  1029. DrawCell(pDC, CPoint(x + 28, y), clrSelArray[++i], 8, 1, 10, 18);
  1030. DrawCell(pDC, CPoint(x + 42, y), clrSelArray[++i], 9, 2, 11, 19);
  1031. DrawCell(pDC, CPoint(x + 56, y), clrSelArray[++i], 10, 3, 12, 20);
  1032. DrawCell(pDC, CPoint(x + 70, y), clrSelArray[++i], 11, 4, 13, 21);
  1033. DrawCell(pDC, CPoint(x + 84, y), clrSelArray[++i], 12, 5, 14, 22);
  1034. DrawCell(pDC, CPoint(x + 98, y), clrSelArray[++i], 13, 6, 15, 23);
  1035. x -= 7;
  1036. y += 12;
  1037. DrawCell(pDC, CPoint(x, y), clrSelArray[++i], 14, 6, 16, 25);
  1038. DrawCell(pDC, CPoint(x + 14, y), clrSelArray[++i], 15, 7, 17, 26);
  1039. DrawCell(pDC, CPoint(x + 28, y), clrSelArray[++i], 16, 8, 18, 27);
  1040. DrawCell(pDC, CPoint(x + 42, y), clrSelArray[++i], 17, 9, 19, 28);
  1041. DrawCell(pDC, CPoint(x + 56, y), clrSelArray[++i], 18, 10, 20, 29);
  1042. DrawCell(pDC, CPoint(x + 70, y), clrSelArray[++i], 19, 11, 21, 30);
  1043. DrawCell(pDC, CPoint(x + 84, y), clrSelArray[++i], 20, 12, 22, 31);
  1044. DrawCell(pDC, CPoint(x + 98, y), clrSelArray[++i], 21, 13, 23, 32);
  1045. DrawCell(pDC, CPoint(x + 112, y), clrSelArray[++i], 22, 14, 24, 33);
  1046. x -= 7;
  1047. y += 12;
  1048. DrawCell(pDC, CPoint(x, y), clrSelArray[++i], 23, 14, 25, 35);
  1049. DrawCell(pDC, CPoint(x + 14, y), clrSelArray[++i], 24, 15, 26, 36);
  1050. DrawCell(pDC, CPoint(x + 28, y), clrSelArray[++i], 25, 16, 27, 37);
  1051. DrawCell(pDC, CPoint(x + 42, y), clrSelArray[++i], 26, 17, 28, 38);
  1052. DrawCell(pDC, CPoint(x + 56, y), clrSelArray[++i], 27, 18, 29, 39);
  1053. DrawCell(pDC, CPoint(x + 70, y), clrSelArray[++i], 28, 19, 30, 40);
  1054. DrawCell(pDC, CPoint(x + 84, y), clrSelArray[++i], 29, 20, 31, 41);
  1055. DrawCell(pDC, CPoint(x + 98, y), clrSelArray[++i], 30, 21, 32, 42);
  1056. DrawCell(pDC, CPoint(x + 112, y), clrSelArray[++i], 31, 22, 33, 43);
  1057. DrawCell(pDC, CPoint(x + 126, y), clrSelArray[++i], 32, 23, 34, 44);
  1058. x -= 7;
  1059. y += 12;
  1060. DrawCell(pDC, CPoint(x, y), clrSelArray[++i], 33, 23, 35, 46);
  1061. DrawCell(pDC, CPoint(x + 14, y), clrSelArray[++i], 34, 24, 36, 47);
  1062. DrawCell(pDC, CPoint(x + 28, y), clrSelArray[++i], 35, 25, 37, 48);
  1063. DrawCell(pDC, CPoint(x + 42, y), clrSelArray[++i], 36, 26, 38, 49);
  1064. DrawCell(pDC, CPoint(x + 56, y), clrSelArray[++i], 37, 27, 39, 50);
  1065. DrawCell(pDC, CPoint(x + 70, y), clrSelArray[++i], 38, 28, 40, 51);
  1066. DrawCell(pDC, CPoint(x + 84, y), clrSelArray[++i], 39, 29, 41, 52);
  1067. DrawCell(pDC, CPoint(x + 98, y), clrSelArray[++i], 40, 30, 42, 53);
  1068. DrawCell(pDC, CPoint(x + 112, y), clrSelArray[++i], 41, 31, 43, 54);
  1069. DrawCell(pDC, CPoint(x + 126, y), clrSelArray[++i], 42, 32, 44, 55);
  1070. DrawCell(pDC, CPoint(x + 140, y), clrSelArray[++i], 43, 33, 45, 56);
  1071. x -= 7;
  1072. y += 12;
  1073. DrawCell(pDC, CPoint(x, y), clrSelArray[++i], 44, 33, 46, 58);
  1074. DrawCell(pDC, CPoint(x + 14, y), clrSelArray[++i], 45, 34, 47, 59);
  1075. DrawCell(pDC, CPoint(x + 28, y), clrSelArray[++i], 46, 35, 48, 60);
  1076. DrawCell(pDC, CPoint(x + 42, y), clrSelArray[++i], 47, 36, 49, 61);
  1077. DrawCell(pDC, CPoint(x + 56, y), clrSelArray[++i], 48, 37, 50, 62);
  1078. DrawCell(pDC, CPoint(x + 70, y), clrSelArray[++i], 49, 38, 51, 63);
  1079. DrawCell(pDC, CPoint(x + 84, y), clrSelArray[++i], 50, 39, 52, 64);
  1080. DrawCell(pDC, CPoint(x + 98, y), clrSelArray[++i], 51, 40, 53, 65);
  1081. DrawCell(pDC, CPoint(x + 112, y), clrSelArray[++i], 52, 41, 54, 66);
  1082. DrawCell(pDC, CPoint(x + 126, y), clrSelArray[++i], 53, 42, 55, 67);
  1083. DrawCell(pDC, CPoint(x + 140, y), clrSelArray[++i], 54, 43, 56, 68);
  1084. DrawCell(pDC, CPoint(x + 154, y), clrSelArray[++i], 55, 44, 57, 69);
  1085. x -= 7;
  1086. y += 12;
  1087. DrawCell(pDC, CPoint(x, y), clrSelArray[++i], 56, 44, 58, 70);
  1088. DrawCell(pDC, CPoint(x + 14, y), clrSelArray[++i], 57, 45, 59, 71);
  1089. DrawCell(pDC, CPoint(x + 28, y), clrSelArray[++i], 58, 46, 60, 72);
  1090. DrawCell(pDC, CPoint(x + 42, y), clrSelArray[++i], 59, 47, 61, 73);
  1091. DrawCell(pDC, CPoint(x + 56, y), clrSelArray[++i], 60, 48, 62, 74);
  1092. DrawCell(pDC, CPoint(x + 70, y), clrSelArray[++i], 61, 49, 63, 75);
  1093. DrawCell(pDC, CPoint(x + 84, y), clrSelArray[++i], 62, 50, 64, 76);
  1094. DrawCell(pDC, CPoint(x + 98, y), clrSelArray[++i], 63, 51, 65, 77);
  1095. DrawCell(pDC, CPoint(x + 112, y), clrSelArray[++i], 64, 52, 66, 78);
  1096. DrawCell(pDC, CPoint(x + 126, y), clrSelArray[++i], 65, 53, 67, 79);
  1097. DrawCell(pDC, CPoint(x + 140, y), clrSelArray[++i], 66, 54, 68, 80);
  1098. DrawCell(pDC, CPoint(x + 154, y), clrSelArray[++i], 67, 55, 69, 81);
  1099. DrawCell(pDC, CPoint(x + 168, y), clrSelArray[++i], 68, 56, 70, 82);
  1100. x += 7;
  1101. y += 12;
  1102. DrawCell(pDC, CPoint(x, y), clrSelArray[++i], 69, 57, 71, 82);
  1103. DrawCell(pDC, CPoint(x + 14, y), clrSelArray[++i], 70, 58, 72, 83);
  1104. DrawCell(pDC, CPoint(x + 28, y), clrSelArray[++i], 71, 59, 73, 84);
  1105. DrawCell(pDC, CPoint(x + 42, y), clrSelArray[++i], 72, 60, 74, 85);
  1106. DrawCell(pDC, CPoint(x + 56, y), clrSelArray[++i], 73, 61, 75, 86);
  1107. DrawCell(pDC, CPoint(x + 70, y), clrSelArray[++i], 74, 62, 76, 87);
  1108. DrawCell(pDC, CPoint(x + 84, y), clrSelArray[++i], 75, 63, 77, 88);
  1109. DrawCell(pDC, CPoint(x + 98, y), clrSelArray[++i], 76, 64, 78, 89);
  1110. DrawCell(pDC, CPoint(x + 112, y), clrSelArray[++i], 77, 65, 79, 90);
  1111. DrawCell(pDC, CPoint(x + 126, y), clrSelArray[++i], 78, 66, 80, 91);
  1112. DrawCell(pDC, CPoint(x + 140, y), clrSelArray[++i], 79, 67, 81, 92);
  1113. DrawCell(pDC, CPoint(x + 154, y), clrSelArray[++i], 80, 68, 82, 93);
  1114. x += 7;
  1115. y += 12;
  1116. DrawCell(pDC, CPoint(x, y), clrSelArray[++i], 81, 70, 83, 93);
  1117. DrawCell(pDC, CPoint(x + 14, y), clrSelArray[++i], 82, 71, 84, 94);
  1118. DrawCell(pDC, CPoint(x + 28, y), clrSelArray[++i], 83, 72, 85, 95);
  1119. DrawCell(pDC, CPoint(x + 42, y), clrSelArray[++i], 84, 73, 86, 96);
  1120. DrawCell(pDC, CPoint(x + 56, y), clrSelArray[++i], 85, 74, 87, 97);
  1121. DrawCell(pDC, CPoint(x + 70, y), clrSelArray[++i], 86, 75, 88, 98);
  1122. DrawCell(pDC, CPoint(x + 84, y), clrSelArray[++i], 87, 76, 89, 99);
  1123. DrawCell(pDC, CPoint(x + 98, y), clrSelArray[++i], 88, 77, 90, 100);
  1124. DrawCell(pDC, CPoint(x + 112, y), clrSelArray[++i], 89, 78, 91, 101);
  1125. DrawCell(pDC, CPoint(x + 126, y), clrSelArray[++i], 90, 79, 92, 102);
  1126. DrawCell(pDC, CPoint(x + 140, y), clrSelArray[++i], 91, 80, 93, 103);
  1127. x += 7;
  1128. y += 12;
  1129. DrawCell(pDC, CPoint(x, y), clrSelArray[++i], 92, 82, 94, 103);
  1130. DrawCell(pDC, CPoint(x + 14, y), clrSelArray[++i], 93, 83, 95, 104);
  1131. DrawCell(pDC, CPoint(x + 28, y), clrSelArray[++i], 94, 84, 96, 105);
  1132. DrawCell(pDC, CPoint(x + 42, y), clrSelArray[++i], 95, 85, 97, 106);
  1133. DrawCell(pDC, CPoint(x + 56, y), clrSelArray[++i], 96, 86, 98, 107);
  1134. DrawCell(pDC, CPoint(x + 70, y), clrSelArray[++i], 97, 87, 99, 108);
  1135. DrawCell(pDC, CPoint(x + 84, y), clrSelArray[++i], 98, 88, 100, 109);
  1136. DrawCell(pDC, CPoint(x + 98, y), clrSelArray[++i], 99, 89, 101, 110);
  1137. DrawCell(pDC, CPoint(x + 112, y), clrSelArray[++i], 100, 90, 102, 111);
  1138. DrawCell(pDC, CPoint(x + 126, y), clrSelArray[++i], 101, 91, 103, 112);
  1139. x += 7;
  1140. y += 12;
  1141. DrawCell(pDC, CPoint(x, y), clrSelArray[++i], 102, 93, 104, 112);
  1142. DrawCell(pDC, CPoint(x + 14, y), clrSelArray[++i], 103, 94, 105, 113);
  1143. DrawCell(pDC, CPoint(x + 28, y), clrSelArray[++i], 104, 95, 106, 114);
  1144. DrawCell(pDC, CPoint(x + 42, y), clrSelArray[++i], 105, 96, 107, 115);
  1145. DrawCell(pDC, CPoint(x + 56, y), clrSelArray[++i], 106, 97, 108, 116);
  1146. DrawCell(pDC, CPoint(x + 70, y), clrSelArray[++i], 107, 98, 109, 117);
  1147. DrawCell(pDC, CPoint(x + 84, y), clrSelArray[++i], 108, 99, 110, 118);
  1148. DrawCell(pDC, CPoint(x + 98, y), clrSelArray[++i], 109, 100, 111, 119);
  1149. DrawCell(pDC, CPoint(x + 112, y), clrSelArray[++i], 110, 101, 112, 120);
  1150. x += 7;
  1151. y += 12;
  1152. DrawCell(pDC, CPoint(x, y), clrSelArray[++i], 111, 103, 113, 120);
  1153. DrawCell(pDC, CPoint(x + 14, y), clrSelArray[++i], 112, 104, 114, 121);
  1154. DrawCell(pDC, CPoint(x + 28, y), clrSelArray[++i], 113, 105, 115, 122);
  1155. DrawCell(pDC, CPoint(x + 42, y), clrSelArray[++i], 114, 106, 116, 123);
  1156. DrawCell(pDC, CPoint(x + 56, y), clrSelArray[++i], 115, 107, 117, 124);
  1157. DrawCell(pDC, CPoint(x + 70, y), clrSelArray[++i], 116, 108, 118, 125);
  1158. DrawCell(pDC, CPoint(x + 84, y), clrSelArray[++i], 117, 109, 119, 126);
  1159. DrawCell(pDC, CPoint(x + 98, y), clrSelArray[++i], 118, 110, 120, 142);
  1160. x += 7;
  1161. y += 12;
  1162. DrawCell(pDC, CPoint(x, y), clrSelArray[++i], 119, 112, 121, 121);
  1163. DrawCell(pDC, CPoint(x + 14, y), clrSelArray[++i], 120, 113, 122, 122);
  1164. DrawCell(pDC, CPoint(x + 28, y), clrSelArray[++i], 121, 114, 123, 123);
  1165. DrawCell(pDC, CPoint(x + 42, y), clrSelArray[++i], 122, 115, 124, 124);
  1166. DrawCell(pDC, CPoint(x + 56, y), clrSelArray[++i], 123, 116, 125, 125);
  1167. DrawCell(pDC, CPoint(x + 70, y), clrSelArray[++i], 124, 117, 126, 126);
  1168. DrawCell(pDC, CPoint(x + 84, y), clrSelArray[++i], 125, 118, 142, 142);
  1169. // Grey scale colors.
  1170. x -= 7;
  1171. y += 25;
  1172. DrawCell(pDC, CPoint(x, y), clrSelArray[++i], 142, 142, 135, 135);
  1173. DrawCell(pDC, CPoint(x + 14, y), clrSelArray[++i], 135, 135, 136, 136);
  1174. DrawCell(pDC, CPoint(x + 28, y), clrSelArray[++i], 136, 136, 137, 137);
  1175. DrawCell(pDC, CPoint(x + 42, y), clrSelArray[++i], 137, 137, 138, 138);
  1176. DrawCell(pDC, CPoint(x + 56, y), clrSelArray[++i], 138, 138, 139, 139);
  1177. DrawCell(pDC, CPoint(x + 70, y), clrSelArray[++i], 139, 139, 140, 140);
  1178. DrawCell(pDC, CPoint(x + 84, y), clrSelArray[++i], 140, 140, 141, 141);
  1179. DrawCell(pDC, CPoint(x + 98, y), clrSelArray[++i], 141, 141, 143, 143);
  1180. x += 7;
  1181. y += 12;
  1182. DrawCell(pDC, CPoint(x, y), clrSelArray[++i], 127, 127, 128, 128);
  1183. DrawCell(pDC, CPoint(x + 14, y), clrSelArray[++i], 128, 128, 129, 129);
  1184. DrawCell(pDC, CPoint(x + 28, y), clrSelArray[++i], 129, 129, 130, 130);
  1185. DrawCell(pDC, CPoint(x + 42, y), clrSelArray[++i], 130, 130, 131, 131);
  1186. DrawCell(pDC, CPoint(x + 56, y), clrSelArray[++i], 131, 131, 132, 132);
  1187. DrawCell(pDC, CPoint(x + 70, y), clrSelArray[++i], 132, 132, 133, 133);
  1188. DrawCell(pDC, CPoint(x + 84, y), clrSelArray[++i], 133, 133, 134, 134);
  1189. x = (rcClient.Width() - CX_HEXDISP)/2;
  1190. DrawLargeCell(pDC, CPoint(x, y-12), clrSelArray[++i], 126, 126, 127, 127);
  1191. x = ((rcClient.Width() - CX_HEXDISP)/2) + (CX_HEXDISP-29);
  1192. DrawLargeCell(pDC, CPoint(x, y - 12), clrSelArray[++i], 134, 134, -1, -1);
  1193. }
  1194. void CXTColorHex::UpdateSelection(CPoint point)
  1195. {
  1196. COLORREF clr = ColorFromPoint(point);
  1197. if ((clr != (COLORREF)-1) && (m_clrColor != clr))
  1198. {
  1199. m_clrColor = clr;
  1200. GetParent()->SendMessage(XTWM_UPDATECOLOR,
  1201. (WPARAM)(COLORREF)m_clrColor);
  1202. CRect rc;
  1203. GetClientRect(&rc);
  1204. CClientDC dc(this);
  1205. CXTPBufferDC memDC(dc, rc);
  1206. memDC.DrawState(CPoint(0, 0), rc.Size(), &m_bmpPicker, DSS_NORMAL, 0);
  1207. SelectColorCell(&memDC);
  1208. }
  1209. }
  1210. void CXTColorHex::OnLButtonDown(UINT nFlags, CPoint point)
  1211. {
  1212. if (GetFocus() != this)
  1213. SetFocus();
  1214. UpdateSelection(point);
  1215. m_bLBtnDown = TRUE;
  1216. CWnd::OnLButtonDown(nFlags, point);
  1217. }
  1218. void CXTColorHex::OnLButtonDblClk(UINT nFlags, CPoint point)
  1219. {
  1220. CStatic::OnLButtonDblClk(nFlags, point);
  1221. if (GetFocus() != this)
  1222. SetFocus();
  1223. COLORREF clr = ColorFromPoint(point);
  1224. if (clr != (COLORREF)-1)
  1225. {
  1226. UpdateSelection(point);
  1227. m_bLBtnDown = TRUE;
  1228. CPropertyPage* pParentPage = (CPropertyPage*)GetParent();
  1229. ASSERT_VALID(pParentPage);
  1230. CPropertySheet* pParentSheet = (CPropertySheet*)pParentPage->GetParent();
  1231. ASSERT_VALID(pParentSheet);
  1232. pParentSheet->EndDialog(IDOK);
  1233. }
  1234. }
  1235. COLORREF CXTColorHex::ColorFromPoint(CPoint point)
  1236. {
  1237. POSITION pos;
  1238. for (pos = m_arCells.GetHeadPosition(); pos; m_arCells.GetNext(pos))
  1239. {
  1240. HEXCOLOR_CELL* pCI = m_arCells.GetAt(pos);
  1241. ASSERT(pCI != NULL);
  1242. if (pCI == NULL)
  1243. return (COLORREF)-1;
  1244. int nPixelCount = pCI->bSmall ? 168 : 691;
  1245. int i;
  1246. for (i = 0; i < nPixelCount; ++i)
  1247. {
  1248. if (point == pCI->pPoint[i])
  1249. {
  1250. m_ptCurrent = pCI->pPoint[0];
  1251. m_bSmallCell = pCI->bSmall;
  1252. return pCI->clr;
  1253. }
  1254. }
  1255. }
  1256. return (COLORREF)-1;
  1257. }
  1258. void CXTColorHex::OnLButtonUp(UINT nFlags, CPoint point)
  1259. {
  1260. m_bLBtnDown = FALSE;
  1261. CWnd::OnLButtonUp(nFlags, point);
  1262. }
  1263. void CXTColorHex::OnMouseMove(UINT nFlags, CPoint point)
  1264. {
  1265. if (m_bLBtnDown)
  1266. {
  1267. UpdateSelection(point);
  1268. }
  1269. CWnd::OnMouseMove(nFlags, point);
  1270. }
  1271. bool CXTColorHex::Init()
  1272. {
  1273. if (::IsWindow(m_hWnd))
  1274. {
  1275. ModifyStyle(NULL, SS_NOTIFY);
  1276. return true;
  1277. }
  1278. return false;
  1279. }
  1280. void CXTColorHex::PreSubclassWindow()
  1281. {
  1282. CWnd::PreSubclassWindow();
  1283. if (m_bPreSubclassInit)
  1284. {
  1285. // Initialize the control.
  1286. Init();
  1287. }
  1288. }
  1289. int CXTColorHex::OnCreate(LPCREATESTRUCT lpCreateStruct)
  1290. {
  1291. if (CWnd::OnCreate(lpCreateStruct) == -1)
  1292. return -1;
  1293. // Initialize the control.
  1294. Init();
  1295. return 0;
  1296. }
  1297. BOOL CXTColorHex::PreCreateWindow(CREATESTRUCT& cs)
  1298. {
  1299. if (!CWnd::PreCreateWindow(cs))
  1300. return FALSE;
  1301. // When creating controls dynamically Init() must
  1302. // be called from OnCreate() and not from
  1303. // PreSubclassWindow().
  1304. m_bPreSubclassInit = false;
  1305. return TRUE;
  1306. }
  1307. CXTColorHex::HEXCOLOR_CELL* CXTColorHex::GetColorCell(COLORREF clr)
  1308. {
  1309. bool bWhite = false;
  1310. POSITION pos;
  1311. for (pos = m_arCells.GetHeadPosition(); pos; m_arCells.GetNext(pos))
  1312. {
  1313. HEXCOLOR_CELL* pCI = m_arCells.GetAt(pos);
  1314. ASSERT(pCI != NULL);
  1315. if (!pCI)
  1316. continue;
  1317. if (clr == pCI->clr)
  1318. {
  1319. if (clr == RGB(0xff, 0xff, 0xff) && bWhite == false)
  1320. {
  1321. if (m_ptCurrent.y >= 176) // big hex selected
  1322. {
  1323. bWhite = true;
  1324. continue;
  1325. }
  1326. }
  1327. return pCI;
  1328. }
  1329. }
  1330. return NULL;
  1331. }
  1332. void CXTColorHex::SetSelectedColor(int iIndex)
  1333. {
  1334. if (iIndex != -1)
  1335. {
  1336. POSITION pos2 = m_arCells.FindIndex(iIndex);
  1337. ASSERT(pos2 != NULL);
  1338. HEXCOLOR_CELL* pClrCell = m_arCells.GetAt(pos2);
  1339. ASSERT(pClrCell != NULL);
  1340. if (pClrCell)
  1341. UpdateSelection(pClrCell->pPoint[0]);
  1342. }
  1343. }
  1344. void CXTColorHex::SetSelectedColor(COLORREF clr)
  1345. {
  1346. m_clrColor = clr;
  1347. int iIndex = -1;
  1348. POSITION pos;
  1349. for (pos = m_arCells.GetHeadPosition(); pos; m_arCells.GetNext(pos), ++iIndex)
  1350. {
  1351. HEXCOLOR_CELL* pCI = m_arCells.GetAt(pos);
  1352. ASSERT(pCI != NULL);
  1353. if (pCI && (clr == pCI->clr))
  1354. {
  1355. SetSelectedColor(iIndex);
  1356. }
  1357. }
  1358. }
  1359. BOOL CXTColorHex::PreTranslateMessage(MSG* pMsg)
  1360. {
  1361. switch (pMsg->message)
  1362. {
  1363. case WM_KEYDOWN:
  1364. {
  1365. HEXCOLOR_CELL* pClrCell = GetColorCell(m_clrColor);
  1366. if (pClrCell == NULL)
  1367. pClrCell = GetColorCell(RGB(0x00, 0x00, 0x00));
  1368. TCHAR vkey = (TCHAR)pMsg->wParam;
  1369. switch (vkey)
  1370. {
  1371. case VK_LEFT:
  1372. SetSelectedColor(pClrCell->direction[0]);
  1373. break;
  1374. case VK_UP:
  1375. SetSelectedColor(pClrCell->direction[1]);
  1376. break;
  1377. case VK_RIGHT:
  1378. SetSelectedColor(pClrCell->direction[2]);
  1379. break;
  1380. case VK_DOWN:
  1381. SetSelectedColor(pClrCell->direction[3]);
  1382. break;
  1383. case VK_RETURN:
  1384. case VK_SPACE:
  1385. CPropertyPage* pParentPage = (CPropertyPage*)GetParent();
  1386. ASSERT_VALID(pParentPage);
  1387. CPropertySheet* pParentSheet = (CPropertySheet*)pParentPage->GetParent();
  1388. ASSERT_VALID(pParentSheet);
  1389. pParentSheet->EndDialog(IDOK);
  1390. break;
  1391. }
  1392. }
  1393. break;
  1394. }
  1395. return CStatic::PreTranslateMessage(pMsg);
  1396. }
  1397. /////////////////////////////////////////////////////////////////////////////
  1398. // CXTColorPageStandard
  1399. BEGIN_MESSAGE_MAP(CXTColorPageStandard, CPropertyPage)
  1400. //{{AFX_MSG_MAP(CXTColorPageStandard)
  1401. //ON_WM_PAINT()
  1402. //ON_WM_ERASEBKGND()
  1403. //}}AFX_MSG_MAP
  1404. ON_MESSAGE(XTWM_UPDATECOLOR, OnUpdateColor)
  1405. END_MESSAGE_MAP()
  1406. /////////////////////////////////////////////////////////////////////////////
  1407. // CXTColorPageStandard construction/destruction
  1408. CXTColorPageStandard::CXTColorPageStandard(CXTColorDialog* pParentSheet)
  1409. : CPropertyPage(CXTColorPageStandard::IDD)
  1410. {
  1411. m_psp.dwFlags &= ~PSP_HASHELP;
  1412. m_pParentSheet = pParentSheet;
  1413. //{{AFX_DATA_INIT(CXTColorPageStandard)
  1414. //}}AFX_DATA_INIT
  1415. }
  1416. CXTColorPageStandard::~CXTColorPageStandard()
  1417. {
  1418. }
  1419. void CXTColorPageStandard::DoDataExchange(CDataExchange* pDX)
  1420. {
  1421. CPropertyPage::DoDataExchange(pDX);
  1422. //{{AFX_DATA_MAP(CXTColorPageStandard)
  1423. DDX_Control(pDX, XT_IDC_CLR_HEX, m_colorHex);
  1424. //}}AFX_DATA_MAP
  1425. }
  1426. LRESULT CXTColorPageStandard::OnUpdateColor(WPARAM wParam, LPARAM /*lParam*/)
  1427. {
  1428. m_pParentSheet->SetNewColor((COLORREF)wParam, FALSE);
  1429. return 0;
  1430. }