| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668 |
- // This is a part of the Microsoft Foundation Classes C++ library.
- // Copyright (C) 1992-1998 Microsoft Corporation
- // All rights reserved.
- //
- // This source code is only intended as a supplement to the
- // Microsoft Foundation Classes Reference and related
- // electronic documentation provided with the library.
- // See these sources for detailed information regarding the
- // Microsoft Foundation Classes product.
- #include "stdafx.h"
- #ifdef AFXCTL_PAGE_SEG
- #pragma code_seg(AFXCTL_PAGE_SEG)
- #endif
- #ifdef _DEBUG
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
- #define new DEBUG_NEW
- #define RGB_BUTTON_BLACK (GetSysColor(COLOR_WINDOWFRAME))
- #define RGB_BUTTON_WHITE (GetSysColor(COLOR_BTNHIGHLIGHT))
- #define RGB_BUTTON_LIGHT (GetSysColor(COLOR_BTNFACE))
- #define RGB_BUTTON_DARK (GetSysColor(COLOR_BTNSHADOW))
- //Colors : Standard colors for QcQp
- #define BLACK 0
- #define WHITE 1
- #define RED 2
- #define GREEN 3
- #define BLUE 4
- #define YELLOW 5
- #define MAGENTA 6
- #define CYAN 7
- #define GRAY 8
- #define LIGHTGRAY 9
- #define DARKRED 10
- #define DARKGREEN 11
- #define DARKBLUE 12
- #define LIGHTBROWN 13
- #define DARKMAGENTA 14
- #define DARKCYAN 15
- /////////////////////////////////////////////////////////////////////////////
- // Structure used to store information about the system colors
- struct SysColorsInfo
- {
- UINT nStrID; // The id of the resource describing this system color
- int nColor; // The system color index
- };
- // 3D Drawing helpers
- void _AfxDraw3DFrame(CDC *pDC, CRect rcBox, COLORREF colBottomRight,
- COLORREF colTopLeft);
- void _AfxDraw3DButtonFrame(CDC *pDC, CRect rcButton, BOOL fFocus);
- // Function to initialize the palette
- HPALETTE _AfxInitPalette(VOID);
- HPALETTE hPal;
- // The system colors information
- AFX_STATIC_DATA const SysColorsInfo _afxSysColorsList[] =
- {
- AFX_IDS_COLOR_DESKTOP, COLOR_BACKGROUND,
- AFX_IDS_COLOR_APPWORKSPACE, COLOR_APPWORKSPACE,
- AFX_IDS_COLOR_WNDBACKGND, COLOR_WINDOW,
- AFX_IDS_COLOR_WNDTEXT, COLOR_WINDOWTEXT,
- AFX_IDS_COLOR_MENUBAR, COLOR_MENU,
- AFX_IDS_COLOR_MENUTEXT, COLOR_MENUTEXT,
- AFX_IDS_COLOR_ACTIVEBAR, COLOR_ACTIVECAPTION,
- AFX_IDS_COLOR_INACTIVEBAR, COLOR_INACTIVECAPTION,
- AFX_IDS_COLOR_ACTIVETEXT, COLOR_CAPTIONTEXT,
- AFX_IDS_COLOR_INACTIVETEXT, COLOR_INACTIVECAPTIONTEXT,
- AFX_IDS_COLOR_ACTIVEBORDER, COLOR_ACTIVEBORDER,
- AFX_IDS_COLOR_INACTIVEBORDER, COLOR_INACTIVEBORDER,
- AFX_IDS_COLOR_WNDFRAME, COLOR_WINDOWFRAME,
- AFX_IDS_COLOR_SCROLLBARS, COLOR_SCROLLBAR,
- AFX_IDS_COLOR_BTNFACE, COLOR_BTNFACE,
- AFX_IDS_COLOR_BTNSHADOW, COLOR_BTNSHADOW,
- AFX_IDS_COLOR_BTNTEXT, COLOR_BTNTEXT,
- AFX_IDS_COLOR_BTNHIGHLIGHT, COLOR_BTNHIGHLIGHT,
- AFX_IDS_COLOR_DISABLEDTEXT, COLOR_GRAYTEXT,
- AFX_IDS_COLOR_HIGHLIGHT, COLOR_HIGHLIGHT,
- AFX_IDS_COLOR_HIGHLIGHTTEXT, COLOR_HIGHLIGHTTEXT,
- // End of list
- NULL, NULL
- };
- /////////////////////////////////////////////////////////////////////////////
- // CColorButton class
- // All buttons are initially unselected
- CColorButton::CColorButton()
- {
- m_fSelected = FALSE;
- }
- // Set the face color of the button
- void CColorButton::SetFaceColor(COLORREF colFace)
- {
- m_colFace = colFace;
- }
- // Return the palette reference for the button
- COLORREF CColorButton::colGetFaceColor()
- {
- return m_colFace;
- }
- // Set a color button's selection state
- void CColorButton::SetState(BOOL fSelected)
- {
- m_fSelected = fSelected;
- }
- // Static ID shows which color button generated the BN_CLICKED message
- UINT CColorButton::idClicked = 0;
- // Redraw the color button, and record a change in selection status
- void CColorButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
- {
- CDC *pDC;
- CPalette *pPal;
- CRect rcButton;
- CBrush *pBrush;
- // Get the palette for the item display context
- pPal = CPalette::FromHandle(hPal);
- VERIFY(pPal);
- // Get the device context from the context
- pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
- VERIFY(pDC);
- VERIFY(pDC->SelectPalette(pPal,0));
- pDC->RealizePalette();
- switch(lpDrawItemStruct->itemAction)
- {
- case ODA_SELECT:
- if (CButton::GetState() & 0x0004)
- {
- idClicked = lpDrawItemStruct->CtlID;
- // Redraw done via the BN_CLICKED notification
- }
- break;
- case ODA_DRAWENTIRE:
- rcButton = lpDrawItemStruct->rcItem;
- rcButton.InflateRect(-2, -2);
- if (m_fSelected)
- {
- _AfxDraw3DFrame(pDC, rcButton, RGB_BUTTON_DARK, RGB_BUTTON_WHITE);
- rcButton.InflateRect(-1, -1);
- _AfxDraw3DFrame(pDC, rcButton, RGB_BUTTON_DARK, RGB_BUTTON_WHITE);
- rcButton.InflateRect(-1, -1);
- }
- // Then the button face in the correct color
- pBrush = new CBrush(pDC->GetNearestColor(m_colFace));
- pDC->FillRect(&rcButton, pBrush);
- delete pBrush;
- // Drop through to draw Frame.
- case ODA_FOCUS:
- rcButton = lpDrawItemStruct->rcItem;
- _AfxDraw3DButtonFrame(pDC, rcButton, GetState() & 0x0008);
- }
- }
- /////////////////////////////////////////////////////////////////////////////
- // CColorPropPage implementation
- BEGIN_MESSAGE_MAP(CColorPropPage, CStockPropPage)
- //{{AFX_MSG_MAP(CColorPropPage)
- ON_CBN_SELCHANGE(AFX_IDC_COLORPROP, OnSelchangeColorprop)
- ON_BN_CLICKED(AFX_IDC_COLOR_BLACK, OnSelect)
- ON_BN_CLICKED(AFX_IDC_COLOR_WHITE, OnSelect)
- ON_BN_CLICKED(AFX_IDC_COLOR_RED, OnSelect)
- ON_BN_CLICKED(AFX_IDC_COLOR_GREEN, OnSelect)
- ON_BN_CLICKED(AFX_IDC_COLOR_BLUE, OnSelect)
- ON_BN_CLICKED(AFX_IDC_COLOR_YELLOW, OnSelect)
- ON_BN_CLICKED(AFX_IDC_COLOR_MAGENTA, OnSelect)
- ON_BN_CLICKED(AFX_IDC_COLOR_CYAN, OnSelect)
- ON_BN_CLICKED(AFX_IDC_COLOR_GRAY, OnSelect)
- ON_BN_CLICKED(AFX_IDC_COLOR_LIGHTGRAY, OnSelect)
- ON_BN_CLICKED(AFX_IDC_COLOR_DARKRED, OnSelect)
- ON_BN_CLICKED(AFX_IDC_COLOR_DARKGREEN, OnSelect)
- ON_BN_CLICKED(AFX_IDC_COLOR_DARKBLUE, OnSelect)
- ON_BN_CLICKED(AFX_IDC_COLOR_LIGHTBROWN, OnSelect)
- ON_BN_CLICKED(AFX_IDC_COLOR_DARKMAGENTA, OnSelect)
- ON_BN_CLICKED(AFX_IDC_COLOR_DARKCYAN, OnSelect)
- ON_CBN_SELCHANGE(AFX_IDC_SYSTEMCOLORS, OnSelchangeSystemcolors)
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
- CColorPropPage::CColorPropPage() :
- CStockPropPage(IDD, AFX_IDS_COLOR_PPG_CAPTION)
- {
- hPal = _AfxInitPalette();
- //{{AFX_DATA_INIT(CColorPropPage)
- //}}AFX_DATA_INIT
- }
- BOOL CColorPropPage::OnInitDialog()
- {
- UINT iButton;
- for (iButton = 0; iButton < NBUTTONS; iButton++)
- {
- VERIFY(m_Buttons[iButton].SubclassDlgItem(AFX_IDC_COLOR_BLACK + iButton, this));
- m_Buttons[iButton].SetFaceColor(PALETTEINDEX(iButton));
- }
- m_pSelectedButton = NULL;
- CStockPropPage::OnInitDialog();
- FillSysColors();
- OnObjectsChanged();
- IgnoreApply(AFX_IDC_COLORPROP);
- return TRUE;
- }
- void CColorPropPage::FillSysColors()
- {
- const SysColorsInfo* pInfo = &_afxSysColorsList[0];
- while (pInfo->nStrID != NULL)
- {
- CString strColor;
- strColor.LoadString(pInfo->nStrID);
- int nIndex = m_SysColors.AddString(strColor);
- if (nIndex != CB_ERR)
- m_SysColors.SetItemData(nIndex, (DWORD)pInfo->nColor);
- pInfo++;
- }
- // Initially no system color is selected
- m_SysColors.SetCurSel(-1);
- }
- void CColorPropPage::DoDataExchange(CDataExchange* pDX)
- {
- //{{AFX_DATA_MAP(CColorPropPage)
- DDX_Control(pDX, AFX_IDC_SYSTEMCOLORS, m_SysColors);
- DDX_Control(pDX, AFX_IDC_COLORPROP, m_ColorProp);
- //}}AFX_DATA_MAP
- if (pDX->m_bSaveAndValidate)
- {
- unsigned long color = 0;
- BOOL bChanged = TRUE;
- int nIndex = m_SysColors.GetCurSel();
- // did the user pick a particular button?
- // or did they select a system colour from the dropdown?
- if (m_pSelectedButton != NULL)
- {
- PALETTEENTRY pe;
- GetPaletteEntries(hPal, m_pSelectedButton->GetDlgCtrlID() - AFX_IDC_COLOR_BLACK, 1, &pe);
- color = RGB(pe.peRed, pe.peGreen, pe.peBlue);
- }
- else if (nIndex != CB_ERR)
- {
- color = 0x80000000 | m_SysColors.GetItemData(nIndex);
- }
- else
- bChanged = FALSE;
- if (bChanged)
- SetColorProp(pDX, color, m_strPropName);
- }
- else
- {
- unsigned long color;
- GetColorProp(pDX, &color, m_strPropName);
- if (color & 0x80000000)
- {
- // System color
- // Remove any previously selected buttons
- SetButton(NULL);
- int index;
- int cSysColors = m_SysColors.GetCount();
- unsigned long iSysColor = color & 0x000000ff;
- for (index = 0; index < cSysColors; index++)
- {
- if (m_SysColors.GetItemData(index) == iSysColor)
- {
- m_SysColors.SetCurSel(index);
- break;
- }
- }
- }
- else
- {
- // Normal color
- for (int index = 0; index < NBUTTONS; index++)
- {
- PALETTEENTRY pe;
- GetPaletteEntries(hPal, index, 1, &pe);
- if (color == RGB(pe.peRed, pe.peGreen, pe.peBlue))
- SetButton(&m_Buttons[index]);
- }
- }
- }
- }
- BOOL CColorPropPage::SetColorProp(CDataExchange* /* pDX */,
- unsigned long color, LPCTSTR pszPropName)
- {
- USES_CONVERSION;
- COleDispatchDriver PropDispDriver;
- ULONG nObjects;
- LPDISPATCH* ppDisp = GetObjectArray(&nObjects);
- for (ULONG i = 0; i < nObjects; i++)
- {
- DISPID dwDispID;
- // Get the Dispatch ID for the property and if successful set the value
- LPCOLESTR lpOleStr = T2COLE(pszPropName);
- if (SUCCEEDED(ppDisp[i]->GetIDsOfNames(IID_NULL, (LPOLESTR*)&lpOleStr,
- 1, m_lcid, &dwDispID)))
- {
- // Set property
- PropDispDriver.AttachDispatch(ppDisp[i], FALSE);
- TRY
- {
- PropDispDriver.SetProperty(dwDispID, VT_I4, color);
- }
- CATCH(COleDispatchException, e)
- {
- // Display message box for dispatch exceptions.
- e->ReportError(MB_ICONEXCLAMATION | MB_OK);
- DELETE_EXCEPTION(e);
- }
- AND_CATCH_ALL(e)
- {
- // Ignore other exceptions.
- DELETE_EXCEPTION(e);
- }
- END_CATCH_ALL
- PropDispDriver.DetachDispatch();
- }
- }
- return TRUE;
- }
- BOOL CColorPropPage::GetColorProp(CDataExchange* /* pDX */,
- unsigned long* pcolor, LPCTSTR pszPropName)
- {
- USES_CONVERSION;
- COleDispatchDriver PropDispDriver;
- ULONG nObjects;
- LPDISPATCH* ppDisp = GetObjectArray(&nObjects);
- for (ULONG i = 0; i < nObjects; i++)
- {
- DISPID dwDispID;
- // Get the Dispatch ID for the property and if successful get the value
- LPCOLESTR lpOleStr = T2COLE(pszPropName);
- if (SUCCEEDED(ppDisp[i]->GetIDsOfNames(IID_NULL, (LPOLESTR*)&lpOleStr,
- 1, m_lcid, &dwDispID)))
- {
- // Get property
- unsigned long color = 0;
- PropDispDriver.AttachDispatch(ppDisp[i], FALSE);
- TRY
- PropDispDriver.GetProperty(dwDispID, VT_I4, &color);
- END_TRY
- PropDispDriver.DetachDispatch();
- if (i != 0 && color != *pcolor)
- *pcolor = 0;
- else
- *pcolor = color;
- }
- }
- return TRUE;
- }
- /////////////////////////////////////////////////////////////////////////////
- // CColorPropPage message handlers
- void CColorPropPage::OnSelect()
- {
- SetButton((CColorButton *)(GetDlgItem(CColorButton::idClicked)));
- }
- void CColorPropPage::SetButton(CColorButton *Button)
- {
- if (m_pSelectedButton != NULL)
- {
- m_pSelectedButton->SetState(FALSE);
- m_pSelectedButton->Invalidate(FALSE);
- }
- m_pSelectedButton = Button;
- if (m_pSelectedButton != NULL)
- {
- Button->SetState(TRUE);
- Button->Invalidate(FALSE);
- }
- // Deselect any system color currently selected
- m_SysColors.SetCurSel(-1);
- }
- void CColorPropPage::OnSelchangeColorprop()
- {
- OnSelchangePropname(m_ColorProp);
- }
- ///////////////////////////////////////////////////////////////////////////////
- // 3D Drawing helpers
- void _AfxDraw3DFrame(CDC *pDC, CRect rcBox, COLORREF colBottomRight, COLORREF colTopLeft)
- {
- CPen *pPen2, *pPen, *pOldPen;
- pPen = new CPen(PS_SOLID, 1, colBottomRight);
- pOldPen = pDC->SelectObject(pPen);
- pDC->MoveTo(rcBox.right-1, rcBox.top);
- pDC->LineTo(rcBox.right-1, rcBox.bottom-1);
- pDC->LineTo(rcBox.left-1, rcBox.bottom-1);
- pPen2 = new CPen(PS_SOLID, 1, colTopLeft);
- pDC->SelectObject(pPen2);
- delete pPen;
- pDC->MoveTo(rcBox.left, rcBox.bottom-2);
- pDC->LineTo(rcBox.left, rcBox.top);
- pDC->LineTo(rcBox.right-1, rcBox.top);
- pDC->SelectObject(pOldPen);
- delete pPen2;
- }
- void _AfxDraw3DButtonFrame(CDC *pDC, CRect rcButton, BOOL fFocus)
- {
- CPen *pPen, *pOldPen;
- CBrush GrayBrush(RGB_BUTTON_LIGHT);
- CBrush BlackBrush(RGB_BUTTON_BLACK);
- pPen = new CPen(PS_SOLID, 1, RGB_BUTTON_BLACK);
- pOldPen = pDC->SelectObject(pPen);
- // Draw gray outside
- pDC->FrameRect(&rcButton, &GrayBrush);
- rcButton.InflateRect(-1, -1);
- if (fFocus)
- {
- // Draw inside of border
- pDC->FrameRect(&rcButton, &BlackBrush);
- // Draw curved border on outside;
- rcButton.InflateRect(1, 1);
- }
- else
- {
- // Prepare inside border
- pDC->FrameRect(&rcButton, &GrayBrush);
- }
- pDC->MoveTo(rcButton.left+1, rcButton.top);
- pDC->LineTo(rcButton.right-1, rcButton.top);
- pDC->MoveTo(rcButton.left+1, rcButton.bottom-1);
- pDC->LineTo(rcButton.right-1, rcButton.bottom-1);
- pDC->MoveTo(rcButton.left, rcButton.top+1);
- pDC->LineTo(rcButton.left, rcButton.bottom-1);
- pDC->MoveTo(rcButton.right-1, rcButton.top+1);
- pDC->LineTo(rcButton.right-1, rcButton.bottom-1);
- pDC->SelectObject(pOldPen);
- delete pPen;
- }
- HPALETTE _AfxInitPalette(VOID)
- {
- NPLOGPALETTE pPal; // Local palette
- HPALETTE pal;
- //Allocates space for QcQp Palette 'pPal'
- pPal = (NPLOGPALETTE) LocalAlloc(LPTR,
- (sizeof (LOGPALETTE) +
- (sizeof (PALETTEENTRY) * CColorPropPage::NBUTTONS)));
- if (pPal == NULL)
- return NULL;
- //Initialize 'pPal' fields
- pPal->palNumEntries = CColorPropPage::NBUTTONS;
- pPal->palVersion = 0x300;
- //Inits Every color of our palette
- pPal->palPalEntry[BLACK].peRed = 0;
- pPal->palPalEntry[BLACK].peGreen = 0;
- pPal->palPalEntry[BLACK].peBlue = 0;
- pPal->palPalEntry[BLACK].peFlags = (BYTE) 0;
- pPal->palPalEntry[WHITE].peRed = 255;
- pPal->palPalEntry[WHITE].peGreen = 255;
- pPal->palPalEntry[WHITE].peBlue = 255;
- pPal->palPalEntry[WHITE].peFlags = (BYTE) 0;
- pPal->palPalEntry[RED].peRed = 255;
- pPal->palPalEntry[RED].peGreen = 0;
- pPal->palPalEntry[RED].peBlue = 0;
- pPal->palPalEntry[RED].peFlags = (BYTE) 0;
- pPal->palPalEntry[GREEN].peRed = 0;
- pPal->palPalEntry[GREEN].peGreen = 255;
- pPal->palPalEntry[GREEN].peBlue = 0;
- pPal->palPalEntry[GREEN].peFlags = (BYTE) 0;
- pPal->palPalEntry[BLUE].peRed = 0;
- pPal->palPalEntry[BLUE].peGreen = 0;
- pPal->palPalEntry[BLUE].peBlue = 255;
- pPal->palPalEntry[BLUE].peFlags = (BYTE) 0;
- pPal->palPalEntry[YELLOW].peRed = 255;
- pPal->palPalEntry[YELLOW].peGreen = 255;
- pPal->palPalEntry[YELLOW].peBlue = 0;
- pPal->palPalEntry[YELLOW].peFlags = (BYTE) 0;
- pPal->palPalEntry[MAGENTA].peRed = 255;
- pPal->palPalEntry[MAGENTA].peGreen = 0;
- pPal->palPalEntry[MAGENTA].peBlue = 255;
- pPal->palPalEntry[MAGENTA].peFlags = (BYTE) 0;
- pPal->palPalEntry[CYAN].peRed = 0;
- pPal->palPalEntry[CYAN].peGreen = 255;
- pPal->palPalEntry[CYAN].peBlue = 255;
- pPal->palPalEntry[CYAN].peFlags = (BYTE) 0;
- pPal->palPalEntry[GRAY].peRed = 128;
- pPal->palPalEntry[GRAY].peGreen = 128;
- pPal->palPalEntry[GRAY].peBlue = 128;
- pPal->palPalEntry[GRAY].peFlags = (BYTE) 0;
- pPal->palPalEntry[LIGHTGRAY].peRed = 192;
- pPal->palPalEntry[LIGHTGRAY].peGreen = 192;
- pPal->palPalEntry[LIGHTGRAY].peBlue = 192;
- pPal->palPalEntry[LIGHTGRAY].peFlags = (BYTE) 0;
- pPal->palPalEntry[DARKRED].peRed = 128;
- pPal->palPalEntry[DARKRED].peGreen = 0;
- pPal->palPalEntry[DARKRED].peBlue = 0;
- pPal->palPalEntry[DARKRED].peFlags = (BYTE) 0;
- pPal->palPalEntry[DARKGREEN].peRed = 0;
- pPal->palPalEntry[DARKGREEN].peGreen = 128;
- pPal->palPalEntry[DARKGREEN].peBlue = 0;
- pPal->palPalEntry[DARKGREEN].peFlags = (BYTE) 0;
- pPal->palPalEntry[DARKBLUE].peRed = 0;
- pPal->palPalEntry[DARKBLUE].peGreen = 0;
- pPal->palPalEntry[DARKBLUE].peBlue = 128;
- pPal->palPalEntry[DARKBLUE].peFlags = (BYTE) 0;
- pPal->palPalEntry[LIGHTBROWN].peRed = 128;
- pPal->palPalEntry[LIGHTBROWN].peGreen = 128;
- pPal->palPalEntry[LIGHTBROWN].peBlue = 0;
- pPal->palPalEntry[LIGHTBROWN].peFlags = (BYTE) 0;
- pPal->palPalEntry[DARKMAGENTA].peRed = 128;
- pPal->palPalEntry[DARKMAGENTA].peGreen= 0;
- pPal->palPalEntry[DARKMAGENTA].peBlue = 128;
- pPal->palPalEntry[DARKMAGENTA].peFlags= (BYTE) 0;
- pPal->palPalEntry[DARKCYAN].peRed = 0;
- pPal->palPalEntry[DARKCYAN].peGreen = 128;
- pPal->palPalEntry[DARKCYAN].peBlue = 128;
- pPal->palPalEntry[DARKCYAN].peFlags = (BYTE) 0;
- //Creates the logical palette
- pal = ::CreatePalette((LPLOGPALETTE)pPal);
- //Free allocated memory
- VERIFY(LocalFree((HLOCAL)pPal) == NULL);
- return pal;
- }
- void CColorPropPage::OnSelchangeSystemcolors()
- {
- if (m_pSelectedButton != NULL)
- {
- m_pSelectedButton->SetState(FALSE);
- m_pSelectedButton->Invalidate(FALSE);
- m_pSelectedButton = NULL;
- }
- }
- BOOL CColorPropPage::OnEditProperty(DISPID dispid)
- {
- return CStockPropPage::OnEditProperty(dispid, m_ColorProp);
- }
- void CColorPropPage::OnObjectsChanged()
- {
- ULONG nObjects;
- if (GetObjectArray(&nObjects) != NULL && m_hWnd != NULL)
- {
- FillPropnameList(GUID_COLOR, 0, m_ColorProp);
- if ( m_ColorProp.GetCount() == 0 )
- {
- // No color properties: disable everything.
- UINT iButton;
- for (iButton = 0; iButton < NBUTTONS; iButton++)
- m_Buttons[iButton].EnableWindow(FALSE);
- m_SysColors.EnableWindow(FALSE);
- }
- }
- if (m_hWnd != NULL)
- OnSelchangeColorprop();
- }
- /////////////////////////////////////////////////////////////////////////////
- // Class factory for Color property page
- #ifdef _AFXDLL
- #ifdef AFXCTL_FACT_SEG
- #pragma code_seg(AFXCTL_FACT_SEG)
- #endif
- IMPLEMENT_OLECREATE_EX(CColorPropPage, "OCxx.CColorPropPage",
- 0x0be35201,0x8f91,0x11ce,0x9d,0xe3,0x00,0xaa,0x00,0x4b,0xb8,0x51)
- BOOL CColorPropPage::CColorPropPageFactory::UpdateRegistry(BOOL bRegister)
- {
- if (bRegister)
- return AfxOleRegisterPropertyPageClass(AfxGetInstanceHandle(),
- m_clsid, AFX_IDS_COLOR_PPG);
- else
- return AfxOleUnregisterClass(m_clsid, NULL);
- }
- #endif //_AFXDLL
- /////////////////////////////////////////////////////////////////////////////
- // Force any extra compiler-generated code into AFX_INIT_SEG
- #ifdef AFX_INIT_SEG
- #pragma code_seg(AFX_INIT_SEG)
- #endif
- IMPLEMENT_DYNCREATE(CColorPropPage, CStockPropPage)
|