亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? colourpicker.cpp

?? wince color picker 顏色拾取控件
?? CPP
字號:
// ColourPicker.cpp : implementation file
//
// ColourPicker is a drop-in colour picker control. Check out the 
// header file or the accompanying HTML doc file for details.
//
// Written by Chris Maunder (chrismaunder@codeguru.com)
// Extended by Alexander Bischofberger (bischofb@informatik.tu-muenchen.de)
// Copyright (c) 1998.
//
// This code may be used in compiled form in any way you desire. This
// file may be redistributed unmodified by any means PROVIDING it is 
// not sold for profit without the authors written consent, and 
// providing that this notice and the authors name is included. If 
// the source code in  this file is used in any commercial application 
// then a simple email would be nice.
//
// This file is provided "as is" with no expressed or implied warranty.
// The author accepts no liability if it causes any damage to your
// computer, causes your pet cat to fall ill, increases baldness or
// makes you car start emitting strange noises when you start it up.
//
// Expect bugs.
// 
// Please use and enjoy. Please let me know of any bugs/mods/improvements 
// that you have found/implemented and I will fix/incorporate them into this
// file. 
//
// Updated 16 May 1998
//         31 May 1998 - added Default text (CJM)
//          9 Jan 1999 - minor vis update

#include "stdafx.h"
#include "ColourPopup.h"
#include "ColourPicker.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

void AFXAPI DDX_ColourPicker(CDataExchange *pDX, int nIDC, COLORREF& crColour)
{
    HWND hWndCtrl = pDX->PrepareCtrl(nIDC);
    ASSERT (hWndCtrl != NULL);                
    
    CColourPicker* pColourPicker = (CColourPicker*) CWnd::FromHandle(hWndCtrl);
    if (pDX->m_bSaveAndValidate)
    {
        crColour = pColourPicker->GetColour();
    }
    else // initializing
    {
        pColourPicker->SetColour(crColour);
    }
}

/////////////////////////////////////////////////////////////////////////////
// CColourPicker

CColourPicker::CColourPicker()
{
    SetBkColour(GetSysColor(COLOR_3DFACE));
    SetTextColour(GetSysColor(COLOR_BTNTEXT));

    m_bTrackSelection = FALSE;
    m_nSelectionMode = CP_MODE_BK;
    m_bActive = FALSE;

    m_strDefaultText = _T("Automatic");
#ifdef _WIN32_WCE
	//
	// The Custom text is not used in CE. You can use it
	// to cancel the selection
	//
    m_strCustomText  = _T("Cancel");
#else
    m_strCustomText  = _T("More Colours...");
#endif
}

CColourPicker::~CColourPicker()
{
}

IMPLEMENT_DYNCREATE(CColourPicker, CButton)

BEGIN_MESSAGE_MAP(CColourPicker, CButton)
    //{{AFX_MSG_MAP(CColourPicker)
    ON_CONTROL_REFLECT_EX(BN_CLICKED, OnClicked)
    ON_WM_CREATE()
    //}}AFX_MSG_MAP
    ON_MESSAGE(CPN_SELENDOK,     OnSelEndOK)
    ON_MESSAGE(CPN_SELENDCANCEL, OnSelEndCancel)
    ON_MESSAGE(CPN_SELCHANGE,    OnSelChange)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CColourPicker message handlers

LONG CColourPicker::OnSelEndOK(UINT lParam, LONG /*wParam*/)
{
    COLORREF crNewColour = (COLORREF) lParam;
    m_bActive = FALSE;
    SetColour(crNewColour);

    CWnd *pParent = GetParent();
    if (pParent) {
        pParent->SendMessage(CPN_CLOSEUP, lParam, (WPARAM) GetDlgCtrlID());
        pParent->SendMessage(CPN_SELENDOK, lParam, (WPARAM) GetDlgCtrlID());
    }

    if (crNewColour != GetColour())
        if (pParent) pParent->SendMessage(CPN_SELCHANGE, lParam, (WPARAM) GetDlgCtrlID());

    return TRUE;
}


LONG CColourPicker::OnSelEndCancel(UINT lParam, LONG /*wParam*/)
{
    m_bActive = FALSE;
    SetColour((COLORREF) lParam);

    CWnd *pParent = GetParent();
    if (pParent) {
        pParent->SendMessage(CPN_CLOSEUP, lParam, (WPARAM) GetDlgCtrlID());
        pParent->SendMessage(CPN_SELENDCANCEL, lParam, (WPARAM) GetDlgCtrlID());
    }

    return TRUE;
}


LONG CColourPicker::OnSelChange(UINT lParam, LONG /*wParam*/)
{
    if (m_bTrackSelection) SetColour((COLORREF) lParam);

    CWnd *pParent = GetParent();
    if (pParent) pParent->SendMessage(CPN_SELCHANGE, lParam, (WPARAM) GetDlgCtrlID());

    return TRUE;
}


int CColourPicker::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
    if (CButton::OnCreate(lpCreateStruct) == -1)
        return -1;
    
    SetWindowSize();    // resize appropriately
    return 0;
}


// CColourPicker::OnClicked
//
//		On mouse click, create and show a CColourPopup window for colour selection
//		CE differences:
//		- By clicking a second time in the button, the popup is dismissed
//		- The popup is statically allocated, so a different creation method is used
//
BOOL CColourPicker::OnClicked()
{
#ifdef _WIN32_WCE
	//
	// Is the popup on?
	//
	if(IsWindow(m_wndPopup.GetSafeHwnd()))
	{
		m_wndPopup.DestroyWindow();				// Destroy the popup
		OnSelEndCancel((UINT)m_crBuf, 0);		// Notify a cancelled selection
		return TRUE;
	}
#endif

    m_bActive = TRUE;
    CRect rect;
    GetWindowRect(rect);

#ifdef _WIN32_WCE
	m_crBuf = GetColour();
	m_wndPopup.SetDefaultText	(m_strDefaultText);
	m_wndPopup.SetCustomText	(m_strCustomText);
	m_wndPopup.SetParentWindow	(this);
	m_wndPopup.SetColour		(m_crBuf);
	m_wndPopup.Create(CPoint(rect.left, rect.bottom), GetColour(), this, m_strDefaultText, m_strCustomText);
#else
    new CColourPopup(CPoint(rect.left, rect.bottom),    // Point to display popup
                     GetColour(),                       // Selected colour
                     this,                              // parent
                     m_strDefaultText,                  // "Default" text area
                     m_strCustomText);                  // Custom Text
#endif

    CWnd *pParent = GetParent();
    if (pParent)
        pParent->SendMessage(CPN_DROPDOWN, (LPARAM)GetColour(), (WPARAM) GetDlgCtrlID());

    // Docs say I should return FALSE to stop the parent also getting the message.
    // HA! What a joke.

    return TRUE;
}


// CColourPicker::DrawItem
//
//		Draws the button
//
void CColourPicker::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) 
{
    ASSERT(lpDrawItemStruct);
    
    CDC*    pDC     = CDC::FromHandle(lpDrawItemStruct->hDC);
    CRect   rect    = lpDrawItemStruct->rcItem;
    UINT    state   = lpDrawItemStruct->itemState;
    CString m_strText;

    CSize Margins(::GetSystemMetrics(SM_CXEDGE), ::GetSystemMetrics(SM_CYEDGE));

    // Draw arrow
    if (m_bActive) state |= ODS_SELECTED;
    pDC->DrawFrameControl(&m_ArrowRect, DFC_SCROLL, DFCS_SCROLLDOWN  | 
                          ((state & ODS_SELECTED) ? DFCS_PUSHED : 0) |
                          ((state & ODS_DISABLED) ? DFCS_INACTIVE : 0));

#ifdef _WIN32_WCE
    pDC->DrawEdge(rect, EDGE_SUNKEN, BF_RECT | BF_FLAT);		// Draw a flat frame in CE
#else
    pDC->DrawEdge(rect, EDGE_SUNKEN, BF_RECT);
#endif

    // Must reduce the size of the "client" area of the button due to edge thickness.
    rect.DeflateRect(Margins.cx, Margins.cy);

    // Fill remaining area with colour
    rect.right -= m_ArrowRect.Width();

    CBrush brush( ((state & ODS_DISABLED) || m_crColourBk == CLR_DEFAULT)? 
                  ::GetSysColor(COLOR_3DFACE) : m_crColourBk);
    CBrush* pOldBrush = (CBrush*) pDC->SelectObject(&brush);
	pDC->SelectStockObject(NULL_PEN);
    pDC->Rectangle(rect);
    pDC->SelectObject(pOldBrush);

    // Draw the window text (if any)
    GetWindowText(m_strText);
    if (m_strText.GetLength())
    {
        pDC->SetBkMode(TRANSPARENT);
        if (state & ODS_DISABLED)
        {
            rect.OffsetRect(1,1);
            pDC->SetTextColor(::GetSysColor(COLOR_3DHILIGHT));
            pDC->DrawText(m_strText, rect, DT_CENTER|DT_SINGLELINE|DT_VCENTER);
            rect.OffsetRect(-1,-1);
            pDC->SetTextColor(::GetSysColor(COLOR_3DSHADOW));
            pDC->DrawText(m_strText, rect, DT_CENTER|DT_SINGLELINE|DT_VCENTER);
        }
        else
        {
            pDC->SetTextColor((m_crColourText == CLR_DEFAULT)? 0 : m_crColourText);
            pDC->DrawText(m_strText, rect, DT_CENTER|DT_SINGLELINE|DT_VCENTER);
        }
    }

    // Draw focus rect
    if (state & ODS_FOCUS) 
    {
        rect.DeflateRect(1,1);
        pDC->DrawFocusRect(rect);
    }
}

/////////////////////////////////////////////////////////////////////////////
// CColourPicker overrides

void CColourPicker::PreSubclassWindow() 
{
    ModifyStyle(0, BS_OWNERDRAW);        // Make it owner drawn
    CButton::PreSubclassWindow();
    SetWindowSize();                     // resize appropriately
}

/////////////////////////////////////////////////////////////////////////////
// CColourPicker attributes

COLORREF CColourPicker::GetColour()
{ 
    return (m_nSelectionMode == CP_MODE_TEXT)? 
        GetTextColour(): GetBkColour(); 
}

void CColourPicker::SetColour(COLORREF crColour)
{ 
    (m_nSelectionMode == CP_MODE_TEXT)? 
        SetTextColour(crColour): SetBkColour(crColour); 
}

void CColourPicker::SetBkColour(COLORREF crColourBk)
{
    m_crColourBk = crColourBk;
    if (IsWindow(m_hWnd))
        RedrawWindow();
}

void CColourPicker::SetTextColour(COLORREF crColourText)
{
    m_crColourText = crColourText;
    if (IsWindow(m_hWnd)) 
        RedrawWindow();
}

void CColourPicker::SetDefaultText(LPCTSTR szDefaultText)
{
    m_strDefaultText = (szDefaultText)? szDefaultText : _T("");
}

void CColourPicker::SetCustomText(LPCTSTR szCustomText)
{
    m_strCustomText = (szCustomText)? szCustomText : _T("");
}

/////////////////////////////////////////////////////////////////////////////
// CColourPicker implementation

void CColourPicker::SetWindowSize()
{
    // Get size dimensions of edges
    CSize MarginSize(::GetSystemMetrics(SM_CXEDGE), ::GetSystemMetrics(SM_CYEDGE));

    // Get size of dropdown arrow
#ifdef _WIN32_WCE
    int nArrowWidth = max(16, 5*MarginSize.cx);		// Sorry: had to resort to magic numbers...
    int nArrowHeight = max(16, 5*MarginSize.cy);	// CE doesn't support most SM_* constants
#else
    int nArrowWidth = max(::GetSystemMetrics(SM_CXHTHUMB), 5*MarginSize.cx);
    int nArrowHeight = max(::GetSystemMetrics(SM_CYVTHUMB), 5*MarginSize.cy);
#endif
    CSize ArrowSize(max(nArrowWidth, nArrowHeight), max(nArrowWidth, nArrowHeight));

    // Get window size
    CRect rect;
    GetWindowRect(rect);

    CWnd* pParent = GetParent();
    if (pParent)
        pParent->ScreenToClient(rect);

    // Set window size at least as wide as 2 arrows, and as high as arrow + margins
    int nWidth = max(rect.Width(), 2*ArrowSize.cx + 2*MarginSize.cx);
    MoveWindow(rect.left, rect.top, nWidth, ArrowSize.cy+2*MarginSize.cy, TRUE);

    // Get the new coords of this window
    GetWindowRect(rect);
    ScreenToClient(rect);

    // Get the rect where the arrow goes, and convert to client coords.
    m_ArrowRect.SetRect(rect.right - ArrowSize.cx - MarginSize.cx, 
                        rect.top + MarginSize.cy, rect.right - MarginSize.cx,
                        rect.bottom - MarginSize.cy);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区二区成人在线观看| 亚洲日本一区二区| 亚洲精品国产无天堂网2021| 久久99九九99精品| 欧美午夜电影一区| 国产精品国产三级国产a| 久国产精品韩国三级视频| 欧美三电影在线| 专区另类欧美日韩| 国产成人精品影视| 欧美videossexotv100| 亚洲成人综合网站| 色悠久久久久综合欧美99| 国产精品免费久久| 国产精品一区二区久久精品爱涩 | 蜜桃av一区二区在线观看| 91蜜桃传媒精品久久久一区二区| 精品久久国产老人久久综合| 亚洲主播在线观看| 色综合 综合色| 亚洲欧洲av一区二区三区久久| 久久99精品国产.久久久久久| 欧美一区午夜精品| 天堂精品中文字幕在线| 在线观看免费视频综合| 亚洲精品视频在线观看网站| www.欧美精品一二区| 国产欧美一区二区精品婷婷| 国产一区二区三区四| 欧美一级欧美一级在线播放| 香蕉加勒比综合久久| 欧美系列日韩一区| 亚洲韩国一区二区三区| 欧美性猛片aaaaaaa做受| 一区二区三区四区精品在线视频| 91美女片黄在线观看| 亚洲欧美另类综合偷拍| 日本久久一区二区三区| 亚洲免费在线观看| 欧美在线观看18| 亚洲大型综合色站| 91精品国产综合久久小美女 | 中文字幕+乱码+中文字幕一区| 国产久卡久卡久卡久卡视频精品| 欧美成人福利视频| 狠狠色丁香久久婷婷综| 久久综合九色综合欧美亚洲| 国产一区三区三区| 久久九九全国免费| 国产麻豆精品久久一二三| 久久九九全国免费| 成人网在线免费视频| 国产精品网站在线| fc2成人免费人成在线观看播放| 中文子幕无线码一区tr| jlzzjlzz欧美大全| 亚洲黄一区二区三区| 欧美日韩在线综合| 全国精品久久少妇| 久久久美女毛片| 高清国产午夜精品久久久久久| 亚洲欧洲av色图| 欧美色图激情小说| 久久97超碰色| 欧美国产视频在线| 欧洲色大大久久| 秋霞国产午夜精品免费视频| 久久久精品综合| 91丨九色porny丨蝌蚪| 亚洲成av人片| 日韩欧美一区在线| 夫妻av一区二区| 亚洲精品乱码久久久久久久久| 欧美日韩亚洲不卡| 激情欧美一区二区三区在线观看| 国产精品私房写真福利视频| 在线观看av不卡| 老司机精品视频一区二区三区| 久久久高清一区二区三区| 一本到不卡精品视频在线观看| 日韩激情在线观看| 日本一区二区成人| 欧洲中文字幕精品| 国产自产2019最新不卡| 国产成人精品三级麻豆| 亚洲精品久久嫩草网站秘色| 日韩情涩欧美日韩视频| 大白屁股一区二区视频| 天天色图综合网| 国产日本亚洲高清| 欧美午夜精品免费| 国产精品自产自拍| 亚洲丰满少妇videoshd| 2023国产精华国产精品| 色婷婷国产精品久久包臀| 蜜臀精品一区二区三区在线观看 | 欧美精品一区二区三区在线| 91在线你懂得| 麻豆一区二区99久久久久| 国产精品剧情在线亚洲| 欧美一区二区成人6969| 91免费版在线| 捆绑紧缚一区二区三区视频| 亚洲精选视频在线| 久久久国产午夜精品| 欧美日韩国产精品自在自线| 成人免费毛片a| 蜜臀a∨国产成人精品| 亚洲精品中文字幕在线观看| 精品久久五月天| 欧美日韩在线免费视频| 成人黄色av电影| 精品一区二区三区在线播放视频| 亚洲精品水蜜桃| 亚洲国产精品99久久久久久久久| 91精品国产欧美一区二区| 91丝袜国产在线播放| 国产精品一区免费在线观看| 天天综合网 天天综合色| 亚洲视频免费在线| 亚洲国产精华液网站w | 91国偷自产一区二区三区成为亚洲经典| 久久精品国产99久久6| 亚洲成人综合视频| 亚洲视频图片小说| 国产精品久久久爽爽爽麻豆色哟哟 | 青娱乐精品视频在线| 一区二区三区国产豹纹内裤在线| 国产精品丝袜久久久久久app| 精品日韩欧美一区二区| 欧美日本国产视频| 91高清视频在线| 99久久精品国产观看| 国产成人亚洲综合a∨婷婷图片| 久久成人久久爱| 蜜臀91精品一区二区三区| 午夜免费久久看| 亚洲午夜久久久久久久久久久| 自拍偷拍国产精品| 国产精品九色蝌蚪自拍| 国产欧美精品一区二区三区四区| 欧美成人免费网站| 欧美成人video| 日韩欧美自拍偷拍| 欧美成人激情免费网| 日韩欧美国产一二三区| 日韩视频免费观看高清完整版在线观看 | 欧美三级中文字幕| 在线观看亚洲精品视频| 91久久精品国产91性色tv| 波多野结衣中文字幕一区 | 亚洲成av人片在www色猫咪| 亚洲一区二区五区| 亚洲国产日韩在线一区模特| 一区二区三区中文免费| 亚洲精品亚洲人成人网| 一区二区三区中文字幕精品精品 | 欧美www视频| 精品国产麻豆免费人成网站| 精品国产91洋老外米糕| 欧美精品一区在线观看| 久久精品亚洲乱码伦伦中文| 国产欧美日韩另类一区| 欧美激情一区二区三区在线| 欧美国产激情二区三区| 中文字幕在线不卡视频| 亚洲人成网站精品片在线观看| 亚洲色欲色欲www| 久久精品人人做人人综合| 色猫猫国产区一区二在线视频| 最新高清无码专区| 国产亚洲精品7777| 在线成人av网站| 国产麻豆精品在线观看| 亚洲视频一区二区在线观看| 欧美日韩国产精选| 国产精品一区二区三区乱码| 一区在线观看视频| 日韩久久免费av| 91丨porny丨在线| 国产美女精品在线| 日日夜夜精品视频天天综合网| 亚洲品质自拍视频| 中文字幕欧美激情| 欧美日韩小视频| 欧美α欧美αv大片| 久久精品一二三| 亚洲精品国产无套在线观| 午夜电影网一区| 国产一区二区三区四区五区入口 | 亚洲一区电影777| 人人爽香蕉精品| 国产成人综合网站| 色噜噜狠狠色综合中国| 欧美日韩高清一区二区三区| 欧美成人一区二区三区在线观看 | 欧美一级片免费看| 国产欧美日韩一区二区三区在线观看| 亚洲欧美区自拍先锋| 日韩电影免费在线观看网站|