www.gusucode.com > VC++表达式解析(计算)工具源代码-源码程序 > VC++表达式解析(计算)工具源代码-源码程序\code\StaticArray.cpp

    // StaticArray.cpp: implementation of the CStaticArray class.
// Download by http://www.NewXing.com
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "Computer.h"
#include "StaticArray.h"

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

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CStaticArray::CStaticArray()
{
	m_Topleft=CPoint(0,0);
	m_width=100,m_height=20;
}

CStaticArray::~CStaticArray()
{
	for(int i=0;i<m_StaticArray.GetSize();i++)
	{
		CEdit* pEdit=(CEdit*)m_StaticArray.GetAt(i);
		delete pEdit;
	}
	m_StaticArray.RemoveAll();
}

BOOL CStaticArray::Create(CPoint point,CWnd* pParentWnd,int width,int height,CStringResolution*formula,DWORD dwStyle)
{
	m_Topleft=point;
	m_width=width,m_height=height;
	int i;
	int num=formula->GetVariantTableSize();
	CPoint p=point;
	CSize size(width,height);
	const COperand* pOd=0;
	if(formula)
		pOd=formula->GetVariantTable();
	for(i=0;i<num;i++)
	{
		CStatic* pStatic=new CStatic;
		pStatic->Create("",dwStyle,CRect(p,size),pParentWnd,2000+i);
		if(pOd)
			pStatic->SetWindowText(pOd[i].m_name+" = ");
		m_StaticArray.Add(pStatic);
		p.y+=height-1;
	}
	return TRUE;
}


BOOL CStaticArray::draw()
{
	for(int i=0;i<m_StaticArray.GetSize();i++)
	{
		CStatic*pStatic=(CStatic*)m_StaticArray.GetAt(i);
		pStatic->ShowWindow(SW_SHOW);
	}
	return TRUE;
}

BOOL CStaticArray::desroy()
{
	for(int i=0;i<m_StaticArray.GetSize();i++)
	{
		CStatic* pEdit=(CStatic*)m_StaticArray.GetAt(i);
		delete pEdit;
	}
	m_StaticArray.RemoveAll();
	return TRUE;
}


void CStaticArray::Move(int x, int y)
{
	int num=m_StaticArray.GetSize();
	m_Topleft.x+=x;
	m_Topleft.y+=y;
	x=m_Topleft.x;
	y=m_Topleft.y;
	CString str;
	for(int i=0;i<num;i++)
	{
		CStatic*pEdit=(CStatic*)m_StaticArray.GetAt(i);
		pEdit->GetWindowText(str);
		pEdit->MoveWindow(x,y,m_width,m_height);
		pEdit->SetWindowText(str);
		y+=m_height-1;
	}
	draw();
}

int CStaticArray::getHeight()
{
	return m_height;
}

int CStaticArray::getHeightA()
{
	return (m_height-1)*m_StaticArray.GetSize();
}