橡皮筋技术实验报告.docx
- 文档编号:11171237
- 上传时间:2023-02-25
- 格式:DOCX
- 页数:35
- 大小:81.46KB
橡皮筋技术实验报告.docx
《橡皮筋技术实验报告.docx》由会员分享,可在线阅读,更多相关《橡皮筋技术实验报告.docx(35页珍藏版)》请在冰豆网上搜索。
橡皮筋技术实验报告
作业
橡皮筋技术
班级:
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:
定义您自己的基本命令,确保每个下拉菜单至少有一个基本命令。
CList
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 橡皮筋 技术 实验 报告