亚洲欧美第一页_禁久久精品乱码_粉嫩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_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一区二区三区免费野_久草精品视频
制服丝袜av成人在线看| 亚洲欧美怡红院| 国产精品久久久久一区二区三区| 日韩一区欧美小说| 黄一区二区三区| 色婷婷国产精品综合在线观看| 日韩欧美国产麻豆| 樱花影视一区二区| 丁香一区二区三区| 久久亚洲捆绑美女| 日韩制服丝袜先锋影音| 99久久精品国产网站| 精品第一国产综合精品aⅴ| 亚洲综合在线第一页| 丁香婷婷综合五月| 久久精品一区二区三区不卡牛牛| 午夜精品在线看| 91久久精品日日躁夜夜躁欧美| 精品国产免费久久| 美女一区二区在线观看| 欧美日韩mp4| 亚洲成人tv网| 欧美日韩精品久久久| 一区二区三区精品在线| 91免费国产视频网站| 中文字幕制服丝袜成人av| 国产乱码精品一区二区三区av| 日韩欧美在线不卡| 日本成人中文字幕在线视频| 欧美日本韩国一区| 日本在线不卡视频一二三区| 欧美视频一区在线| 亚洲成人午夜影院| 欧美嫩在线观看| 亚洲成人你懂的| 制服丝袜av成人在线看| 日韩一区精品视频| 欧美一区二区三区影视| 日本特黄久久久高潮| 欧美久久一二区| 美国欧美日韩国产在线播放| 欧美一级理论片| 久久国产婷婷国产香蕉| 欧美va亚洲va在线观看蝴蝶网| 懂色av一区二区三区蜜臀| 中文字幕在线不卡国产视频| 99久久国产综合精品麻豆| 亚洲另类色综合网站| 欧美最新大片在线看 | 欧美一区二区三区视频在线 | 欧美性猛交一区二区三区精品| 一区二区三区在线免费| 欧美日韩免费观看一区三区| 首页国产丝袜综合| 久久久精品欧美丰满| 99久久婷婷国产综合精品| 亚洲电影一级黄| 久久久另类综合| 色八戒一区二区三区| 日本欧美一区二区在线观看| 久久久99精品免费观看| 91偷拍与自偷拍精品| 日本伊人午夜精品| 中文字幕一区二区三区不卡| 国产又粗又猛又爽又黄91精品| 欧美美女直播网站| 亚洲男人天堂av网| 91蝌蚪porny| 国产精品久久久久久久久搜平片| 精品亚洲porn| 正在播放一区二区| 视频一区二区欧美| 欧美日韩国产123区| 国产精品的网站| a级精品国产片在线观看| 日本一区二区免费在线观看视频| 国产在线精品国自产拍免费| 91精品国产综合久久久蜜臀粉嫩 | 激情欧美日韩一区二区| 日韩女同互慰一区二区| 午夜精品福利一区二区三区蜜桃| 91啦中文在线观看| 亚洲欧美激情插| 欧洲亚洲精品在线| 亚洲尤物视频在线| 欧美日韩精品系列| 精品美女在线观看| 欧美日韩国产一级片| 成人福利在线看| 精品一区二区三区日韩| 亚洲国产婷婷综合在线精品| 久久久久久久久久久久电影| 欧美三级电影在线观看| av亚洲精华国产精华精| 国产一区在线观看麻豆| 免费高清成人在线| 亚洲猫色日本管| 中文字幕亚洲欧美在线不卡| 欧美白人最猛性xxxxx69交| 欧美日韩午夜在线| 欧美影视一区在线| 99精品欧美一区| 欧美精品久久久久久久多人混战 | 久久国产精品99精品国产| 亚洲一区二区在线免费观看视频 | 欧美一级电影网站| 欧美精品亚洲二区| 欧美日韩亚洲不卡| 欧美日韩免费电影| 欧美日免费三级在线| 色伊人久久综合中文字幕| 国产成人精品1024| 懂色av一区二区夜夜嗨| 国产成人在线视频网址| 国产成人午夜电影网| 国产一区二区主播在线| 国产乱一区二区| 国产成人午夜视频| 成人激情免费网站| 97成人超碰视| 欧美视频一区二区三区| 91久久精品一区二区| 欧美视频完全免费看| 欧美日韩三级一区二区| 欧美一区二区三区爱爱| 欧美成人艳星乳罩| 久久久久久**毛片大全| 国产精品久久久一本精品| 亚洲人成网站精品片在线观看| 亚洲精品大片www| 亚洲成人激情综合网| 蜜桃精品视频在线观看| 国产一区二区在线看| 成人av电影在线网| 色婷婷亚洲精品| 欧美巨大另类极品videosbest| 日韩视频一区在线观看| 国产农村妇女毛片精品久久麻豆| 国产精品入口麻豆原神| 亚洲综合免费观看高清在线观看| 天天色 色综合| 国产一区二区三区精品视频| a亚洲天堂av| 7777精品伊人久久久大香线蕉| 精品国一区二区三区| 久久99九九99精品| 波多野结衣欧美| 欧美日本韩国一区二区三区视频| 精品国产乱码久久久久久久久 | 欧美日韩亚洲综合| 精品日韩一区二区三区| 亚洲日本在线天堂| 奇米综合一区二区三区精品视频| 国产在线视频一区二区| 国产欧美精品国产国产专区| 亚洲美女区一区| 久久er99热精品一区二区| 成人av网站在线观看免费| 欧美日韩1234| 国产精品传媒入口麻豆| 婷婷丁香激情综合| 成人激情动漫在线观看| 欧美一区二区三区视频在线| 国产欧美精品一区aⅴ影院| 性做久久久久久| 99re这里只有精品视频首页| 欧美一区二区三区免费观看视频| 国产精品天天摸av网| 另类中文字幕网| 欧美丝袜丝交足nylons| 国产精品污污网站在线观看| 精品国产乱码久久久久久免费| 欧美美女bb生活片| 欧美电影免费观看高清完整版| 久久综合久久综合亚洲| 亚洲欧美中日韩| 婷婷国产在线综合| 国产精品综合网| 91亚洲精品久久久蜜桃网站| 欧美日韩一卡二卡| 337p粉嫩大胆色噜噜噜噜亚洲| 欧美激情一区二区三区蜜桃视频| 亚洲免费观看高清在线观看| 日韩福利视频网| 成人a免费在线看| 制服.丝袜.亚洲.另类.中文| 国产女人水真多18毛片18精品视频| 亚洲婷婷综合色高清在线| 日韩中文字幕区一区有砖一区| 国产精品亚洲视频| 欧美日韩性生活| 国产精品美女久久久久高潮| 日韩成人一级片| 波多野结衣亚洲一区| 欧美一级片在线| 亚洲视频一区二区在线| 精品一二三四区| 欧美日韩国产小视频| 欧美国产亚洲另类动漫| 蜜桃av一区二区在线观看|