可视化课程设计报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
路径,并且将此路径传给GetProgramPath函数,得到程序的路径
2.对数据库进行存取 可以对数据库进行存取的前提是连接数据库成功,连接数据库的步骤为 A.创建一个 Access 数据库和程序所需要的数据表 B.创建一个 Access 数据源
C.加载连接数据库的动态链接库 D.在App的.cpp文件中通过_ConnectionPtr对象连接数据库 数据库连接成功后,可以通过 SQL 语句对数据库进行数据库操作 3.ListControl 组件的使用方法 因为要在我的桌面管理中显示客户拖入我程序的快捷方式,所以使用 ListControl 进行 显示,而且必须显示图标。鉴于 ListControl 的显示方式较多,而且用户喜好不同,所以允 许可以进行显示方式的选择 A.显示图标,只要为 ListControl 对象绑定两个 CImageList 对象(分别用于大图标和小图标的
afx_msg void OnTcnSelchangeTab(NMHDR *pNMHDR, LRESULT *pResult);
//TabCtr 控件的页面选择消息响应函数
afx_msg void OnBnClickedBtnup();
//
收起按钮的消息处理函数
CComboBox m_CBXView;
将程序信息插入数据库
CString FilePath2FileName(CString FilePath); //由程序绝对路径得到程序名称
void StartProgram(CString ProgramPath);
//由程序绝对路径启动程序
CString GetProgramPath(CString LnkPath);
//设置 TabCtr 的属性
TC_ITEM tcItem; tcItem.mask=TCIF_TEXT; for(int i=0;i<=4;++i){
afx_msg void OnNMDblclkList1(NMHDR *pNMHDR, LRESULT *pResult);
//
列表控件的双击消息响应函数
//afx_msg void OnTcnSelchangeTab1(NMHDR *pNMHDR, LRESULT *pResult);
CTabCtrl m_CtrTab;
以通过以下步骤实现 A.为 ListControl 组件的 NM_DBLCLK 消息编写处理函数,以得到用户双击的快捷方式对
应程序的绝对路径,并将此路径传给程序启动函数 B.编写函数,通过调用 windows 的 API 启动程序
四、程序流程图 1.程序启动流程图
2.拖取快捷方式
3.双击启动程序
五、主要代码与注释
BEGIN_MESSAGE_MAP(CMyDeskDlg, CDialogEx) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_WM_DROPFILES() ON_NOTIFY(NM_DBLCLK, IDC_LIST1, &CMyDeskDlg::OnNMDblclkList1) //ON_NOTIFY(TCN_SELCHANGE, IDC_TAB1, &CMyDeskDlg::OnTcnSelchangeTab1) ON_NOTIFY(TCN_SELCHANGE, IDC_TAB, &CMyDeskDlg::OnTcnSelchangeTab) ON_BN_CLICKED(IDC_BTNUP, &CMyDeskDlg::OnBnClickedBtnup) ON_CBN_SELCHANGE(IDC_COMBO1, &CMyDeskDlg::OnCbnSelchangeCombo1) ON_MESSAGE(WM_SHOWTASK,&CMyDeskDlg::OnShowTask) ON_WM_CLOSE() ON_WM_SHOWWINDOW()
三、解决方案
1、读取快捷方式 快捷方式也是一种文件,此文件的后缀名为.lnk,windows 已经提供了 API 进行解析,
编程时的步骤为 A.窗口的 Accept File 属性为 true B.编写一个类成员函数GetProgramPath,此函数可以通过快捷方式文件的路径得到快捷
方式实际指向程序的路径 C.为WM_DROPFILES消息编写消息响应函数,此函数通过DragQueryFile函数得到快捷方式
if(m_pCon-> State)
{
m_pCon->Close();
m_pCon=NULL;
}
if(SUCCEEDED(hr))
{
m_pCon->Open(
L"Provider=Microsoft.ACE.OLEDB.12.0;Data
Source=..\\MyDesk.accdb","","",adModeUnknown); //正式连接数据库
//由托盘图标双击
public: afx_msg void OnDropFiles(HDROP hDropInfo); CListCtrl m_DeskList; CImageList m_imagelist; CImageList m_smallimage; CString Tab[5]; CIConDlg *m_IConDlg;
protected: HICON m_hIcon;
// 生成的消息映射函数 virtual BOOL OnInitDialog(); afx_msg void OnSysCommand(UINT nID, LPARAM lParam); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); afx_msg LRESULT OnShowTask(WPARAM wParam,LPARAM lParam); 显示程序界面 DECLARE_MESSAGE_MAP()
END_MESSAGE_MAP()
// CMyDeskDlg 消息处理程序
BOOL CMyDeskDlg::OnInitDialog() {
CDialogEx::OnInitDialog();
//设置 ListControl 的属性 //m_imagelist.Create(IDB_LUCKY,32,1,RGB(255,255, 255)); //创建图示 m_imagelist.Create(32,32,ILC_COLOR24,0,1); m_smallimage.Create(Hale Waihona Puke Baidu6,16,ILC_COLOR24,0,1); m_DeskList.SetExtendedStyle(m_DeskList.GetExtendedStyle()| LVS_EX_GRIDLINES|LVS_EX_SUBITEMIMAGES|LVS_EX_FULLROWSELECT); m_DeskList.SetImageList(&m_smallimage,LVSIL_SMALL); m_DeskList.SetImageList(&m_imagelist,LVSIL_NORMAL); SetViewType(LVS_ICON);
显示),并且将需要加载的图标同时加入此两个 CImageList 对象中,就可以在 ListControl 中显示出 来
B.设置不同的显示方式,只要对 ListControl 对象的显示方式进行代码设计即可
4.通过程序路径启动软件 Windows 提供了通过程序的绝对路径启动程序的 API,为了让用户可以双击启动程序,可
3.函数的实现 CMyDeskDlg::CMyDeskDlg(CWnd* pParent /*=NULL*/)
: CDialogEx(CMyDeskDlg::IDD, pParent) {
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
Tab[0]=L"办公学习"; Tab[1]=L"娱乐"; Tab[2]=L"系统"; Tab[3]=L"辅助"; Tab[4]=L"小工具"; }
及与面向对象技术相关的一些软件开发技术,掌握在 Visual Studio 环境下进行可视化程
序设计技术。通过实践具体的项目,为他们进一步开展相关领域的学习和科研打下良好的基
础。
2、环境
A. Visual Studio 2010
B. Access 2010
二、设计思路与难题
1、设计思路 近来,桌面管理软件越来越多,比如 360 安全桌面,我所选择的课程设计题目就是类似 360 安装桌面管理的软件,实现的功能有: A.将桌面的快捷方式拖入我的桌面管理软件中 B.将拖入我的桌面管理软件的快捷方式信息存入数据库 C.对不同的快捷方式进行分类 D.实现半透明效果 E.可以收起成悬浮窗口 F.关闭时最小化到托盘 G.通过我的桌面管理软件的快捷方式启动软件 H.可以通过不同的方式显示快捷方式的信息 2、难题 A.读取快捷方式 B.对数据库进行存取 C.ListControl 组件的使用方法 D.通过程序路径启动软件 E.熟悉 VS 编程环境
课程设计
课程名称 Visual C++ 可视化编程 题目名称 我的桌面管理小工具 学生学院 计算机学院 专业班级 2009 级计算机科学与技术 2 班 学号 学生姓名 指导教师
2012 年 02 月 1 日
一、设计目的与环境
1、目的
使学生了解可视化程序设计语言的基础知识,掌握面向对象编程的分析设计方法,以
//由快捷方式路径得到程序的绝对
路径
HICON GetICON(CString ProgramPath);
//有程序的绝对路径得到其图标
void SetViewType(DWORD dwViewType);
//设置列表显示方式
void toTray();
//最小化到托盘
//--------------------------------------------------------------
afx_msg
void
OnCbnSelchangeCombo1();
//combox 组件的选择消息响应函数
private: NOTIFYICONDATA m_nd;
public: afx_msg void OnClose(); afx_msg void OnShowWindow(BOOL bShow, UINT nStatus);
//----------------自定义函数--------------------------------
void UpdateList();
//更新列表信息,显示所有程序信息
void UpdateList(CString TabText);
//更新列表信息,变 Tab 指定的程序信

bool InsertShortCut(CString FilePath,CString FileName,CString Purpose); //
void CMyDeskDlg::DoDataExchange(CDataExchange* pDX) {
CDialogEx::DoDataExchange(pDX); DDX_Control(pDX, IDC_LIST1, m_DeskList); DDX_Control(pDX, IDC_TAB, m_CtrTab); DDX_Control(pDX, IDC_COMBO1, m_CBXView); }
1.连接数据库代码 AfxOleInit(); HRESULT hr; if( FAILED(::CoInitialize(NULL)) ) { AfxMessageBox( L"ADO Init failed "); } try {
hr=m_pCon.CreateInstance(__uuidof(Connection));
}
}
catch(_com_error e)
{
CString errormessage;
errormessage.Format( L" 连 接 数 据 库 失 败 !\r\n 错 误 信 息 :%s
",e.ErrorMessage());
AfxMessageBox(errormessage);
}
2.主要函数的声明与注释
相关文档
最新文档