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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? scribdoc.cpp

?? 很有用的mfc書(shū)籍,看后感觸很深,大家都收藏啊
?? CPP
字號(hào):
// ScribDoc.cpp : implementation of the CScribbleDoc class
//
// This is a part of the Microsoft Foundation Classes C++ library.
// Copyright (C) 1992-1995 Microsoft Corporation
// All rights reserved.
//
// This source code is only intended as a supplement to the
// Microsoft Foundation Classes Reference and related
// electronic documentation provided with the library.
// See these sources for detailed information regarding the
// Microsoft Foundation Classes product.

#include "stdafx.h"
#include "Scribble.h"

#include "ScribDoc.h"
#include "PenDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CScribbleDoc

IMPLEMENT_DYNCREATE(CScribbleDoc, CDocument)

BEGIN_MESSAGE_MAP(CScribbleDoc, CDocument)
	//{{AFX_MSG_MAP(CScribbleDoc)
	ON_COMMAND(ID_EDIT_CLEAR_ALL, OnEditClearAll)
	ON_COMMAND(ID_PEN_THICK_OR_THIN, OnPenThickOrThin)
	ON_UPDATE_COMMAND_UI(ID_EDIT_CLEAR_ALL, OnUpdateEditClearAll)
	ON_UPDATE_COMMAND_UI(ID_PEN_THICK_OR_THIN, OnUpdatePenThickOrThin)
	ON_COMMAND(ID_PEN_WIDTHS, OnPenWidths)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CScribbleDoc construction/destruction

CScribbleDoc::CScribbleDoc()
{
	// TODO: add one-time construction code here

}

CScribbleDoc::~CScribbleDoc()
{
}

BOOL CScribbleDoc::OnNewDocument()
{
	if (!CDocument::OnNewDocument())
		return FALSE;
	InitDocument();
	return TRUE;
}

/////////////////////////////////////////////////////////////////////////////
// CScribbleDoc serialization

void CScribbleDoc::Serialize(CArchive& ar)
{
	if (ar.IsStoring())
	{
	}
	else
	{
	}
	m_strokeList.Serialize(ar);
}

/////////////////////////////////////////////////////////////////////////////
// CScribbleDoc diagnostics

#ifdef _DEBUG
void CScribbleDoc::AssertValid() const
{
	CDocument::AssertValid();
}

void CScribbleDoc::Dump(CDumpContext& dc) const
{
	CDocument::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CScribbleDoc commands

BOOL CScribbleDoc::OnOpenDocument(LPCTSTR lpszPathName) 
{
	if (!CDocument::OnOpenDocument(lpszPathName))
		return FALSE;
	InitDocument(); 
	return TRUE;
}

void CScribbleDoc::DeleteContents() 
{
	while (!m_strokeList.IsEmpty())
	{
		delete m_strokeList.RemoveHead();
	}
	CDocument::DeleteContents();
}

void CScribbleDoc::InitDocument()
{
	m_bThickPen = FALSE;
	m_nThinWidth = 2;   // default thin pen is 2 pixels wide
	m_nThickWidth = 5;  // default thick pen is 5 pixels wide
	ReplacePen();       // initialize pen according to current width
}

CStroke* CScribbleDoc::NewStroke()
{
	CStroke* pStrokeItem = new CStroke(m_nPenWidth);
	m_strokeList.AddTail(pStrokeItem);
	SetModifiedFlag();  // Mark the document as having been modified, for
						// purposes of confirming File Close.
	return pStrokeItem;
}




/////////////////////////////////////////////////////////////////////////////
// CStroke

IMPLEMENT_SERIAL(CStroke, CObject, 1)
CStroke::CStroke()
{
	// This empty constructor should be used by serialization only
}

CStroke::CStroke(UINT nPenWidth)
{
	m_nPenWidth = nPenWidth;
}

void CStroke::Serialize(CArchive& ar)
{
	if (ar.IsStoring())
	{
		ar << (WORD)m_nPenWidth;
		m_pointArray.Serialize(ar);
	}
	else
	{
		WORD w;
		ar >> w;
		m_nPenWidth = w;
		m_pointArray.Serialize(ar);
	}
}

BOOL CStroke::DrawStroke(CDC* pDC)
{
	CPen penStroke;
	if (!penStroke.CreatePen(PS_SOLID, m_nPenWidth, RGB(0,0,0)))
		return FALSE;
	CPen* pOldPen = pDC->SelectObject(&penStroke);
	pDC->MoveTo(m_pointArray[0]);
	for (int i=1; i < m_pointArray.GetSize(); i++)
	{
		pDC->LineTo(m_pointArray[i]);
	}

	pDC->SelectObject(pOldPen);
	return TRUE;
}
void CScribbleDoc::OnEditClearAll() 
{
	DeleteContents();
	SetModifiedFlag();  // Mark the document as having been modified, for
						// purposes of confirming File Close.
	UpdateAllViews(NULL);
}

void CScribbleDoc::OnPenThickOrThin() 
{
	// Toggle the state of the pen between thin or thick.
	m_bThickPen = !m_bThickPen;

	// Change the current pen to reflect the new user-specified width.
	ReplacePen();
}

void CScribbleDoc::ReplacePen()
{
	m_nPenWidth = m_bThickPen? m_nThickWidth : m_nThinWidth;

	// Change the current pen to reflect the new user-specified width.
	m_penCur.DeleteObject();
	m_penCur.CreatePen(PS_SOLID, m_nPenWidth, RGB(0,0,0)); // solid black
}

void CScribbleDoc::OnUpdateEditClearAll(CCmdUI* pCmdUI) 
{
	// Enable the command user interface object (menu item or tool bar
	// button) if the document is non-empty, i.e., has at least one stroke.
	pCmdUI->Enable(!m_strokeList.IsEmpty());
}

void CScribbleDoc::OnUpdatePenThickOrThin(CCmdUI* pCmdUI) 
{
	// Add check mark to Draw Thick Line menu item, if the current
	// pen width is "thick".
	pCmdUI->SetCheck(m_bThickPen);
}

void CScribbleDoc::OnPenWidths() 
{
	CPenWidthsDlg dlg;
	// Initialize dialog data
	dlg.m_nThinWidth = m_nThinWidth;
	dlg.m_nThickWidth = m_nThickWidth;

	// Invoke the dialog box
	if (dlg.DoModal() == IDOK)
	{
		// retrieve the dialog data
		m_nThinWidth = dlg.m_nThinWidth;
		m_nThickWidth = dlg.m_nThickWidth;

		// Update the pen that is used by views when drawing new strokes,
		// to reflect the new pen width definitions for "thick" and "thin".
		ReplacePen();
	}
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
麻豆久久一区二区| 麻豆成人久久精品二区三区红| 久久影视一区二区| 日韩色在线观看| 欧美成人a在线| 国产午夜一区二区三区| 欧美国产日本韩| 亚洲视频在线一区观看| 一区二区成人在线观看| 视频在线观看一区二区三区| 日本不卡视频一二三区| 九九热在线视频观看这里只有精品| 日本在线不卡一区| 国产在线精品免费av| 国产91对白在线观看九色| 不卡视频免费播放| 欧美日韩亚洲综合在线| 欧美白人最猛性xxxxx69交| 国产欧美日韩一区二区三区在线观看| 日韩伦理电影网| 亚洲国产日韩一区二区| 男女男精品网站| 成人中文字幕在线| 欧美三日本三级三级在线播放| 91精品国产91久久久久久一区二区| 欧美一级搡bbbb搡bbbb| 国产精品女同互慰在线看| 亚洲激情男女视频| 丝袜诱惑制服诱惑色一区在线观看| 狠狠色丁香婷婷综合久久片| www.亚洲色图| 91精品在线一区二区| 久久精品一级爱片| 亚洲电影在线免费观看| 国产一区二区免费视频| 在线视频欧美精品| 久久久天堂av| 日韩激情一区二区| 成人美女视频在线看| 91精品麻豆日日躁夜夜躁| 国产精品伦理在线| 日本成人在线看| 在线日韩一区二区| 国产精品色在线观看| 美女视频黄免费的久久| 欧美在线不卡视频| 亚洲国产精品高清| 蜜臀av一区二区在线观看| 色婷婷av一区| 亚洲欧洲成人自拍| 国产一区二三区| 欧美一区二区三区在线| 亚洲影视在线观看| 99国产精品国产精品久久| 久久嫩草精品久久久精品| 亚洲成精国产精品女| 欧洲一区二区三区在线| 亚洲三级电影网站| 国产91精品一区二区麻豆网站| 欧美成人福利视频| 蜜桃av一区二区| 91精品国产综合久久婷婷香蕉| 玉米视频成人免费看| www.亚洲免费av| 国产精品久久久久7777按摩| 国产一区二区不卡老阿姨| 精品国产区一区| 国内外成人在线| 欧美精品一区二区高清在线观看| 日本亚洲电影天堂| 欧美精品少妇一区二区三区| 一区二区三区毛片| 欧美做爰猛烈大尺度电影无法无天| 亚洲欧美激情插| 一本到不卡免费一区二区| 一区二区三区四区中文字幕| 色天使色偷偷av一区二区| 亚洲综合在线五月| 欧美日韩一级二级三级| 日韩福利电影在线观看| 日韩三级免费观看| 韩国精品在线观看| 国产日产欧美一区| 成人精品鲁一区一区二区| 亚洲欧洲美洲综合色网| 在线日韩av片| 美女视频黄a大片欧美| 久久久久久久免费视频了| 高清在线观看日韩| 亚洲欧美日韩国产手机在线| 在线国产电影不卡| 免费成人在线影院| 国产亚洲午夜高清国产拍精品| 成人福利电影精品一区二区在线观看| 亚洲三级小视频| 欧美日韩五月天| 激情图片小说一区| 国产精品护士白丝一区av| 在线观看亚洲一区| 麻豆成人91精品二区三区| 国产欧美日韩视频在线观看| 91国偷自产一区二区开放时间 | 日本视频一区二区| 日韩精品一区二区三区视频在线观看| 国产成人免费网站| 亚洲一线二线三线久久久| 欧美成人高清电影在线| 色屁屁一区二区| 国内久久精品视频| 亚洲老妇xxxxxx| 久久女同性恋中文字幕| 在线欧美日韩国产| 国产精选一区二区三区| 亚洲一区二区三区四区的| 欧美精品一区二区高清在线观看| 色av成人天堂桃色av| 精品一区二区三区久久| 中文在线一区二区| 日韩一区二区三| 欧美中文字幕一区二区三区亚洲| 精品一区二区在线看| 亚洲国产成人av好男人在线观看| 日本一区二区成人在线| 欧美一级黄色片| 欧美日韩国产美女| 91免费看片在线观看| 国产成人亚洲综合a∨婷婷 | 国产精品福利一区| 日韩美女在线视频 | 国内精品伊人久久久久av一坑| 亚洲激情综合网| 国产精品电影一区二区三区| 精品av综合导航| 欧美一区二区三区视频免费| 色欧美乱欧美15图片| 成人av网站在线| 国产不卡在线播放| 久久99国内精品| 日本中文在线一区| 日韩精品91亚洲二区在线观看| 亚洲伦理在线精品| 亚洲人被黑人高潮完整版| 中文字幕不卡在线观看| 国产午夜精品福利| 26uuu成人网一区二区三区| 日韩美女在线视频| 欧美一区二区免费| 欧美一区二区美女| 日韩一级大片在线观看| 欧美一区二区国产| 精品剧情在线观看| 精品国产免费视频| www国产亚洲精品久久麻豆| 日韩视频中午一区| 欧美不卡一二三| 久久久五月婷婷| 国产精品久久久久久久裸模| 国产精品卡一卡二卡三| 亚洲视频在线一区观看| 中文字幕一区二区5566日韩| 中文字幕制服丝袜成人av| 亚洲另类在线视频| 亚洲国产日产av| 麻豆免费精品视频| 国产成人综合网| 色综合久久天天| 欧美色大人视频| 日韩一区二区视频在线观看| 欧美草草影院在线视频| 中文字幕精品综合| 亚洲精品老司机| 蜜桃视频一区二区三区在线观看| 久久99久久久久| 成人av资源在线| 欧美三级乱人伦电影| 日韩一本二本av| 中文字幕不卡的av| 五月天一区二区| 国产福利一区二区三区视频在线| 一本大道av一区二区在线播放| 欧美视频在线不卡| 久久久综合网站| 亚洲一级在线观看| 国产精品一区一区三区| 欧洲亚洲精品在线| 国产亚洲午夜高清国产拍精品 | 免费在线成人网| a级高清视频欧美日韩| 欧美片网站yy| 综合婷婷亚洲小说| 美女一区二区三区| 色哟哟精品一区| 国产片一区二区| 免费人成黄页网站在线一区二区| 丁香天五香天堂综合| 91精品国产综合久久福利| 国产精品国产自产拍高清av| 麻豆精品一二三| 欧美在线一二三四区| 国产精品网站在线播放|