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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? colourpicker.cpp

?? WinCE開發(fā)技巧與實例的配套源碼
?? 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);
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩av一区二区三区四区| 色综合久久综合| 免费成人在线影院| 天天影视色香欲综合网老头| 亚洲女同一区二区| 最好看的中文字幕久久| 国产精品久久久久影院亚瑟| 中文一区二区完整视频在线观看| 久久精品视频在线看| 久久嫩草精品久久久精品一| 久久亚洲综合av| 久久久91精品国产一区二区三区| 国产婷婷精品av在线| 国产欧美精品一区aⅴ影院 | www激情久久| 久久综合久久综合久久| 久久色在线视频| 国产欧美一区二区精品性色超碰| 国产欧美精品一区二区色综合朱莉 | 成人午夜精品在线| 99久久精品国产观看| 日本久久一区二区三区| 欧美精品丝袜中出| 日韩欧美www| 国产清纯白嫩初高生在线观看91| 国产精品福利一区二区三区| 亚洲电影一区二区三区| 日本欧美久久久久免费播放网| 久久精品国产亚洲a| 成人性生交大片免费看视频在线 | 国产午夜精品久久久久久免费视 | 日本一区二区三区在线观看| 中文字幕中文字幕中文字幕亚洲无线| 综合网在线视频| 午夜精品123| 国产美女视频一区| 91天堂素人约啪| 8x福利精品第一导航| 久久这里只有精品视频网| 中文字幕一区在线观看| 亚洲一区欧美一区| 国内精品免费**视频| 91在线码无精品| 69av一区二区三区| 国产欧美日韩另类视频免费观看| 一卡二卡欧美日韩| 精品制服美女丁香| 一本到一区二区三区| 欧美一级久久久久久久大片| 国产人妖乱国产精品人妖| 亚洲福利视频三区| 成人免费毛片片v| 在线不卡一区二区| 国产精品三级av在线播放| 偷拍亚洲欧洲综合| 成人小视频在线| 这里只有精品电影| 国产精品毛片久久久久久久| 日韩不卡手机在线v区| 成人午夜视频免费看| 欧美一区二区三区免费大片| 国产精品久久久久久久蜜臀| 午夜视频在线观看一区| 高清av一区二区| 欧美一区二区三区在线电影| 亚洲欧洲精品一区二区三区| 麻豆一区二区三| 在线区一区二视频| 国产精品热久久久久夜色精品三区 | 国产精品美女视频| 日本欧美肥老太交大片| 色先锋资源久久综合| 久久久精品国产免大香伊| 视频一区视频二区在线观看| 99国产精品国产精品久久| 精品国产一区二区亚洲人成毛片 | 天天亚洲美女在线视频| 99九九99九九九视频精品| 久久天堂av综合合色蜜桃网| 七七婷婷婷婷精品国产| 91福利视频久久久久| 国产精品污污网站在线观看| 精品一区二区三区免费观看| 欧美日韩国产成人在线免费| 日本欧美一区二区在线观看| 欧美影院精品一区| 亚洲欧美二区三区| 成人教育av在线| 久久久99免费| 久久国产精品第一页| 日韩精品一区国产麻豆| 午夜精品一区在线观看| 欧美系列亚洲系列| 一二三四区精品视频| 99久久免费国产| 国产精品国产精品国产专区不片| 国产成人精品三级麻豆| 久久久99精品免费观看不卡| 国产一区免费电影| 精品日韩成人av| 久久成人羞羞网站| 精品国产91洋老外米糕| 免费的成人av| 欧美精品一区视频| 狠狠网亚洲精品| 久久婷婷久久一区二区三区| 国产乱人伦偷精品视频不卡| 欧美精品一区二区三区蜜臀| 激情综合网天天干| 久久在线观看免费| 国产一区二区三区观看| 精品sm在线观看| 国产一区二区视频在线| 2021中文字幕一区亚洲| 国产一本一道久久香蕉| 中文av一区二区| www.亚洲免费av| 一区二区三区免费看视频| 欧美又粗又大又爽| 同产精品九九九| 日韩欧美国产系列| 国产精品综合视频| 中文av一区二区| 在线观看网站黄不卡| 婷婷久久综合九色综合伊人色| 91精品国产综合久久久久| 蜜臂av日日欢夜夜爽一区| 久久午夜电影网| 一本色道久久加勒比精品| 午夜视频在线观看一区| 精品久久久久久久久久久久久久久久久 | 六月丁香综合在线视频| 久久亚洲捆绑美女| 97精品国产97久久久久久久久久久久| 亚洲精品高清视频在线观看| 欧美视频一二三区| 久久99精品网久久| 国产精品视频一二| 欧美视频中文字幕| 精品无人区卡一卡二卡三乱码免费卡| 久久久精品黄色| 欧美在线视频你懂得| 日本不卡1234视频| 欧美国产精品v| 精品视频色一区| 韩国视频一区二区| 亚洲视频一二三| 日韩视频免费直播| 国产suv精品一区二区883| 亚洲精品va在线观看| 天天综合网 天天综合色| 国产婷婷色一区二区三区在线| 色丁香久综合在线久综合在线观看| 麻豆免费看一区二区三区| 亚洲欧洲日韩在线| 日韩亚洲欧美高清| 91美女片黄在线| 国内一区二区在线| 亚洲午夜精品网| 国产日韩欧美a| 欧美一级生活片| 99re热这里只有精品免费视频 | 欧美日韩在线播放一区| 国产福利91精品一区| 亚洲一区二区免费视频| 久久久久久一二三区| 欧美精品国产精品| 91亚洲精品一区二区乱码| 精一区二区三区| 午夜精品久久久久久久久久久| 国产免费久久精品| 日韩精品一区二区三区中文精品| 日本韩国一区二区| 国产精品一二三区在线| 五月天婷婷综合| 日韩伦理av电影| 国产欧美日韩在线观看| 欧美mv日韩mv国产网站app| 欧美午夜在线观看| 一本一道波多野结衣一区二区| 国产成人午夜片在线观看高清观看| 日韩电影免费在线看| 亚洲一区欧美一区| 亚洲欧美激情小说另类| 国产亚洲短视频| 欧美va亚洲va在线观看蝴蝶网| 欧美日韩精品一区二区在线播放 | 久久亚洲精品国产精品紫薇| 7777精品伊人久久久大香线蕉超级流畅| 91视频观看免费| fc2成人免费人成在线观看播放| 狠狠色2019综合网| 麻豆专区一区二区三区四区五区| 日韩精品福利网| 图片区小说区区亚洲影院| 亚洲午夜久久久久久久久电影网 | 免费观看日韩电影| 亚洲午夜精品一区二区三区他趣| 一区二区高清免费观看影视大全| 亚洲色图色小说|