MFC课程设计调整对话框背景颜色_第1页
MFC课程设计调整对话框背景颜色_第2页
MFC课程设计调整对话框背景颜色_第3页
MFC课程设计调整对话框背景颜色_第4页
MFC课程设计调整对话框背景颜色_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、mfc课程设计课题名称:调整对话框背景颜色专业班级:1020562班学生学号:学生姓名: 指导教师: 提交时间:2011年12月10日目录1.设计描述31.1课题背景31.2功能描述32.设计分析42.1应用的类42.2成员函数43.源代码及图形64.设计总结174.1个人心得174.2参考文献171.设计描述1.1课题背景 本课题主要是在为了让自己更加了解在mfc中框架类中的各种函数的应用。本程序是在vc6.0中使用appwizard创建基于对话框的应用程序。1.2功能描述本程序能够改变对话框的背景颜色。对话框中有滚动条和滑动块,通过调节滚动条或滑动块来改变对话框的背景颜色。除此以外,该对话

2、框可以最小化,最大化功能。点击关闭按钮时,会出现提示对话框,提示对话框中有“退出应用程序”,“返回到托盘”,“不再提示”选择按钮供你选择。另外托盘图标是闪动变换的,托盘图标还可以打开子菜单。最小化:最大化:2.设计分析本程序用到了一些基于对话框的类,实现对话框的各种功能2.1应用的类图2.1 classview2.2成员函数程序里的成员函数如下1、bool cwlhdlg:oninitdialog()2、void cwlhdlg:onhscroll(uint nsbcode, uint npos, cscrollbar* pscrollbar) 3、hbrush cwlhdlg:onctlco

3、lor(cdc* pdc, cwnd* pwnd, uint nctlcolor) 4、bool cwlhdlg:addtray(hwnd hwnd, lpstr lpsztip)/添加图标到托盘5、bool ctestdlg:removetray(hwnd hwnd)/删除托盘中的图标6、bool ctestdlg:modifytray(hwnd hwnd,uint uid)/修改托盘中的图标7、void cwlhdlg:ontimer(uint nidevent) /更换图标8、void ctestdlg:ontraynotify(wparam wparam, lparam lparam)

4、9、void ctestdlg:ondestroy()/结束图标更换 10、void ctestdlg:onopen()/打开子菜单项 11、void ctestdlg:onexit()/退出子菜单项12、void cwlhdlg:onabout() /关于子菜单13、void cwlhdlg:onclose() /关闭背景对话框14、void cwlhdlg:inquiry()/询问对话框各个类的成员函数和数据成员如图2.2-1,图2.2-2所示 图2.2-1 图2.2-23.源代码及图形bool cwlhdlg:oninitdialog()cdialog:oninitdialog();/

5、add about. menu item to system menu./ idm_aboutbox must be in the system command range.assert(idm_aboutbox & 0xfff0) = idm_aboutbox);assert(idm_aboutbox appendmenu(mf_separator);psysmenu-appendmenu(mf_string, idm_aboutbox, straboutmenu);/ set the icon for this dialog. the framework does this automat

6、ically/ when the applications main window is not a dialogseticon(m_hicon, true);/ set big iconseticon(m_hicon, false);/ set small icon/ todo: add extra initialization herem_scrollred.setscrollrange(0, 255);m_sliderblue.setrange(0, 255);m_slidergreen.setrange(0, 255);m_nblue = m_ngreen = m_nredvalue

7、= 192;updatedata( false );m_scrollred.setscrollpos(m_nredvalue); setwindowtext(调整对话框背景颜色);return true; / return true unless you set the focus to a controlvoid cwlhdlg:onhscroll(uint nsbcode, uint npos, cscrollbar* pscrollbar) / todo: add your message handler code here and/or call defaultint nid = ps

8、crollbar-getdlgctrlid();/ 获取对话框中控件id值if (nid = idc_scrollbar_red)/ 若是滚动条产生的水平滚动消息switch(nsbcode)case sb_lineleft:m_nredvalue-;/ 单击滚动条左边箭头break;case sb_lineright:m_nredvalue+;/ 单击滚动条右边箭头break;case sb_pageleft:m_nredvalue -= 10;break;case sb_pageright:m_nredvalue += 10;break;case sb_thumbtrack:m_nredv

9、alue = npos;break;if (m_nredvalue255) m_nredvalue = 255;m_scrollred.setscrollpos(m_nredvalue);invalidate();/ 使对话框无效,强迫系统重绘对话框cdialog:onhscroll(nsbcode, npos, pscrollbar);hbrush cwlhdlg:onctlcolor(cdc* pdc, cwnd* pwnd, uint nctlcolor) hbrush hbr = cdialog:onctlcolor(pdc, pwnd, nctlcolor);/ todo: chan

10、ge any attributes of the dc here/ todo: return a different brush if the default is not desiredupdatedata(true);colorref color = rgb(m_nredvalue, m_ngreen, m_nblue);m_brush.detach();/ 使画刷和对象分离m_brush.createsolidbrush(color);/ 创建颜色画刷pdc-setbkcolor( color );/ 设置背景颜色return (hbrush)m_brush;/ 返回画刷句柄,以便系统使

11、此画刷绘制对话框return hbr;以上代码实现对话框背景颜色调整功能 图3-1/添加图标到托盘bool cwlhdlg:addtray(hwnd hwnd, lpstr lpsztip)notifyicondata tnid; tnid.cbsize=sizeof(notifyicondata); tnid.hwnd=hwnd; tnid.uflags=nif_message | nif_icon | nif_tip; tnid.ucallbackmessage=wm_icon_notify; tnid.hicon=afxgetapp()-loadicon(idi_icon1); strc

12、py(tnid.sztip,lpsztip); return shell_notifyicon(nim_add, &tnid); 添加图标到托盘如下图图3-2图3-1/删除托盘中的图标bool ctestdlg:removetray(hwnd hwnd)/删除托盘中的图标 notifyicondata tnid; tnid.cbsize=sizeof(notifyicondata); tnid.hwnd=hwnd; return shell_notifyicon(nim_delete,&tnid);/修改托盘中的图标bool ctestdlg:modifytray(hwnd hwnd,uint

13、 uid)/修改托盘中的图标 notifyicondata tnid; tnid.cbsize=sizeof(notifyicondata); tnid.hwnd=hwnd; tnid.uflags=nif_icon; tnid.hicon=afxgetapp()-loadicon(uid); return shell_notifyicon(nim_modify, &tnid);/更换图标void cwlhdlg:ontimer(uint nidevent) /更换图标/ todo: add your message handler code here and/or call defaults

14、taticuint nids=idi_icon1,idi_icon2,idi_icon3,idi_icon4;static int nindex=1;modifytray(m_hwnd,nidsnindex);nindex=+nindex%4;cdialog:ontimer(nidevent);/结束图标更换void ctestdlg:ondestroy()/结束图标更换 cdialog:ondestroy();/ todo: add your message handler code herekilltimer(1);removetray(m_hwnd);void ctestdlg:ontr

15、aynotify(wparam wparam, lparam lparam)if(wm_rbuttondown=lparam)cmenu menu;menu.loadmenu(idr_menu1);cpoint point;getcursorpos(&point);/得到鼠标位置cmenu *popup=menu.getsubmenu(0);popup-trackpopupmenu(tpm_leftalign|tpm_rightbutton, point.x, point.y, this);return;if(wm_lbuttondown=lparam)showwindow(sw_showno

16、rmal); setforegroundwindow();return;图3-3/打开子菜单项void ctestdlg:onopen()/打开子菜单项 / todo: add your command handler code hereshowwindow(sw_shownormal); setforegroundwindow();/退出子菜单项void ctestdlg:onexit()/退出子菜单项/ todo: add your command handler code herepostquitmessage(0);以上代码实现功能如下图 图3-4 图3-5/关于对话框void cwl

17、hdlg:onabout() / todo: add your command handler code heremessagebox(wlh制作n2011年12月,关于,mb_iconexclamation |mb_ok);/关闭背景对话框void cwlhdlg:onclose() /关闭背景对话框/ todo: add your message handler code here and/or call defaulthkey hkey;if(error_success=regopenkeyex(hkey_local_machine,wlh,0,key_read,&hkey)if(1=n

18、check)if(0=nradio)postquitmessage(0);elseaddtray(m_hwnd,改变背景);showwindow(sw_hide);settimer(1,500,null);elseinquiry();elseinquiry();regclosekey(hkey);/询问对话框void cwlhdlg:inquiry()/询问对话框cinquiry inq;inq.domodal();/打开询问对话框nradio=inq.m_n;if(inq.m_chk)/是否选择不再提示选框ncheck=1;/标志为1elsencheck=0;/标志为0if(0=nradio)/选择直接退出postquitmessage(0);else/选择返回托盘addtray(m_hwnd,改变背景);showwindow(sw_hide);/隐藏主窗口settimer(1,500,null);所用功能的实现如下图运行结果:图3-6最大化: 图3-7最小化: 图3-8点击运行关闭按钮: 图3-9 图3-10

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论