河南工业大学实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
河南工业大学实验报告
课程_ 软件应用技术_____ _实验名称__ _图标、光标和窗口框架______
院系____信息科学与工程学院专业班级_____ 计科0701_
姓名_______徐晶____________学号________20074140129___ _____
一.实验内容
(1)上机练习教材中第5章的Ex_Cursor示例。
(2)上机练习教材中第5章的综合应用Ex_A5示例。
二.实验准备
(1)在学习完教材第5章内容后进行本次实验
(2)阅读教材中关于本次上机所需要的程序。
三.实验步骤
创建工作文件夹。
启动Visual C++6.0,创建相关项目应用程序。
按教材中的Ex_Cursor示例进行。
对于Ex_A5综合应用示例:
创建一个默认的单文档应用程序Ex_A5。
在cMainFram::OnCreate中添加设置框架窗口标题的代码。
在cMainFram::PreCreateWindow中修改cs风格:
Bool CmainFrame::PreCreateWindow(CREATESTRUCT& cs){
if(!CframeWnd::PreCreateWindow(cs))
return FALSE;
cs.style &=~FWS_ADDTOTITLE;
cs.style &=~WS_MINIMIZEBOX;
cs.style &=~WS_MAXIMIZEBOX;
return TRUE;
}
添加一个图标资源,打开“图像”菜单,选择“删除设备图像”命令
单击“新建设备图像”按钮,选择“小的(16×16)”作为图标的设备类型,保留图标资源默认的ID号ID_ICONI制作空心圆圈图标。
由于框架窗口包含菜单,工具栏和状态栏等,用MFC ClassWizard为CMainFrame类添加WM_LBUTTONDBLCLK(双击鼠标消息)的消息映射是不会执行的,因此必须为
CMainFrame类天基PreTranslateMessage重载来拦截WM_LBUTTONDBLCLK消息。向CMainFrame类添加DeleteTaskBarIcon成员函数,其代码如下:
Bool CmainFrame::DeleteTaskBarIcon(HWND hwnd,UINT uID){
NOTIFYICONDATA twid;
Twid.cbSize=sizeof(NOTIFYICONDATA);
Twid.hwnd=hwnd;
return Shell_Notificon(NIM_DELETE,&twid);
}
(8)用MFC ClassWizard为CmainFrame类添加WM——DESTROY消息映射,并添加下列代码:
V oid CmainFrame::OnDestroy(){
CframeWnd::OnDestroy();
KillTimer(1);
DeleteTaskBarIcon(m_hwnd,IDR_MAINFRAME);
}
(9)打开MainFrm.h文件,在类声明语句“class CmainFrame::public CFrameWind”之前添加WM_ICON_NOTIFY的宏定义。
(10)在MainFrm.h文件的DECLARE_MESSAGE_MAP前添加WM_ICON_NOTIFY 的消息映射函数的声明
(11)打开MainFrm.cpp文件,在CMainFrame类的消息入口定义中添加消息宏指定,即将消息WM_ICON_NOTIFY与前面声明的消息函数OnTrayNotify相映射
(12)在MainFrm.cpp文件中添加CMainFrame类的消息函数OnTrayNotify的实现代码:
V oid CMainFrame::OnTrayNotify (WPARAM Wparam;LPARAM Iparam){
UINI uMouseMsg=(UINI)Iparam;
if(uMouseMsg==WM_IBUTTONDOWN){
ShowWindow(SW_SHOWNORMAL);
Delete TaskBarIcon(m_hwnd);
return;
}
}
(13)用MFC ClassWizard为CMainFrame类添加WM_TIMER消息映射,并添加下列代码,用来将托盘图标的动态修改:
V oid CMainFrame::OnTimer (UINI nIDEvent){
static UINI nIDSIJ={IDL_ICON1,IDR_MAINFRAME};
static int nIndex=0;
NTIFYICONDATA twid;
twid.hwnd=m_hwnd;
twid.uFlags=NIF_ICON;
twid.nIcon=AfxGetApp()->LoadIcon(nIDs[nIndex]);
Shell_NotifyIcon(NIM_MODIFY,&twid);
nIndex++;
if(nIndex>1) nIndex=0;
CFrameWnd::OnTimer(nIDEvent);
}
(14)编译运行,测试运行结果
四.实验中的问题及心得
通过此次实验熟悉了MFC程序的编写及其运行环境,学会了设置框架窗口标题。