橡皮筋技术实验报告.docx

上传人:b****7 文档编号:11171237 上传时间:2023-02-25 格式:DOCX 页数:35 大小:81.46KB
下载 相关 举报
橡皮筋技术实验报告.docx_第1页
第1页 / 共35页
橡皮筋技术实验报告.docx_第2页
第2页 / 共35页
橡皮筋技术实验报告.docx_第3页
第3页 / 共35页
橡皮筋技术实验报告.docx_第4页
第4页 / 共35页
橡皮筋技术实验报告.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

橡皮筋技术实验报告.docx

《橡皮筋技术实验报告.docx》由会员分享,可在线阅读,更多相关《橡皮筋技术实验报告.docx(35页珍藏版)》请在冰豆网上搜索。

橡皮筋技术实验报告.docx

橡皮筋技术实验报告

作业

橡皮筋技术

班级:

2015级计算机科学与技术(专升本)

学号:

150907190108

姓名:

田林玉

课程名称:

人机交互基础教程

 

人机交互实验报告

实验名称:

橡皮筋技术实验日期:

2016.9月

姓名:

田林玉班级:

15级计科专升本

实验目的

1.掌握橡皮筋技术的实现原理和方法;

2.掌握Vs2010C++集成编译环境的使用,常用图形程序设计、鼠标编译、橡皮筋交互技术。

实验体会:

我们认识到是通过对VS2010C++的学习,掌握C++图形程序设计的方法,为计算机图形学原理部分的算法实现提供程序工具和方法。

其实,如果需要真正做一个应用,我们会发现前面的知识还远远不够。

这项任务,也许代码不是很完善,需要改进,以后一定更加努力,争取进步。

主要代码:

MainFrm.cpp

//MainFrm.cpp:

CMainFrame类的实现

#include"stdafx.h"

#include"tly.h"

#include"MainFrm.h"

#ifdef_DEBUG

#definenewDEBUG_NEW

#endif

//CMainFrame

IMPLEMENT_DYNCREATE(CMainFrame,CFrameWndEx)

constintiMaxUserToolbars=10;

constUINTuiFirstUserToolBarId=AFX_IDW_CONTROLBAR_FIRST+40;

constUINTuiLastUserToolBarId=uiFirstUserToolBarId+iMaxUserToolbars-1;

BEGIN_MESSAGE_MAP(CMainFrame,CFrameWndEx)

ON_WM_CREATE()

ON_COMMAND(ID_VIEW_CUSTOMIZE,&CMainFrame:

:

OnViewCustomize)

ON_REGISTERED_MESSAGE(AFX_WM_CREATETOOLBAR,&CMainFrame:

:

OnToolbarCreateNew)

END_MESSAGE_MAP()

staticUINTindicators[]=

{

ID_SEPARATOR,//状态行指示器

ID_INDICATOR_CAPS,

ID_INDICATOR_NUM,

ID_INDICATOR_SCRL,

};

//CMainFrame构造/析构

CMainFrame:

:

CMainFrame()

{

//TODO:

在此添加成员初始化代码

}

CMainFrame:

:

~CMainFrame()

{

}

intCMainFrame:

:

OnCreate(LPCREATESTRUCTlpCreateStruct)

{

if(CFrameWndEx:

:

OnCreate(lpCreateStruct)==-1)

return-1;

BOOLbNameValid;

//设置用于绘制所有用户界面元素的视觉管理器

CMFCVisualManager:

:

SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerVS2008));

if(!

m_wndMenuBar.Create(this))

{

TRACE0("未能创建菜单栏\n");

return-1;//未能创建

}

m_wndMenuBar.SetPaneStyle(m_wndMenuBar.GetPaneStyle()|CBRS_SIZE_DYNAMIC|CBRS_TOOLTIPS|CBRS_FLYBY);

//防止菜单栏在激活时获得焦点

CMFCPopupMenu:

:

SetForceMenuFocus(FALSE);

if(!

m_wndToolBar.CreateEx(this,TBSTYLE_FLAT,WS_CHILD|WS_VISIBLE|CBRS_TOP|CBRS_GRIPPER|CBRS_TOOLTIPS|CBRS_FLYBY|CBRS_SIZE_DYNAMIC)||

!

m_wndToolBar.LoadToolBar(theApp.m_bHiColorIcons?

IDR_MAINFRAME_256:

IDR_MAINFRAME))

{

TRACE0("未能创建工具栏\n");

return-1;//未能创建

}

CStringstrToolBarName;

bNameValid=strToolBarName.LoadString(IDS_TOOLBAR_STANDARD);

ASSERT(bNameValid);

m_wndToolBar.SetWindowText(strToolBarName);

CStringstrCustomize;

bNameValid=strCustomize.LoadString(IDS_TOOLBAR_CUSTOMIZE);

ASSERT(bNameValid);

m_wndToolBar.EnableCustomizeButton(TRUE,ID_VIEW_CUSTOMIZE,strCustomize);

//允许用户定义的工具栏操作:

InitUserToolbars(NULL,uiFirstUserToolBarId,uiLastUserToolBarId);

if(!

m_wndStatusBar.Create(this))

{

TRACE0("未能创建状态栏\n");

return-1;//未能创建

}

m_wndStatusBar.SetIndicators(indicators,sizeof(indicators)/sizeof(UINT));

//TODO:

如果您不希望工具栏和菜单栏可停靠,请删除这五行

m_wndMenuBar.EnableDocking(CBRS_ALIGN_ANY);

m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);

EnableDocking(CBRS_ALIGN_ANY);

DockPane(&m_wndMenuBar);

DockPane(&m_wndToolBar);

 

//启用VisualStudio2005样式停靠窗口行为

CDockingManager:

:

SetDockingMode(DT_SMART);

//启用VisualStudio2005样式停靠窗口自动隐藏行为

EnableAutoHidePanes(CBRS_ALIGN_ANY);

//启用工具栏和停靠窗口菜单替换

EnablePaneMenu(TRUE,ID_VIEW_CUSTOMIZE,strCustomize,ID_VIEW_TOOLBAR);

//启用快速(按住Alt拖动)工具栏自定义

CMFCToolBar:

:

EnableQuickCustomization();

if(CMFCToolBar:

:

GetUserImages()==NULL)

{

//加载用户定义的工具栏图像

if(m_UserImages.Load(_T(".\\UserImages.bmp")))

{

CMFCToolBar:

:

SetUserImages(&m_UserImages);

}

}

//启用菜单个性化(最近使用的命令)

//TODO:

定义您自己的基本命令,确保每个下拉菜单至少有一个基本命令。

CListlstBasicCommands;

lstBasicCommands.AddTail(ID_FILE_NEW);

lstBasicCommands.AddTail(ID_FILE_OPEN);

lstBasicCommands.AddTail(ID_FILE_SAVE);

lstBasicCommands.AddTail(ID_FILE_PRINT);

lstBasicCommands.AddTail(ID_APP_EXIT);

lstBasicCommands.AddTail(ID_EDIT_CUT);

lstBasicCommands.AddTail(ID_EDIT_PASTE);

lstBasicCommands.AddTail(ID_EDIT_UNDO);

lstBasicCommands.AddTail(ID_APP_ABOUT);

lstBasicCommands.AddTail(ID_VIEW_STATUS_BAR);

lstBasicCommands.AddTail(ID_VIEW_TOOLBAR);

CMFCToolBar:

:

SetBasicCommands(lstBasicCommands);

return0;

}

BOOLCMainFrame:

:

PreCreateWindow(CREATESTRUCT&cs)

{

if(!

CFrameWndEx:

:

PreCreateWindow(cs))

returnFALSE;

//TODO:

在此处通过修改

//CREATESTRUCTcs来修改窗口类或样式

returnTRUE;

}

//CMainFrame诊断

#ifdef_DEBUG

voidCMainFrame:

:

AssertValid()const

{

CFrameWndEx:

:

AssertValid();

}

voidCMainFrame:

:

Dump(CDumpContext&dc)const

{

CFrameWndEx:

:

Dump(dc);

}

#endif//_DEBUG

 

//CMainFrame消息处理程序

voidCMainFrame:

:

OnViewCustomize()

{

CMFCToolBarsCustomizeDialog*pDlgCust=newCMFCToolBarsCustomizeDialog(this,TRUE/*扫描菜单*/);

pDlgCust->EnableUserDefinedToolbars();

pDlgCust->Create();

}

LRESULTCMainFrame:

:

OnToolbarCreateNew(WPARAMwp,LPARAMlp)

{

LRESULTlres=CFrameWndEx:

:

OnToolbarCreateNew(wp,lp);

if(lres==0)

{

return0;

}

CMFCToolBar*pUserToolbar=(CMFCToolBar*)lres;

ASSERT_VALID(pUserToolbar);

BOOLbNameValid;

CStringstrCustomize;

bNameValid=strCustomize.LoadString(IDS_TOOLBAR_CUSTOMIZE);

ASSERT(bNameValid);

pUserToolbar->EnableCustomizeButton(TRUE,ID_VIEW_CUSTOMIZE,strCustomize);

returnlres;

}

BOOLCMainFrame:

:

LoadFrame(UINTnIDResource,DWORDdwDefaultStyle,CWnd*pParentWnd,CCreateContext*pContext)

{

//基类将执行真正的工作

if(!

CFrameWndEx:

:

LoadFrame(nIDResource,dwDefaultStyle,pParentWnd,pContext))

{

returnFALSE;

}

 

//为所有用户工具栏启用自定义按钮

BOOLbNameValid;

CStringstrCustomize;

bNameValid=strCustomize.LoadString(IDS_TOOLBAR_CUSTOMIZE);

ASSERT(bNameValid);

for(inti=0;i

{

CMFCToolBar*pUserToolbar=GetUserToolBarByIndex(i);

if(pUserToolbar!

=NULL)

{

pUserToolbar->EnableCustomizeButton(TRUE,ID_VIEW_CUSTOMIZE,strCustomize);

}

}

returnTRUE;

}

MainFrm.h

 

//MainFrm.h:

CMainFrame类的接口

//#include

//SetConsoleTitle(L"新名字");

#pragmaonce

classCMainFrame:

publicCFrameWndEx

{

protected:

//仅从序列化创建

CMainFrame();

DECLARE_DYNCREATE(CMainFrame)

//特性

public:

//操作

public:

//重写

public:

virtualBOOLPreCreateWindow(CREATESTRUCT&cs);

virtualBOOLLoadFrame(UINTnIDResource,DWORDdwDefaultStyle=WS_OVERLAPPEDWINDOW|FWS_ADDTOTITLE,CWnd*pParentWnd=NULL,CCreateContext*pContext=NULL);

//实现

public:

virtual~CMainFrame();

#ifdef_DEBUG

virtualvoidAssertValid()const;

virtualvoidDump(CDumpContext&dc)const;

#endif

protected:

//控件条嵌入成员

CMFCMenuBarm_wndMenuBar;

CMFCToolBarm_wndToolBar;

CMFCStatusBarm_wndStatusBar;

CMFCToolBarImagesm_UserImages;

//生成的消息映射函数

protected:

afx_msgintOnCreate(LPCREATESTRUCTlpCreateStruct);

afx_msgvoidOnViewCustomize();

afx_msgLRESULTOnToolbarCreateNew(WPARAMwp,LPARAMlp);

DECLARE_MESSAGE_MAP()

};

tly.cpp

//tly.cpp:

定义应用程序的类行为。

//

#include"stdafx.h"

#include"afxwinappex.h"

#include"afxdialogex.h"

#include"tly.h"

#include"MainFrm.h"

#include"tlyDoc.h"

#include"tlyView.h"

#ifdef_DEBUG

#definenewDEBUG_NEW

#endif

 

//CtlyApp

BEGIN_MESSAGE_MAP(CtlyApp,CWinAppEx)

ON_COMMAND(ID_APP_ABOUT,&CtlyApp:

:

OnAppAbout)

//基于文件的标准文档命令

ON_COMMAND(ID_FILE_NEW,&CWinAppEx:

:

OnFileNew)

ON_COMMAND(ID_FILE_OPEN,&CWinAppEx:

:

OnFileOpen)

//标准打印设置命令

ON_COMMAND(ID_FILE_PRINT_SETUP,&CWinAppEx:

:

OnFilePrintSetup)

END_MESSAGE_MAP()

 

//CtlyApp构造

CtlyApp:

:

CtlyApp()

{

m_bHiColorIcons=TRUE;

//支持重新启动管理器

m_dwRestartManagerSupportFlags=AFX_RESTART_MANAGER_SUPPORT_ALL_ASPECTS;

#ifdef_MANAGED

//如果应用程序是利用公共语言运行时支持(/clr)构建的,则:

//1)必须有此附加设置,“重新启动管理器”支持才能正常工作。

//2)在您的项目中,您必须按照生成顺序向System.Windows.Forms添加引用。

System:

:

Windows:

:

Forms:

:

Application:

:

SetUnhandledExceptionMode(System:

:

Windows:

:

Forms:

:

UnhandledExceptionMode:

:

ThrowException);

#endif

//TODO:

将以下应用程序ID字符串替换为唯一的ID字符串;建议的字符串格式

//为CompanyName.ProductName.SubProduct.VersionInformation

SetAppID(_T("tly.AppID.NoVersion"));

//TODO:

在此处添加构造代码,

//将所有重要的初始化放置在InitInstance中

}

//唯一的一个CtlyApp对象

CtlyApptheApp;

 

//CtlyApp初始化

BOOLCtlyApp:

:

InitInstance()

{

//如果一个运行在WindowsXP上的应用程序清单指定要

//使用ComCtl32.dll版本6或更高版本来启用可视化方式,

//则需要InitCommonControlsEx()。

否则,将无法创建窗口。

INITCOMMONCONTROLSEXInitCtrls;

InitCtrls.dwSize=sizeof(InitCtrls);

//将它设置为包括所有要在应用程序中使用的

//公共控件类。

InitCtrls.dwICC=ICC_WIN95_CLASSES;

InitCommonControlsEx(&InitCtrls);

CWinAppEx:

:

InitInstance();

 

//初始化OLE库

if(!

AfxOleInit())

{

AfxMessageBox(IDP_OLE_INIT_FAILED);

returnFALSE;

}

AfxEnableControlContainer();

EnableTaskbarInteraction(FALSE);

//使用RichEdit控件需要AfxInitRichEdit2()

//AfxInitRichEdit2();

//标准初始化

//如果未使用这些功能并希望减小

//最终可执行文件的大小,则应移除下列

//不需要的特定初始化例程

//更改用于存储设置的注册表项

//TODO:

应适当修改该字符串,

//例如修改为公司或组织名

SetRegistryKey(_T("应用程序向导生成的本地应用程序"));

LoadStdProfileSettings(4);//加载标准INI文件选项(包括MRU)

 

InitContextMenuManager();

InitKeyboardManager();

InitTooltipManager();

CMFCToolTipInfottParams;

ttParams.m_bVislManagerTheme=TRUE;

theApp.GetTooltipManager()->SetTooltipParams(AFX_TOOLTIP_TYPE_ALL,

RUNTIME_CLASS(CMFCToolTipCtrl),&ttParams);

//注册应用程序的文档模板。

文档模板

//将用作文档、框架窗口和视图之间的连接

CSingleDocTemplate*pDocTemplate;

pDocTemplate=newCSingleDocTemplate(

IDR_MAINFRAME,

RUNTIME_CLASS(CtlyDoc),

RUNTIME_CLASS(CMainFrame),//主SDI框架窗口

RUNTIME_CLASS(CtlyView));

if(!

pDocTemplate)

returnFALSE;

AddDocTemplate(pDocTemplate);

 

//分析标准shell命令、DDE、打开文件操作的命令行

CCommandLineInfocmdInfo;

ParseCommandLine(cmdInfo);

//调度在命令行中指定的命令。

如果

//用/RegServer、/Register、/Unregserver或/Unregister启动应用程序,则返回FALSE。

if(!

ProcessShellCommand(cmdInfo))

returnFALSE;

//唯一的一个窗口已初始化,因此显示它并对其进行更新

m_pMainWnd->ShowWindow(SW_SHOW);

m_pMainWnd->UpdateWindow();

//仅当具有后缀时才调用DragAcceptFiles

//在SDI应用程序中,这应在ProcessShellCommand之后发生

returnTRUE;

}

intCtlyApp:

:

ExitInstance()

{

//TODO:

处理可能已添加的附加资源

AfxOleTerm(FALSE);

returnCWinAppEx:

:

ExitInstance();

}

//CtlyApp消息处理程序

 

//用于应用程序“关于”菜单项的CAboutDlg对话框

classCAboutDlg:

publicCDialogEx

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1