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

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

?? gridcell.cpp

?? 股票軟件
?? CPP
字號:
// GridCell.cpp : implementation file
//
// MFC Grid Control - Main grid cell class
//
// Provides the implementation for the "default" cell type of the
// grid control. Adds in cell editing.
//
// Written by Chris Maunder <chris@codeproject.com>
// Copyright (c) 1998-2005. All Rights Reserved.
//
// 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 and all copyright 
// notices remains intact. 
//
// An email letting me know how you are using it would be nice as well. 
//
// This file is provided "as is" with no expressed or implied warranty.
// The author accepts no liability for any damage/loss of business that
// this product may cause.
//
// For use with CGridCtrl v2.20+
//
// History:
// Eric Woodruff - 20 Feb 2000 - Added PrintCell() plus other minor changes
// Ken Bertelson - 12 Apr 2000 - Split CGridCell into CGridCell and CGridCellBase
// <kenbertelson@hotmail.com>
// C Maunder     - 17 Jun 2000 - Font handling optimsed, Added CGridDefaultCell
//
/////////////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "GridCell.h"
#include "InPlaceEdit.h"
#include "GridCtrl.h"

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

IMPLEMENT_DYNCREATE(CGridCell, CGridCellBase)
IMPLEMENT_DYNCREATE(CGridDefaultCell, CGridCell)

/////////////////////////////////////////////////////////////////////////////
// GridCell

CGridCell::CGridCell()
{
    m_plfFont = NULL;
	CGridCell::Reset();
}

CGridCell::~CGridCell()
{
    delete m_plfFont;
}

/////////////////////////////////////////////////////////////////////////////
// GridCell Attributes

void CGridCell::operator=(const CGridCell& cell)
{
    if (this != &cell) CGridCellBase::operator=(cell);
}

void CGridCell::Reset()
{
    CGridCellBase::Reset();

    m_strText.Empty();
    m_nImage   = -1;
    m_lParam   = NULL;           // BUG FIX J. Bloggs 20/10/03
    m_pGrid    = NULL;
    m_bEditing = FALSE;
    m_pEditWnd = NULL;

    m_nFormat = (DWORD)-1;       // Use default from CGridDefaultCell
    m_crBkClr = CLR_DEFAULT;     // Background colour (or CLR_DEFAULT)
    m_crFgClr = CLR_DEFAULT;     // Forground colour (or CLR_DEFAULT)
    m_nMargin = (UINT)-1;        // Use default from CGridDefaultCell

    delete m_plfFont;
    m_plfFont = NULL;            // Cell font
}

void CGridCell::SetFont(const LOGFONT* plf)
{
    if (plf == NULL)
    {
        delete m_plfFont;
        m_plfFont = NULL;
    }
    else
    {
        if (!m_plfFont)
            m_plfFont = new LOGFONT;
        if (m_plfFont)
            memcpy(m_plfFont, plf, sizeof(LOGFONT)); 
    }
}

LOGFONT* CGridCell::GetFont() const
{
    if (m_plfFont == NULL)
    {
        CGridDefaultCell *pDefaultCell = (CGridDefaultCell*) GetDefaultCell();
        if (!pDefaultCell)
            return NULL;

        return pDefaultCell->GetFont();
    }

    return m_plfFont; 
}

CFont* CGridCell::GetFontObject() const
{
    // If the default font is specified, use the default cell implementation
    if (m_plfFont == NULL)
    {
        CGridDefaultCell *pDefaultCell = (CGridDefaultCell*) GetDefaultCell();
        if (!pDefaultCell)
            return NULL;

        return pDefaultCell->GetFontObject();
    }
    else
    {
        static CFont Font;
        Font.DeleteObject();
        Font.CreateFontIndirect(m_plfFont);
        return &Font;
    }
}

DWORD CGridCell::GetFormat() const
{
    if (m_nFormat == (DWORD)-1)
    {
        CGridDefaultCell *pDefaultCell = (CGridDefaultCell*) GetDefaultCell();
        if (!pDefaultCell)
            return 0;

        return pDefaultCell->GetFormat();
    }

    return m_nFormat; 
}

UINT CGridCell::GetMargin() const           
{
    if (m_nMargin == (UINT)-1)
    {
        CGridDefaultCell *pDefaultCell = (CGridDefaultCell*) GetDefaultCell();
        if (!pDefaultCell)
            return 0;

        return pDefaultCell->GetMargin();
    }

    return m_nMargin; 
}

/////////////////////////////////////////////////////////////////////////////
// GridCell Operations

BOOL CGridCell::Edit(int nRow, int nCol, CRect rect, CPoint /* point */, UINT nID, UINT nChar)
{
    if ( m_bEditing )
	{      
        if (m_pEditWnd)
		    m_pEditWnd->SendMessage ( WM_CHAR, nChar );    
    }  
	else  
	{   
		DWORD dwStyle = ES_LEFT;
		if (GetFormat() & DT_RIGHT) 
			dwStyle = ES_RIGHT;
		else if (GetFormat() & DT_CENTER) 
			dwStyle = ES_CENTER;
		
		m_bEditing = TRUE;
		
		// InPlaceEdit auto-deletes itself
		CGridCtrl* pGrid = GetGrid();
		m_pEditWnd = new CInPlaceEdit(pGrid, rect, dwStyle, nID, nRow, nCol, GetText(), nChar);
    }
    return TRUE;
}

void CGridCell::EndEdit()
{
    if (m_pEditWnd)
        ((CInPlaceEdit*)m_pEditWnd)->EndEdit();
}

void CGridCell::OnEndEdit()
{
    m_bEditing = FALSE;
    m_pEditWnd = NULL;
}

/////////////////////////////////////////////////////////////////////////////
// CGridDefaultCell

CGridDefaultCell::CGridDefaultCell() 
{
#ifdef _WIN32_WCE
    m_nFormat = DT_LEFT|DT_VCENTER|DT_SINGLELINE|DT_NOPREFIX;
#else
    m_nFormat = DT_LEFT|DT_VCENTER|DT_SINGLELINE|DT_NOPREFIX | DT_END_ELLIPSIS;
#endif
    m_crFgClr = CLR_DEFAULT;
    m_crBkClr = CLR_DEFAULT;
	m_crSelectedBkClr = ::GetSysColor(COLOR_HIGHLIGHT);
    m_Size    = CSize(30,10);
    m_dwStyle = 0;

#ifdef _WIN32_WCE
    LOGFONT lf;
    GetObject(GetStockObject(SYSTEM_FONT), sizeof(LOGFONT), &lf);
    SetFont(&lf);
#else // not CE
    NONCLIENTMETRICS ncm;
    ncm.cbSize = sizeof(NONCLIENTMETRICS);
    VERIFY(SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICS), &ncm, 0));
    SetFont(&(ncm.lfMessageFont));
#endif
}

CGridDefaultCell::~CGridDefaultCell()
{
    m_Font.DeleteObject(); 
}

void CGridDefaultCell::SetFont(const LOGFONT* plf)
{
    ASSERT(plf);

    if (!plf) return;

    m_Font.DeleteObject();
    m_Font.CreateFontIndirect(plf);

    CGridCell::SetFont(plf);

    // Get the font size and hence the default cell size
    CDC* pDC = CDC::FromHandle(::GetDC(NULL));
    if (pDC)
    {
        CFont* pOldFont = pDC->SelectObject(&m_Font);

        SetMargin(pDC->GetTextExtent(_T(" "), 1).cx);
        m_Size = pDC->GetTextExtent(_T(" XXXXXXXXXXXX "), 14);
        m_Size.cy = (m_Size.cy * 3) / 2;

        pDC->SelectObject(pOldFont);
        ReleaseDC(NULL, pDC->GetSafeHdc());
    }
    else
    {
        SetMargin(3);
        m_Size = CSize(40,16);
    }
}

LOGFONT* CGridDefaultCell::GetFont() const
{
    ASSERT(m_plfFont);  // This is the default - it CAN'T be NULL!
    return m_plfFont;
}

CFont* CGridDefaultCell::GetFontObject() const
{
    ASSERT(m_Font.GetSafeHandle());
    return (CFont*) &m_Font; 
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美videofree性高清杂交| 中文字幕在线不卡国产视频| 久久久精品日韩欧美| 亚洲欧美日韩国产成人精品影院| 男女男精品视频| 99视频在线观看一区三区| 欧美一区2区视频在线观看| 国产精品麻豆一区二区| 久草精品在线观看| 欧美乱妇23p| 中文字幕亚洲不卡| 久久成人羞羞网站| 欧美日韩一区二区三区在线| 国产精品三级电影| 日本在线不卡视频| 91小视频在线观看| 久久品道一品道久久精品| 亚洲成av人影院在线观看网| 91视频国产资源| 亚洲国产成人一区二区三区| 国产一区二区三区日韩| 欧美日韩成人综合在线一区二区| 中文字幕一区二区三区视频| 东方欧美亚洲色图在线| 欧美mv日韩mv亚洲| 日韩二区三区在线观看| 欧美日韩免费视频| 亚洲一区二区中文在线| 色综合天天综合狠狠| 国产精品久久毛片av大全日韩| 国产乱子伦视频一区二区三区| 欧美电视剧免费全集观看| 日韩黄色小视频| 91麻豆精品久久久久蜜臀| 午夜激情一区二区三区| 欧美性大战久久久久久久| 经典三级视频一区| 日韩精品一区二区三区老鸭窝| 美日韩一区二区三区| 欧美日韩不卡一区| 亚洲mv在线观看| 欧美狂野另类xxxxoooo| 日韩av电影天堂| 日韩精品中文字幕一区二区三区 | 国产精品免费视频观看| 福利电影一区二区三区| 国产精品每日更新| 91福利视频在线| 三级影片在线观看欧美日韩一区二区| 欧美私模裸体表演在线观看| 日韩中文字幕区一区有砖一区| 884aa四虎影成人精品一区| 日本视频中文字幕一区二区三区| 日韩美女主播在线视频一区二区三区 | 爽好多水快深点欧美视频| 欧美精品在线观看播放| 久久99久久99| 国产精品久久久久久久久动漫| aaa亚洲精品| 丝袜诱惑亚洲看片| 欧美tk丨vk视频| 99视频精品免费视频| 夜夜精品视频一区二区 | 欧美激情一区二区| 国产成人精品三级| 亚洲码国产岛国毛片在线| 欧美天天综合网| 久久国产精品第一页| 欧美国产一区在线| 欧美日韩国产免费一区二区| 国产超碰在线一区| 亚洲精品国产a久久久久久 | 中文字幕第一区综合| 色丁香久综合在线久综合在线观看| 免费观看成人鲁鲁鲁鲁鲁视频| 中文字幕一区二区三区在线不卡| 欧美一区二区三区精品| 成人亚洲一区二区一| 污片在线观看一区二区| 久久精品视频网| 欧美日韩aaa| 不卡免费追剧大全电视剧网站| 天天影视网天天综合色在线播放 | 亚洲乱码国产乱码精品精98午夜| 337p亚洲精品色噜噜狠狠| 风间由美性色一区二区三区| 日本免费在线视频不卡一不卡二| |精品福利一区二区三区| 欧美一级国产精品| 色94色欧美sute亚洲13| 国产麻豆9l精品三级站| 午夜精品国产更新| 国产精品麻豆99久久久久久| 精品国产自在久精品国产| 在线观看一区二区视频| 成人午夜在线播放| 精品一区二区成人精品| 香蕉久久一区二区不卡无毒影院 | 欧美最新大片在线看| 国产精品亚洲一区二区三区在线| 日韩黄色片在线观看| 亚洲欧洲综合另类| 国产欧美视频一区二区| 日韩欧美国产一区二区在线播放| 欧美日韩一区二区电影| 色综合久久综合中文综合网| 99精品在线观看视频| 国产一区二区在线影院| 美女高潮久久久| 奇米色一区二区| 免费国产亚洲视频| 亚洲va韩国va欧美va| 亚洲伊人色欲综合网| 亚洲黄色性网站| 悠悠色在线精品| 亚洲一区二区高清| 亚洲一区二区三区在线看| 一区二区三区自拍| 日韩毛片精品高清免费| 中文字幕亚洲在| 亚洲美腿欧美偷拍| 亚洲激情校园春色| 亚洲精品大片www| 亚洲午夜激情网页| 亚洲一区二区偷拍精品| 亚洲一区二区三区美女| 亚洲图片一区二区| 污片在线观看一区二区| 久久精品72免费观看| 精品亚洲成a人在线观看| 激情国产一区二区| 国产乱人伦偷精品视频不卡| 成人激情开心网| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 欧美一区二区美女| 日韩一级完整毛片| 久久综合久久综合久久| 国产精品色婷婷| 亚洲影视在线播放| 免费成人深夜小野草| 国产成人在线视频网站| a在线欧美一区| 欧美日韩亚洲综合一区 | 中文字幕免费一区| 一二三区精品视频| 久久99精品国产麻豆婷婷| 国产aⅴ综合色| 欧美在线制服丝袜| 欧美成人女星排名| 国产精品美女久久久久高潮| 亚洲图片一区二区| 国产精品一区免费视频| 日本高清不卡视频| 日韩欧美激情四射| 亚洲素人一区二区| 久久国产日韩欧美精品| 99国产精品久久久久久久久久| 欧美日韩1区2区| 国产视频一区在线观看 | 亚洲欧洲精品一区二区三区 | 亚洲欧美色一区| 午夜精品一区二区三区电影天堂| 国产在线精品一区二区夜色| 在线观看不卡一区| 久久亚洲精品国产精品紫薇| 亚洲曰韩产成在线| 国产综合久久久久久鬼色| 色综合中文字幕国产| 久久精品免视看| 日韩成人免费电影| av成人老司机| 国产三级三级三级精品8ⅰ区| 亚洲国产视频a| 粗大黑人巨茎大战欧美成人| 日韩欧美国产1| 亚洲国产精品影院| 成人av午夜电影| 久久日韩精品一区二区五区| 亚洲午夜一区二区三区| 懂色av一区二区三区免费看| 精品久久久久久亚洲综合网| 亚洲香肠在线观看| fc2成人免费人成在线观看播放| 精品国产乱码久久久久久1区2区| 亚洲午夜激情网站| 色噜噜狠狠成人中文综合| 国产精品视频一二三区| 国产在线国偷精品免费看| 91精品在线观看入口| 一区二区免费在线| eeuss鲁片一区二区三区在线看| 国产欧美日韩精品一区| 久久99国内精品| 日韩美女一区二区三区四区| 日本不卡1234视频| 91麻豆精品国产91久久久资源速度| 一区二区三区四区av| 色综合咪咪久久| 亚洲一区二区三区激情| 欧美在线色视频|