DrawCli一個簡單的繪圖軟件

Drawcli是VS2010中的一個示例程序,可以進行簡單的繪圖操做,例如線、矩形、圓角矩形、多邊形等,位於VS安裝目錄"Microsoft Visual Studio 10.0\Samples\2052\VC2010Samples\C++\MFC\ole\drawcli"下。函數

1.文件工具

(1)new,open,Close,save,PrintSetup:參考另外一篇博客:http://www.javashuo.com/article/p-ubsmshrg-hq.htmlthis

(2)Print和PrintPreview:參考另外一篇博客:http://www.javashuo.com/article/p-btcsrcvf-hk.html.net

(3)SendMail:參考另外一篇博客:http://www.javashuo.com/article/p-szitaqmj-he.htmlcode

(4)SummaryInfo摘要:blog

開始時間:文檔

FILETIME now;
CoFileTimeNow(&now);
__int64 startEdit = *(__int64*)&now;

時間:get

FILETIME now;
CoFileTimeNow(&now);
__int64 currTime = *(__int64*)&now;
__int64 thisSession = currTime - startEdit;
ULONG editMinutes = (ULONG)(thisSession /600000000);

TCHAR buff[20];
_stprintf_s(buff, 20, _T("%lu min"), editMinutes);

2編輯博客

3.視圖it

(1)工具欄:ID_VIEW_TOOLBAR

(2)狀態欄:ID_VIEW_STATUS_BAR

(3)網格:

ON_COMMAND(ID_VIEW_GRID, OnViewGrid)

void CDrawView::OnViewGrid()
{
	m_bGrid = !m_bGrid;
	Invalidate(FALSE);
//整個窗口客戶區無效,須要重繪,窗口類提供了WM_PAINT的消息處理函數OnPaint,OnPaint負責重繪窗口,在視圖類的OnPaint函數中調用了OnDraw函數,實際的重繪工做由OnDraw來完成。
}

void CDrawView::OnDraw(CDC* pDC)
{
    if (!pDC->IsPrinting() && m_bGrid)
		DrawGrid(pDrawDC);
}

void CDrawView::DrawGrid(CDC* pDC)
{
	CDrawDoc* pDoc = GetDocument();

	COLORREF oldBkColor = pDC->SetBkColor(pDoc->GetPaperColor());

	CRect rect;
	rect.left = -pDoc->GetSize().cx / 2;
	rect.top = -pDoc->GetSize().cy / 2;
	rect.right = rect.left + pDoc->GetSize().cx;
	rect.bottom = rect.top + pDoc->GetSize().cy;

	// Center lines
	CPen penDash;
	penDash.CreatePen(PS_DASH, 1, m_gridColor);
	CPen* pOldPen = pDC->SelectObject(&penDash);

	pDC->MoveTo(0, rect.top);
	pDC->LineTo(0, rect.bottom);
	pDC->MoveTo(rect.left, 0);
	pDC->LineTo(rect.right, 0);

	// Major unit lines
	CPen penDot;
	penDot.CreatePen(PS_DOT, 1, m_gridColor);
	pDC->SelectObject(&penDot);

	for (int x = rect.left / 100 * 100; x < rect.right; x += 100)
	{
		if (x != 0)
		{
			pDC->MoveTo(x, rect.top);
			pDC->LineTo(x, rect.bottom);
		}
	}

	for (int y = rect.top / 100 * 100; y < rect.bottom; y += 100)
	{
		if (y != 0)
		{
			pDC->MoveTo(rect.left, y);
			pDC->LineTo(rect.right, y);
		}
	}

	// Outlines
	CPen penSolid;
	penSolid.CreatePen(PS_SOLID, 1, m_gridColor);
	pDC->SelectObject(&penSolid);
	pDC->MoveTo(rect.left, rect.top);
	pDC->LineTo(rect.right, rect.top);
	pDC->LineTo(rect.right, rect.bottom);
	pDC->LineTo(rect.left, rect.bottom);
	pDC->LineTo(rect.left, rect.top);

	pDC->SelectObject(pOldPen);
	pDC->SetBkColor(oldBkColor);
}

(4)背景顏色

CColorDialog dlg;
if (dlg.DoModal() != IDOK)
	return;

m_paperColor = dlg.GetColor();
SetModifiedFlag();//用戶是否修改了屬性頁面。 TRUE表示控件狀態已被改變;FALSE表示控件的狀態剛被保存。 
UpdateAllViews(NULL);//文檔被修改後可調用此函數,把文檔被修改的信息通知給每一個視圖。

未完待續

相關文章
相關標籤/搜索