河南工业大学实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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程序的编写及其运行环境,学会了设置框架窗口标题。

相关文档
最新文档