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

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

?? gridcell.cpp

?? 是一個(gè)GridTree的控件
?? CPP
字號(hào):
// 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 <cmaunder@mail.com>
// Copyright (c) 1998-2002. 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 "..\Include\GridCell.h"
#include "..\Include\InPlaceEdit.h"
#include "..\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_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; 
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美激情一区在线观看| 欧美日韩一区二区三区四区 | 在线一区二区三区四区五区| 激情综合色丁香一区二区| 国产精品人妖ts系列视频| 亚洲精品一区二区三区在线观看| 日韩欧美激情四射| 精品成人免费观看| 日韩毛片视频在线看| 国产精品国产三级国产aⅴ无密码| 91免费版pro下载短视频| 免费成人在线视频观看| 国产一区二区在线影院| va亚洲va日韩不卡在线观看| 欧美天堂一区二区三区| 欧美一级日韩免费不卡| 欧美精彩视频一区二区三区| 亚洲免费观看高清完整| 狠狠色狠狠色综合日日91app| 国产精华液一区二区三区| 99热99精品| 久久综合色婷婷| 亚洲高清免费视频| 成人综合婷婷国产精品久久蜜臀| 欧美三级电影网站| 国产精品女主播在线观看| 麻豆成人免费电影| 欧美私人免费视频| 国产精品久久久99| 激情久久五月天| 91精品久久久久久久久99蜜臂| 久久新电视剧免费观看| 日本不卡不码高清免费观看 | 国产精品99久久久久| 欧美亚洲综合色| 亚洲小说欧美激情另类| 色拍拍在线精品视频8848| 国产精品久久久99| 成人一区在线看| 亚洲精品写真福利| 欧美日韩一区二区三区视频| 国产三区在线成人av| 成人三级伦理片| 中文字幕高清不卡| www.亚洲精品| 亚洲激情欧美激情| 91成人在线免费观看| 香蕉久久一区二区不卡无毒影院 | 中文字幕欧美区| 不卡一区二区在线| 一区二区三区中文在线观看| 欧洲精品中文字幕| 久久97超碰国产精品超碰| 精品国产乱码久久| 99久久久久免费精品国产| 成人免费在线观看入口| 欧美日韩高清在线播放| 国产一区在线精品| 亚洲免费观看视频| 国产亚洲女人久久久久毛片| 91麻豆精品视频| 国产在线播放一区二区三区| 国产精品不卡一区二区三区| 这里只有精品电影| 久久精品国产77777蜜臀| 亚洲天堂免费在线观看视频| 欧美一级一区二区| 色婷婷av一区| 成人免费电影视频| 国产成人精品免费| 韩国av一区二区三区在线观看 | 99久久精品国产一区二区三区| 视频一区中文字幕国产| 国产精品久久久久久久久免费桃花 | 久久综合久久综合久久| 欧美丝袜第三区| 色婷婷激情一区二区三区| 国产盗摄精品一区二区三区在线 | 成人激情开心网| 国产成a人亚洲| 国产精品一区二区视频| 国产一区久久久| 国产一区二区不卡| 成人妖精视频yjsp地址| 成人综合婷婷国产精品久久免费| 国产成人一级电影| 国产99久久久国产精品潘金| 成人晚上爱看视频| 成人av免费网站| 在线观看欧美日本| 欧美电影在哪看比较好| 日韩精品综合一本久道在线视频| 日韩欧美成人激情| 国产亚洲一区字幕| 国产精品嫩草影院av蜜臀| 亚洲美女屁股眼交| 日欧美一区二区| 成人av高清在线| 在线播放/欧美激情| 中文字幕av资源一区| 三级不卡在线观看| 国产成人综合精品三级| 91麻豆高清视频| 日韩欧美成人激情| 亚洲天堂精品在线观看| 日本女优在线视频一区二区| 国精产品一区一区三区mba桃花| 99综合电影在线视频| 777xxx欧美| 日韩一区在线看| 国产又黄又大久久| 欧美日韩你懂得| 中文字幕一区二| 豆国产96在线|亚洲| 制服丝袜激情欧洲亚洲| 亚洲欧洲在线观看av| 久久99久久久久久久久久久| 一本在线高清不卡dvd| 久久精品一区二区| 极品少妇xxxx偷拍精品少妇| 色呦呦国产精品| 中文文精品字幕一区二区| 国产综合色视频| 欧美va在线播放| 久久疯狂做爰流白浆xx| 6080日韩午夜伦伦午夜伦| 天天综合天天做天天综合| 日本久久电影网| 一区二区三区四区不卡视频| 99国产精品视频免费观看| 综合色中文字幕| 欧美视频一区二区三区| 视频一区视频二区中文| 欧美一区二区三区男人的天堂| 亚洲综合视频网| 欧美精品v国产精品v日韩精品 | 337p日本欧洲亚洲大胆精品| 国产露脸91国语对白| 国产日韩视频一区二区三区| 国v精品久久久网| 亚洲精品成人悠悠色影视| 欧美手机在线视频| 国产在线一区二区| 国产精品嫩草影院com| 在线欧美日韩精品| 久久疯狂做爰流白浆xx| 国产日韩欧美精品综合| 99re6这里只有精品视频在线观看| 亚洲国产综合人成综合网站| 日韩精品一区二区三区视频播放 | 亚欧色一区w666天堂| 日韩一二三四区| 91视频免费播放| 国产福利不卡视频| 日日摸夜夜添夜夜添亚洲女人| 91美女片黄在线| 亚洲欧美日韩人成在线播放| 99久久精品国产毛片| 国产精品久久久久久久久搜平片 | 欧美日韩国产不卡| 另类调教123区| 日韩一区日韩二区| 久久一留热品黄| 欧美性大战久久久| av网站一区二区三区| 国模套图日韩精品一区二区| 亚洲高清视频在线| 一区二区久久久久久| 日韩一区在线播放| 久久精品一级爱片| 91福利视频久久久久| jvid福利写真一区二区三区| 毛片av一区二区| 日本中文字幕一区| 亚洲va欧美va人人爽午夜| 1区2区3区国产精品| 国产精品传媒在线| 亚洲欧洲日韩女同| 中文字幕亚洲欧美在线不卡| 国产免费久久精品| 亚洲日本中文字幕区| 亚洲日本成人在线观看| 亚洲婷婷综合久久一本伊一区| 亚洲最大成人综合| 日韩精彩视频在线观看| 乱中年女人伦av一区二区| 老司机免费视频一区二区| 精品一二线国产| 国产91精品在线观看| 色综合天天综合网国产成人综合天 | 岛国一区二区三区| 日本韩国欧美一区二区三区| 欧美日韩国产大片| 国产午夜精品一区二区| 亚洲一区二区在线播放相泽| 蜜臀av一区二区| 91美女在线看| 久久色在线观看| 亚洲免费av观看| 成人美女视频在线看|