• 大小: 57KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-10
  • 语言: C/C++
  • 标签: 电梯算法  

资源简介

这个是两部电梯八层楼的用MFC实现的模拟,是我今年参加学校的竞赛写的

资源截图

代码片段和文件信息

// CntrItem.cpp : CMyElevatorCntrItem 类的实现
//

#include “stdafx.h“
#include “MyElevator.h“

#include “MyElevatorDoc.h“
#include “MyElevatorView.h“
#include “CntrItem.h“

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// CMyElevatorCntrItem 的实现

IMPLEMENT_SERIAL(CMyElevatorCntrItem COleClientItem 0)

CMyElevatorCntrItem::CMyElevatorCntrItem(CMyElevatorDoc* pContainer)
: COleClientItem(pContainer)
{
// TODO: 在此添加一次性构造代码
}

CMyElevatorCntrItem::~CMyElevatorCntrItem()
{
// TODO: 在此处添加清除代码
}

void CMyElevatorCntrItem::onchange(OLE_NOTIFICATION nCode DWORD dwParam)
{
ASSERT_VALID(this);

COleClientItem::onchange(nCode dwParam);

// 在编辑某项时(就地编辑或完全打开进行编辑),
//该项将就其自身状态的更改
// 或其内容的可视外观状态的更改发送 onchange 通知。

// TODO: 通过调用 UpdateAllViews 使该项无效
//(包括适合您的应用程序的提示)

GetDocument()->UpdateAllViews(NULL);
// 现在更新所有视图/无提示
}

BOOL CMyElevatorCntrItem::onchangeItemPosition(const CRect& rectPos)
{
ASSERT_VALID(this);

// 就地激活期间,服务器调用 CMyElevatorCntrItem::onchangeItemPosition
// 以更改就地
//  窗口的位置。这通常是由于服务器
//  文档中的数据更改而导致范围改变或是
//  就地调整大小所引起的。
//
// 此处的默认设置调用基类,该基类将调用
//  COleClientItem::SetItemRects 以将该项
//  移动到新的位置。

if (!COleClientItem::onchangeItemPosition(rectPos))
return FALSE;

// TODO: 更新您在该项的矩形/范围内可具有的任何缓存

return TRUE;
}

void CMyElevatorCntrItem::OnGetItemPosition(CRect& rPosition)
{
ASSERT_VALID(this);

// 就地激活期间,将调用CMyElevatorCntrItem::OnGetItemPosition
//  以决定该项的位置。通常,
//  该矩形会反映与激活所用视图 
//  相关项的当前位置。调用 
//  CMyElevatorCntrItem::GetActiveView 可得到视图。

// TODO: 返回 rPosition 中的正确矩形(以像素表示)

CSize size;
rPosition.SetRectEmpty();
if (SUCCEEDED(GetExtent(&size m_nDrawAspect)))
{
CMyElevatorView* pView = GetActiveView();
ASSERT_VALID(pView);
if (!pView)
return;
CDC *pDC = pView->GetDC();
ASSERT(pDC);
if (!pDC)
return;
pDC->HIMETRICtoLP(&size);
rPosition.SetRect(10 10 size.cx + 10 size.cy + 10);
}
else
rPosition.SetRect(10 10 210 210);
}

void CMyElevatorCntrItem::onactivate()
{
    // 每个框架只能有一个就地激活项
    CMyElevatorView* pView = GetActiveView();
    ASSERT_VALID(pView);
if (!pView)
return;
    COleClientItem* pItem = GetDocument()->GetInPlaceActiveItem(pView);
    if (pItem != NULL && pItem != this)
        pItem->Close();
    
    COleClientItem::onactivate();
}

void CMyElevatorCntrItem::ondeactivateUI(BOOL bUndoable)
{
COleClientItem::ondeactivateUI(bUndoable);

    DWORD dwMisc = 0;
    m_lpobject->GetMiscStatus(GetDrawAspect() &dwMisc);
    if (dwMisc & OLEMISC_INSIDEOUT)
        DoVerb(OLEIVERB_HIDE NULL);
}

void CMyElevatorCntrItem::Serialize(CArchive& ar)
{
ASSERT_VALID(this);

// 首先调用基类以读取 COleClientItem 数据。
// 因为这样会设置从 CMyElevatorCntrItem::GetDocument 返回的 m_pDocument 指针
//,所以最好先调用
//  基类 Serialize。
COleClientItem::Serialize(ar);

// 现在存储/检索特定于 CMyElevatorCntrItem 的数据
if (ar.IsStoring())
{
// TODO: 在此添加存储代码
}
else
{
// TODO: 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       5416  2008-03-27 13:18  MyElevator\MyElevator.vcproj

     文件       3754  2008-03-17 18:18  MyElevator\ReadMe.txt

     文件        491  2008-03-17 18:18  MyElevator\MyElevator.h

     文件       3066  2008-03-17 18:18  MyElevator\MyElevator.cpp

     文件       1550  2008-03-17 18:18  MyElevator\stdafx.h

     文件        139  2008-03-17 18:18  MyElevator\stdafx.cpp

     文件        653  2008-03-17 18:18  MyElevator\MainFrm.h

     文件       1843  2008-03-25 22:27  MyElevator\MainFrm.cpp

     文件        573  2008-03-17 18:18  MyElevator\MyElevatorDoc.h

     文件       1859  2008-03-17 18:18  MyElevator\MyElevatorDoc.cpp

     文件       2164  2008-03-28 00:46  MyElevator\MyElevatorView.h

     文件      13494  2008-03-28 17:15  MyElevator\MyElevatorView.cpp

     文件       1193  2008-03-17 18:18  MyElevator\CntrItem.h

     文件       3619  2008-03-17 18:18  MyElevator\CntrItem.cpp

     文件      11657  2008-03-28 00:45  MyElevator\MyElevator.rc

     文件       1710  2008-03-28 00:45  MyElevator\Resource.h

     文件      68292  2008-03-28 00:45  MyElevator\MyElevator.aps

     文件       2384  2008-03-28 17:10  MyElevator\ElevatorManager.h

     文件      20201  2008-03-28 17:09  MyElevator\ElevatorManager.cpp

     文件        366  2008-03-17 18:18  MyElevator\res\MyElevator.rc2

     文件        699  2008-03-17 18:18  MyElevator\res\MyElevator.manifest

     文件       1078  2003-04-01 19:36  MyElevator\res\MyElevatorDoc.ico

     文件       1318  2008-03-18 22:22  MyElevator\res\Toolbar.bmp

     文件        598  2008-03-19 19:43  MyElevator\res\toolbar2.bmp

     文件      21630  2008-03-25 22:12  MyElevator\res\MyElevator.ico

     文件        478  2008-03-27 13:50  MyElevator\res\toolbar1.bmp

     目录          0  2008-03-28 18:41  MyElevator\res

     目录          0  2008-03-28 18:41  MyElevator

----------- ---------  ---------- -----  ----

               170225                    28

............此处省略1个文件信息

评论

共有 条评论