第6章 MFC应用程序基础
vc++MFC基础教程
1.2.3 编辑区
• 在Visual C++中,编写应用程序代码的位置就是编辑区。该编辑区的 功能十分强大,智能化程度也非常高。在编辑区内,除了能编写 C/C++语言外,还能编写SQL、HTML和VBScript等其他编程语言。 如下图所示。
1.2.4 联机帮助
• Visual C++6.0不像其他集成开发环境一样把帮助系统集成在开发环境 内部,而是提供了一个专门为Visual C++设计的MSDN类库。MSDN 虽然是一个独立的帮助系统,但却能很好地和Visual C++6.0集成在一 起。 • MSDN的使用方式有以下几种: • 单击【Help】|【Contents】命令; • 单击【Help】|【Search】命令; • 单击【Help】|【Index】命令; • 按下【F2】键。 • 通过上述几种命令方式,即可运行MSDN。
1.2.1 工作区窗口和输出窗口
• Find in Files 1和Find in Files 2:两个选项卡的作用相同,用于显示 从多个文件中查找字符串的结果。当用户想要查看某个函数或变量出 现在哪些文件中,单击【Edit】|【Find in Files】命令,弹出【Find in Files】对话框,如下图所示。在【Find in Files】对话框中的 【Find what】后的编辑框中,输入想要查找的内容,单击【Find】按 钮即可。查找到的内容会输出到Find in Files选项卡中。
第1章 Visual C++集成开发环境
• Visual C++是一个功能强大的可视化应用程序开发工具。其凭借强大 功能,受大了广大程序员的欢迎。当今流行的Visual C++的开发工具 是6.0版本。下面来介绍Visual C++ 6.0的一些基本情况。
第6章 文本输出
第6面讲的TextOut()外,常见的还有ExtTextOut(): 该函数的原型为:
BOOL ExtTextOut { int x, int y; //输出的位置 ; 输出的位置 UINT nOptions;//指定矩形的类型 ; 指定矩形的类型 LPCRECT lpRect;//输出的字符的矩形区域 ; 输出的字符的矩形区域 const CString& str;//欲输出的字符 ; 欲输出的字符 LPINT lpDxWidths ;//字符间距 字符间距 };
第6章 文本输出与绘图 章
要创建字体,首先要声明一个 对象来表示逻辑字体, 要创建字体,首先要声明一个CFont对象来表示逻辑字体,然 对象来表示逻辑字体 后初始化CFont对象。常见的初始化方法有以下几种: 对象。常见的初始化方法有以下几种: 后初始化 对象 的成员函数CreatePointFont直接创建逻辑字体,函 直接创建逻辑字体, (1)用CFont的成员函数 ) 的成员函数 直接创建逻辑字体 数原型为: 数原型为 BOOL CreatePointFont( int nPointSize, LPCTSTR lpszFaceName, CDC* pDC = NULL ); 其中,字体的高度由 指定,它以1/10点数为一个 其中,字体的高度由nPointSize 指定,它以 点数为一个 单位。例如如该值为 单位。例如如该值为100,则字体的高度为 点(1点=0.013837 ,则字体的高度为10点 点 英寸),字体的名称由lpszFaceName指定。下面为使用该函数 指定。 英寸),字体的名称由 ),字体的名称由 指定 的典型代码: 的典型代码:
DEVICE_DEFAULT_FO NT
特定设备的缺省字体。该字体取决于GDI字体的映射程序如何解释字体 特定设备的缺省字体。该字体取决于GDI字体的映射程序如何解释字体 GDI 请求,因此对于不同的设备, 请求,因此对于不同的设备,其字体宽度可能不同
兄弟MFC-8460N_8860DN_DCP-8060维修手册
第6章 MFC基础
MFC概述—MFC应用程序分析
➢ 无WinMain()函数 ➢ 应用程序对象:必须利用应用程序类实例化一个全局对象 ➢ InitInstance()函数:派生类中重写,用于初始化应用程序 ➢ MFC窗体:利用MFC已有的窗体类派生或实例化
-5-
MFC概述—MFC应用程序开发方法
创建项目 创建/编辑资源
函数功能 在数组的最后添加一个数组元素,在必要时扩展数组 将另一个数组添加到此数组,在必要时扩展数组 将另一数组复制给此数组,在必要时扩展数组 设定数组指定位置处的值,在必要时扩展数组 获得一个指向数组元素的指针 释放不用的数组内存 获取数组内指定位置处的值 获取数组中包含的元素个数 获取允许访问数组元素的值的指针 获取数组的上边界的值 在数组的指定位置插入一个元素,后面的元素下标加1 删除指定位置处的值 删除数组中的所有元素 设定数组指定位置处的值,数组不增长 设置数组的的初始大小 重载数组下标操作符
...... END_MESSAGE_MAP
- 10 -
MFC应用程序框架—消息映射
➢ 普通窗口消息
窗口消息 WM_CHAR WM_CLOSE
消息映射宏 ON_WM_CHAR ON_M_CLOSE
默认处理函数
afx_msg void OnChar (UINT, UINT, UINT); afx_msg void OnClose();
afx_msg void OnMouseMove( UINT, CPoint);
- 11 -
MFC应用程序框架—消息映射
➢ 命令消息
//命令消息使用ON_COMMAND宏对其进行映射响应,格式如下: ON_COMMAND(命令ID,响应函数)
//响应函数的原型如下: afx_msg void memberFxn();
Visual c++6.0目录及简介
目录回到顶部↑第1章概述1.1 MFC简介1.2 MFC分层1.2.1 根类1.2.2 MFC应用程序结构类1.2.2.1 应用程序和线程支持类1.2.2.2 命令发送类1.2.2.3 文档类1.2.2.4 视图类(结构)1.2.2.5 框架窗口类(结构)1.2.2.6 文档模板类1.2.3 窗口、对话框和控件类1.2.3.1 框架窗口类(窗口)1.2.3.2 视图类(窗口)1.2.3.3 对话框类1.2.3.4 控件类1.2.3.5 控件栏类1.2.4 输出(设备文本)和绘图类1.2.5 简单数据类型类1.2.6 数组、列表和映射类.1.2.6.1 数组、列表和映射的模板类1.2.6.2 用于数组的类1.2.6.3 用于列表的类1.2.6.4 用于映射的类1.2.7 文件和数据库类1.2.7.1 文件I/O类1.2.7.2 DAO类1.2.7.3 ODBC类1.2.8 Internet和网络类1.2.8.1 ISAPI类1.2.8.2 Windows Sockets类1.2.8.3 WiInet类1.2.9 OLE类1.2.9.1 OLE容器类1.2.9.2 OLE服务器类1.2.9.3 OLE拖放和数据传输类1.2.9.4 OLE通用对话类1.2.9.5 OLE自动化类1.2.9.6 Activex控类1.2.9.7 Activex文档类1.2.9.8 与0LE有关的类包括:1.2.10 调试和异常类1.2.10.1 调试支持类包括:1.2.10.2 异常类包括:1.3 MFC与C语言API第2章根类和CWod类2.1 CObject类2.2 CRuntimeClass类2.3 CWnd类第3章 MFC应用程序结构类3.1 CArchive类3.2 CCmdTarget类3.3 CcmdUI类3.4 CcommandLineInfo类3.5 CcreateContext类3.6 CcriticalSection类3.7 CctrView类3.8 CboRecorldView类3.9 CDocItem类3.1O CDockstate 类3.11 CDocTemplate 类3.12 CDocunlent 类3.13 CEdit 类3.14 Cevent 类3.15 CFormView 类3.16 CFralneWnd 类3.17 Chttyfilter 类3.18 ChttpseNer 类3.19 CListView 类3.20 CMDIChildWnd 类3.21 CMDIFrameWnd 类3.22 CMultiDocTemplate 类3.23 Cmultilock 类3.24 CMutex 类3.25 COledocuntent 类3.26 COleIPFrallleWnd 类3.27 COleLinkingDoc 类3.28 COleServerDoc 类3.29 CRecentfilelist 类3.30 CRecordView 类3.3l CRichEditDoc 类3.32 CrLichEditView 类3.33 CScroIIView 类3.34 CSemaphore 类3.35 CSindeDocTemplate 类3.36 CSingleLock 类3.37 CSyncObject 类3.38 CTreeView 类3.39 CView 类3.40 CWaitCunor 类3.41 CWinApp 类3.42 CWinTread 类第4章窗口、对话框和控件类4.l CBinnapBuRon 类4.2 cnunon 类4.3 CCheckListBox 类4.4 CColorDialog 类4.5 CComboBox 类4.6 CCommonDialog 类4.7 CComboBoxEx 类4.8 CCon801Bar 类4.9 CDaoRecordView 类4.10 CDataExchallge 类4.11 CdateTimeChl 类4.12 CDialog 类4.13 CDialogBar 类4.14 CDrad.istBox 类4.15 CFUeDialog 类4.16 CFindReplaceDialog 类4.17 CFontDialog 类4.18 CHeaderC81 类4.19 CHotKeyCtrl 类4.20 CHUnIView 类4.21 CImageList 类4.22 CIPAddressCtr1 类4.23 CListBox 类4.24 CListCtrl 类4.25 CMenu 类4.26 CMiniFrallleWnd 类4.27 CMonthCaICUI 类4.28 COleBusyDialog 类4.29 COleChangelmnDaolog 类4.3O COleChallgeSoumeDialog 类4.3l COleConvertDialog 类4.32 COleDBRecordView 类4.33 COleDialog 类4.34 ColeDocObjectltem 类4.35 COlekseHDiaog 类4.36 COleIPFrameWnd 类4.37 COlePasteSpeciaIDailog 类4.38 COlePropeniesDialog 类4.39 COlePropertyPage 类4.40 COleUpdateDialog 类4.4l CPageSetupDialog 类4.42 CPrintDialog 类4.43 CPrintInfo 类4.44 CProgressCtrl 类4.45 CProrpertyPage 类4.46 CPropertyPageEx 类4.47 CPropertySheet 类4.48 CPropertySheetEx 类4.49 CRebar 类4.50 CReBarCtrl 类4.5l CRichEditCnRltem 类4.52 CRichEditCtrl 类4.53 CRjchEditDoc 类4.54 CRichEditView 类4.55 CScroUBar 类4.56 CSliderCtrl 类4.57 CSpinBuUonCtrl 类4.58 CSpliaerWnd 类4.59 CStatic 类4.60 CStatusBar 类4.6l CStatusBarCtrl 类4.62 CTooIBar 类4.63 CTooIBarCtrl 类4.64 CTooITipCal 类4.65 CTreeCtrl 类第5章绘图和打印类5.l CBitmap 类5.2 CBrush 类5.3 CClientDC 类5.4 CDC 类5.5 CFont 类5.6 CFontDialog 类5.7 GdiObject 类5.8 CMetaFileDC 类5.9 CPaintDC 类5.1O CPalene 类5.11 CPen 类5.12 CPoint 类5.13 CRect 类5.14 CRectTracker 类5.15 CRgn 类5.16 CSize 类5.17 CWhdowDC 类第6章简单数据类型类6.1 COleCunency 类6.2 COleDateTime 类6.3 COleDateTimeSpall 类6.4 COleVadant 类6.5 CString 类6.6 CTune 类6.7 CTimeSpall 类第7章数组、列表和映射类7.1 CAmay 类7.2 CByteAnay 类7.3 CDWordAmay 类7.4 CList 类7.5 CMap 类7.6 CMapPtrToPtr 类7.7 CMapPtrToWord 类7.8 CMapString gToOb 类7.9 CMapStringToPtr 类7.1O CMapStringToString 类7.11 CMapWordToOb 类7.12 CMapWordToPtr 类7.l3 CObAmay 类7.14 CObList 类7.15 CPtrArray 类7.16 CPtrList 类7.17 CStringAmay 类7.18 CSuingList 类7.1l9 CTypedPtrAnay 类7.20 CTypedPUList 类7.21 CTypedPtrMap 类7.22 CUlntAnay 类7.23 CWordAmay 类第8章文件和数据库类8.1 CArchiveException 类8.2 CDaoDatabase 类8.3 CDaoException 类8.4 CDaoFieldExchange 类8.5 CDaoQueryDef 类8.6 CDaoRecordset 类8.7 CDaoTableDef 类8.8 CDaoWorkSpace 类8.9 CDatabase 类8.1O CDBException 类8.11 CDBVadant 类8.12 CFieldExchange 类8.13 CFile 类8.14 CFileException 类8.15 CHUnIStream 类8.16 CLongBinary 类8.17 CMemFile 类8.18 COleSUeamFile 类8.19 CRecordset 类8.20 CSharedFile 类8.21 CSocketFile 类8.22 CStdibFile 类第9章 Internet 和网络9.l CAsyncSocket 类9.2 CFileFind 类9.3 CFtyConnection 类9.4 CFtpFileFind 类9.5 CGopherConnection 类9.6 CGopherFile 类9.7 CGopherFileFind 类9.8 CGopherLocator 类9.9 CHttpConnection 类9.1O CHttpFile 类9.11 CHttpFilterContext 类9.12 CHtWServerConbct 类9.13 ClntemetConnection 类9.14 ClntemetException 类9.15 Cbkmefile 类9.1l6 CkakmetSession 类9.17 CSocket 类第10章 OLE 类10.l CAsyncMonikerFile 类1O.2 CCachedDataPathProperty 类1O.3 CConnectionPoint 类1O.4 CDataPadTProperty 类1O.5 CDocObjectServer 类1O.6 CDocObjectServerltem 类1O.7 CFontrlolder 类10.8 CMonikerFile 类1O.9 COleClienatem 类1O.1O COleCmdUI 类1O.1l COleControl 类10.12 COleConveHDialog 类10.l3 COleDataObject 类10.l4 COleDataSollrce 类10.15 COleDispatchDriver 类1O.l6 COleDispatchException 类10.17 COleDropSource 类1O.l8 COleDropTarget v10.l9 COleException 类1O.20 COleLiakingDoc 类10.2 l COleMessageFilter 类10.22 COleObjectFactory 类10.23 COleResizeBar 类10.24 COleSafeAmay 类10.25 COleServerltem 类10.26 COleTemplateServer 类10.27 CPictureHolder 类1O.28 CPropExchange 类10.29 CrUchEditCntrItem 类第11章调试和异常类11.1 CDumpContext 类11.2 CException 类11.3 CMemoryException 类11.4 CMemoryState 类11.5 CNotSuppoHedException 类11.6 CResomceException 类11.7 CUserException 类前言回到顶部↑VisualC++以其非常友好的人机界面,强大的功能成为目前最受欢迎的开发语言之一。
第六章 MFC与对话框编程
一个创建模式对话框的实例(11 )
运行对话框
void CRegisterView::OnEditRegister() { CRegisterDialog dlg(this); if (dlg.DoModal()==IDOK) { CString str; GetWindowText(str); str+="姓名:"+dlg.m_strName+"\r\n"; str+="性别:";str+=dlg.m_nSex?"女":"男";str+="\r\n"; str+="婚否:";str+=dlg.m_bMarried?"已婚":"未婚";str+="\r\n"; str+="就业:";str+=dlg.m_nWork?"下岗":"在职";str+="\r\n"; str+="工作单位:"; str+=dlg.m_strUnit; str+="\r\n"; str+="单位性质:"; str+=dlg.m_strKind; str+= "\r\n"; str+="工资收入:"; str+=+dlg.m_strIncome; str+= "\r\n"; SetWindowText(str); } 在RegisterView.cpp文件的开头加入 #include "RegisterDialog.h" }
第6章 WinInet编程
第6章 WinInet编程 章 编程
WinInet开发包的两种形式: WinInet开发包的两种形式: 开发包的两种形式 API包含一个 包含一个C WinInet API包含一个C语言的函数集 WinInet类层次则是对前者的面向对象的封 MFC WinInet类层次则是对前者的面向对象的封 装
6.1.4 关于返回信息的缓冲区参数。
通过缓冲区返回信息: 通过缓冲区返回信息: 许多WinInet API函数使用两个参数来向应用程序 许多WinInet API函数使用两个参数来向应用程序 返回信息。 返回信息。lpszBuffer 是指向数据缓冲区的指针可以 为NULL。lpdwBufferLength 是指向缓冲区长度的指针 NULL。 (LPDWORD lpdwBufferLength ),它在函数开始执行时 ), 指示缓冲区的大小,不能为NULL。 指示缓冲区的大小,不能为NULL。 NULL
6.1.1 WinInet API的HINTERNET句柄 的 句柄
HINTERENT: : HINTERNET句柄是一种特殊的数据类型 句柄是一种特殊的数据类型, HINTERNET句柄是一种特殊的数据类型,是由少数 API函数创建的 大多数WinInet API函数通 函数创建的, WinInet API函数创建的,大多数WinInet API函数通 过使用HINTERNET类型的句柄来实现它的操作。 HINTERNET类型的句柄来实现它的操作 过使用HINTERNET类型的句柄来实现它的操作。 它跟其他的Win32 Handle很类似 很类似, 它跟其他的Win32 Handle很类似,但是不能够跟其 他类型的Win32 Handle相互交换使用 相互交换使用。 他类型的Win32 Handle相互交换使用。而各个函数返 回的HINTERNET处于一个树型结构中。 HINTERNET处于一个树型结构中 回的HINTERNET处于一个树型结构中。
胡学龙《数字图像处理》课后习题答案
胡学龙《数字图像处理》课后习题答案胡学龙、许开宇编著《数字图像处理》思考题与习题参考答案第1章概述1.1 连续图像和数字图像如何相互转换?答:数字图像将图像看成是许多大小相同、形状一致的像素组成。
这样,数字图像可以用二维矩阵表示。
将自然界的图像通过光学系统成像并由电子器件或系统转化为模拟图像(连续图像)信号,再由模拟/数字转化器(ADC)得到原始的数字图像信号。
图像的数字化包括离散和量化两个主要步骤。
在空间将连续坐标过程称为离散化,而进一步将图像的幅度值(可能是灰度或色彩)整数化的过程称为量化。
1.2 采用数字图像处理有何优点?答:数字图像处理与光学等模拟方式相比具有以下鲜明的特点:1.具有数字信号处理技术共有的特点。
(1)处理精度高。
(2)重现性能好。
(3)灵活性高。
2.数字图像处理后的图像是供人观察和评价的,也可能作为机器视觉的预处理结果。
3.数字图像处理技术适用面宽。
4.数字图像处理技术综合性强。
1.3 数字图像处理主要包括哪些研究内容?答:图像处理的任务是将客观世界的景象进行获取并转化为数字图像、进行增强、变换、编码、恢复、重建、编码和压缩、分割等处理,它将一幅图像转化为另一幅具有新的意义的图像。
1.4 讨论数字图像处理系统的组成。
列举你熟悉的图像处理系统并分析它们的组成和功能。
答:如图1.8,数字图像处理系统是应用计算机或专用数字设备对图像信息进行处理的信息系统。
图像处理系统包括图像处理硬件和图像处理软件。
图像处理硬件主要由图像输入设备、图像运算处理设备(微计算机)、图像存储器、图像输出设备等组成。
软件系统包括操作系统、控制软件及应用软件等。
图1.8 数字图像处理系统结构图1.5 常见的数字图像处理开发工具有哪些?各有什么特点?答.目前图像处理系统开发的主流工具为Visual C++(面向对象可视化集成工具)和MATLAB的图像处理工具箱(Image Processing Tool box)。
深入浅出MFC一解析
深入浅出MFC一Contents[Trial version] 目录[Trial version] 第0章你一定要知道(导读)[Trial version] 第1章Win32基本程序观念[Trial version] 第2章C++的重要性质[Trial version] 第3章MFC六大关键技术之模拟[Trial version] 第5章总观AlicationFramework[Trial version] 第6章MFC程序设计导论[Trial version] 第7章简单而完整:MFC骨干程序[Trial version] 第8章Document-View深入探讨[Trial version] 第9章消息映射与命令绕行[Trial version] 第10章MFC与对话框[Trial version] 第11章View功能之加强与重绘效率之提升[Trial version] 第12章打印与预览[Trial version] 第13章多重文件与多重显示[Trial version] 第14章MFC多线程程序设计[Trial version] 第15章定制一个AWizard[Trial version] 第16章站上众人的肩膀--使用Comonents&am;amActiveXControls[Trial version] 附录A无责任书评[Amber demo]owered By Gisun htt://目录第0章你一定要知道(导读)/1这本书适合谁/1你需要什么技术基础/1你需要什么软硬件环境让我们使用同一种语言本书符号习惯/3磁盘内容与安装范例程序说明第一篇勿在浮砂筑高台- 本书技术前提/3 第1章Win32 程序基本观念/3Win32程序开发流程/4需要什么函数库(.LIB)/4需要什么头文件(.H)/4以消息为基础以事件驱动之/5一个具体而微的Win32 程序/5程序进入点WinMain/10窗口类之注册与窗口之诞生/11 消息循环/12窗口的生命中枢—窗口函数/12 消息映射(Message Ma)雏形/13 对话框的运作/14模块定义文件(.DEF)/14资源描述文件(.RC)/15 Windows 程序的生与死/15闲置时间的处理:OnIdle /16 Console 程序/17Console 程序与DOS 程序的差别/17 Console 程序的编译链接/18JBACKU:Win32 Console 程序设计/19 MFCCON:MFC Console 程序设计/20什么是C Runtime Library 的多线程版本/22 进程与线程(rocess and Thread)/22核心对象/22一个进程的诞生与死亡/23产生子进程/23一个线程的诞生与死亡/24以_beginthreadex取代CreateThread/25线程优先权(riority)/26多线程程序设计实例/27第2章C++ 的重要性质/29类及其成员—谈封装(encasulation)/29基类与派生类—谈继承(Inheritance)/29this 指针/31虚函数与多态(olymorhism)/32类与对象大解剖/40Object slicing 与虚函数/42静态成员(变量与函数)/44C++程序的生与死:兼谈构造函数与析构函数/46四种不同的对象生存方式/47所谓“Unwinding”/48运行时类型信息(RTTI)/48动态生成(Dynamic Creation)/50异常处理(Excetion Handling)/50 Temlate /53Temlate Functions /53Temlate Classes /54Temlates 的编译与链接/56第3章MFC六大关键技术之模拟/57MFC类阶层/57Frame1范例程序/57MFC程序的初始化过程/59Frame2范例程序/61RTTI(运行时类型辨识)/65 CRuntimeClass与类型录/65DECLARE_DYNAMIC / IMLEMENT_DYNAMIC宏/66 Frame3 范例程序/71IsKindOf(类型辨识)/77Frame4 范例程序/77Dynamic Creation(动态生成)/78DECLARE_DYNCREATE / IMLEMENT_DYNCREATE 宏/79 Frame6 范例程序/84ersistence(永续生存)机制/91Serialize(数据读写)/91DECLARE_SERIAL/IMLEMENT_SERIAL 宏/95没有范例程序Message Maing(消息映射)/97Frame7 范例程序/104Command Routing(命令循环)/112Frame8 范例程序/119本章回顾/130第二篇欲善工事先利其器-Visual C++ 5.0 开发工具第4章Visual C++ - 整合性软件开发环境安装与组成四个重要的工具内务府总管:Visual C++ 整合开发环境关于roject关于工具设定Source BrowserOnline Hel除错工具VC++ 除错器Excetion Handling程序代码产生器—AWizard东圈西点完成MFC 程序骨干Scribble Ste0威力强大的资源器Icon 器Cursor器Bitma器ToolBar器VERSIONINFO资源器String Table器Menu 器Accelerator 器Dialog 器Console 程序的项目管理第三篇浅出MFC程序设计第5章总观Alication Framework /130 什么是Alication Framework /130侯捷怎么说/130我怎么说/131别人怎么说/133为什么使用Alication Framework /134 Microsoft Foundation Class(MFC)/136 白头宫女话天宝:Visual C++与MFC/137 纵览MFC /138General urose classes /138Windows AI classes /139Alication framework classes /140High level abstractions /140Afx全局函数/140MFC宏(macros)/141MFC数据类型(data tye)/142第6章MFC程序设计导论——MFC程序的生死因果/144 不二法门:熟记MFC类的阶层架构/144需要什么函数库(.LIB)/146需要什么含入文件(.H)/146简化的MFC程序架构—以Hello MFC为例/148Hello 程序原始代码/148MFC 程序的来龙去脉/152我只借用两个类:CWinA和CFrameWnd /152 CWinA—取代WinMain的地位/152CFrameWnd—取代Wndroc的地位/154引爆器—Alication object /155隐晦不明的WinMain /156AfxWinInit - AFX 内部初始化动作/158CWinA::InitAlication /160CMyWinA::InitInstance /160CFrameWnd::Create 产生主窗口(并注册窗口类)/161 奇怪的窗口类名称Afx:b:14ae:6:3e8f/168 窗口显示与更新/170CWinA::Run - 程序生命的活水源头/170把消息与处理函数串接在一起:Message Ma机制/172来龙去脉总整理/173Callback 函数/174闲置时间(idle time)的处理:OnIdle/176 Dialog 与Control/178通用对话框(Common Controls)/178本章回顾/179第7章简单而完整:MFC 骨干程序/180 不二法门:熟记MFC 类的阶层架构/180 MFC程序的UI新风貌/180Document/View 支撑你的应用程序/181 利用Visual C++工具完成Scribble ste0 /183骨干程序使用哪些MFC类?/183Document Temlate的意义/187Scribble的Document/View 设计/190主窗口的诞生/192工具列和状态列的诞生(Toolbar &am; Status bar)/193 鼠标拖放(Drag and Dro)/195消息映射(Message Ma)/196标准菜单File/Edit/View/Window/Hel/196对话框/199改用CEditView /199第四篇深入MFC程序设计/199第8章Document-View 深入探讨/200为什么需要Document-View(形而上)/200 Document /200View /201Document Frame(View Frame)/202Document Temlate /202CDocTemlate 管理CDocument / CView / CFrameWnd /202 Scribble Ste1 的Document(数据结构设计)/207 MFC Collection Classes 的选用/207Temlate-Based Classes /208Temlate-Based Classes 的使用方法/209CScribbleDoc 的修改/209 SCRIBBLEDOC.H /211 SCRIBBLEDOC.C /212文件:一连串的线条/215 CScribbleDoc 的成员变量/215 CObList /215CScribbleDoc 的成员函数/215 线条与坐标点/217CStroke 的成员变量/217 CArray<Coint, Coint> /217 CStroke 的成员函数/217Scribble Ste1 的View:数据重绘与/218 CScribbleView 的修改/218 SCRIBBLEVIEW.H /219SCRIBBLEVIEW.C /220View 的重绘动作—GetDocument和OnDraw /222 CScribbleView的成员变量/222 CScribbleView的成员函数/223View 与使用者的交谈(鼠标消息处理实例)/223 ClassWizard 的辅佐/224WizardBar 的辅佐/225Serialize:对象的文件读写/225Serialization以外的文件读写动作/226 台面上的Serialize动作/227台面下的Serialize写文件奥秘/231台面下的Serialize读文件奥秘/233 DYNAMIC / DYNCREATE / SERIAL 三宏/240 Serializable 的必要条件/244CObject 类/245IsKindOf/245IsSerializable/245CObject::Serialize/245CArchive类/246oerator<<和oerator>>/246效率考虑/250自定SERIAL宏给抽象类使用/250在CObList中加入CStroke 以外的类/250 Document与View 交流—为Scribble Ste4做准备/254 第9章消息映射与命令循环/255到底要解决什么/255消息分类/256万流归宗Command Target(CCmdTarget)/256三个奇怪的宏一张巨大的/257 DECLARE_MESSAGE_MA 宏/257消息映射的形成:BEGIN_/ON_/END_ 宏/258米诺托斯(Minotauros)与西修斯(Theseus)/261 两万五千里长征—消息的流窜/265直线上溯(一般Windows 消息)/265拐弯上溯(WM_COMMAND 命令消息)/268罗塞达碑石:AfxSig_xx 的秘密/273Scribble Ste2:UI 对象的变化/277改变菜单/277改变工具列/278利用ClassWizard连接命令项识别代码与命令处理函数/280 维护UI对象状态(UDATE_COMMAND_UI)/282本章回顾/285第10章MFC 与对话框/285对话框器/286利用ClassWizard 连接对话框与其专属类/288ENDLG.H /290ENDLG.C /291对话框的消息处理函数/292MFC中各式各样的MA /294对话框数据交换与查核(DDX &am; DDV)/294MFC中各式各样的DDx_函数/297如何唤起对话框/297本章回顾/299第11章View功能之加强与重绘效率之提升/299同时修改多个Views:UdateAllViews 和OnUdate/300 在View中定义一个hint/302把hint传给OnUdate/304利用hint增加重绘效率/305可卷动的窗口:CScrollView /307大窗口中的小窗口:Slitter /313分裂窗口的功能/313分裂窗口的程序概念/314分裂窗口之实现/315本章回顾/317第12章印表与预览/317概观/317打印动作的后台原理/320MFC预设的打印机制/324Scribble打印机制的补强/333打印机的页和文件的页/333配置GDI绘图工具/334尺寸与方向:关于映射模式(坐标系统)/334分页/336表头(Header)与表尾/338动态计算页代码/338打印预览(rint review)/339本章回顾/339第13章多重文件与多重显示/339 MDI 和SDI /340多重显像(Multile Views)/340窗口的动态分裂/342窗口的静态分裂/343 CreateStatic 和CreateView /343窗口的静态三叉分裂/345Grah 范例程序/346静态分裂窗口之观念整理/354同源子窗口/355 CMDIFrameWnd::OnWindowNew/355 Text 范例程序/356非制式作法的缺点/361多重文件/361新的Document类/362新的Document Temlate /363新的UI系统/364新文件的文件读写动作/365第14章MFC多线程程序设计(Multi-threaded rogramming in MFC)/367从操作系统层面看线程/367三个观念:模块、进程、线程/367线程优先权(riority)/368线程排程(Scheduling)/369Thread Context /370从程序设计层面看线程/371Worker Threads 和UI Threads /371错误观念/372正确态度/372MFC多线程程序设计/372探索CwinThread/372产生一个Worker Thread/374产生一个UI Thread /375线程的结束/376线程与同步控制/376 MFC多线程程序实例/378第15章定制一个AWizard /380到底Wizard是什么?/381Custom AWizard 的基本操作/381剖析AWizard Comonents /385Dialog Temlates 和Dialog Classes /385Macros /386Directives /387动手修改To Studio AWizard/387利用资源器修改IDD_CUSTOM1对话窗画面/387 利用ClassWizard 修改CCustom1Dlg类/388改写OnDismiss 虚函数在其中定义macros /389 修改text temlate/389To Studio AWizard执行结果/390更多的信息/390第16章站上众人的肩膀—使用Comonents和ActiveX Controls/391 什么是Comonent Gallery /391使用Comonents /393Slash screen /393System Info for About Dlg /394Tis of the Day /394Comonents实际运用:ComTest 程序/395修改ComTest 程序内容/409使用ActiveX Controls /411ActiveX Control 基础观念:roerties、Methods、Events/411ActiveX Controls 的五大使用步骤/412使用“Grid”ActiveX Control:OcxTest 程序/413[Amber demo]owered By Gisun htt://第0章你一定要知道(导读)这本书适合谁深入浅出MFC是一本介绍MFC(Microsoft Foundation Classes)程序设计技术的书籍。
(适合初学者)MFC基础教程
(适合初学者)M F C基础教程-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN(适合初学者)M F C基础教程-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIANVisual C++/MFC初学教程目录+-- 第一章 VC入门|------ 如何学好VC|------ 理解Windows消息机制|------ 利用Visual C++/MFC开发Windows程序的优势|------ 利用MFC进行开发的通用方法介绍|------ MFC中常用类,宏,函数介绍+-- 第二章图形输出|------ 和GUI有关的各种对象|------ 在窗口中输出文字|------ 使用点,刷子,笔进行绘图|------ 在窗口中绘制设备相关位图,图标,设备无关位图|------ 使用各种映射方式|------ 多边形和剪贴区域+-- 第三章文档视结构|------ 文档视图框架窗口间的关系和消息传送规律|------ 接收用户输入|------ 使用菜单|------ 文档,视,框架之间相互作用|------ 利用序列化进行文件读写|------ MFC中所提供的各种视类介绍+-- 第四章窗口控件|------ Button|------ Static Box|------ Edit Box|------ Scroll Bar|------ List Box/Check List Box|------ Combo Box/Combo Box Ex|------ Tree Ctrl|------ List Ctrl|------ Tab Ctrl|------ Tool Bar|------ Status Bar|------ Dialog Bar|------ 利用AppWizard创建并使用ToolBar StatusBar Dialog Bar |------ General Window|------ 关于WM_NOTIFY的使用方法+-- 第五章对话框|------ 使用资源编辑器编辑对话框|------ 创建有模式对话框|------ 创建无模式对话框|------ 在对话框中进行消息映射|------ 在对话框中进行数据交换和数据检查|------ 使用属性对话框|------ 使用通用对话框|------ 建立以对话框为基础的应用|------ 使用对话框作为子窗口+-- 第六章网络通信开发|------ WinSock介绍|------ 利用WinSock进行无连接的通信+------ 利用WinSock建立有连接的通信如何学好VC这个问题很多朋友都问过我,当然流汗是必须的,但同时如果按照某种思路进行有计划的学习就会起到更好的效果。
最全的windows知识点总结
第一章Windows程序设计基础Windows的特点:(1)直观,高效的面向对象的图形用户界面,易学易用。
(2)用户界面统一,友好,美观。
(3)丰富的设备无关的图形操作。
(4)多任务的实现。
操作系统的主要功能有进程管理,内存管理,设备管理,文件系统,用户管理等。
操作系统的分类:(1)单用户单任务操作系统(2)单用户多任务操作系统(3)多用户多任务分时操作系统(4)网络操作系统API(Application Programming Interface 应用程序编程接口)是用来控制Windows各个元素的外观和行为的一套预先定义的Windows函数。
MFC(Microsoft Foundation Classes 微软基础类库)是由微软公司提供的用于在Visual C++环境下编写Windows应用程序的一个框架和引擎,是Windows下应用程序的编程语言接口。
虚拟机:由Windows在内存中创建的逻辑微机,由它来运行应用程序。
内存,准确的说是无力内存。
运行任何一个程序都是要占用物理内存,当关闭这个程序时,系统也会从物理内存中删除这个程序的信息,也称释放内存。
习题:5.Windows的多任务是如何实现?答:当Windows接收到由鼠标,键盘,定时器信号或某些I/O操作产生的“事件”后,为该任务分配CPU时间。
每个任务使用由Windows分配的短暂的时间片轮流使用CPU,由于CPU对每个时间片的处理速度非常快,在用户看来好像这些任务在同时执行。
6.API和MFC的作用是什么?答:上有不做总结。
第二章Windows编程概述Windows基础用户界面对象包括:窗口,标题栏,图标,光标,插入符号,对话框,控件等。
*indows定义的别名:Typedef unsigned long DWORD;无符号长整形Typedef int BOOL;整形Typedef unsigned char BYTE;无符号字符型Typedef float FLOAT;单精度浮点型Typedef unsigned int UINT;无符号整形句柄与存放地址所占用字节一样,4字节,32位。
《VC++程序设计》自学指导
《Visual C++程序设计》自学指导"Visual C++程序设计"是面向计算机类各专业的必修计算机类基础课程。
该课程介绍基本的程序设计技术,包括结构化程序设计方法(SP)、面向对象的程序设计方法(OOP)以及使用Visual C++和MFC开发WINDOWS应用程序的技术。
通过本课程的学习,使学生掌握现代程序设计的基本理论和方法,能用Visual C++进行基本的WINDOWS应用程序设计。
本课程的重点在培养学生的实际应用软件开发能力.通过本课程的学习,在结构化程序设计方法和面向对象的程序设计方法的基本理论研究WINDOWS应用程序开发和MFC编程能力方面达到以下基本要求:1.熟悉计算机程序的基本组成要素,包括数据类型、程序流程、函数和指针等基本概念;2.理解结构化程序设计方法(SP)的理论,掌握“自顶向下,逐步求精”的程序设计技术,可设计含有分支、循环和模块(函数)的程序;3.掌握C++的基本流程控制;4.理解类、对象、封装、继承和多态性等面向对象程序设计(OOP)概念,掌握基本的面向对象程序设计方法;5.理解WINDOWS的消息机制和WINDOWS应用程序的基本结构;6.掌握MFC的基本概念,窗口、资源、图形设备接口、文档/视图结构、对话框和控件等对象的程序设计方法,Visual Studio中的AppWizard、ClassWizard、资源编辑器和调试器等工具的方法,可用Visual C++开发基本的WINDOWS应用程序。
第1章C++入门学习目标1.了解Visual C++的特点。
2.熟悉Visual C++集成开发环境的基本使用方法。
3.学习使用Visual C++编写标准的C++控制台程序。
学习重点1.利用Visual C++编写标准的C++控制台程序。
第2章控制结构学习目标1.掌握结构化程序设计方法的基本思想。
2.熟练使用VC++的基本控制结构。
3.熟练使用VC++的控制语句。
第6章 应用程序的退出
第6章 应用程序的退出一个Windows应用程序启动之后,一般是进入消息循环,等待或者处理用户的输入,直到用户关闭应用程序窗口,退出应用程序为止。
例如,用户按主窗口的关闭按钮,或者选择执行系统菜单“关闭”,或者从“文件”菜单选择执行“退出”,都会导致主窗口被关闭。
当用户从“文件”菜单选择执行“退出”时,将发送MFC标准命令消息ID_APP_EXIT。
MFC实现了函数CWinApp::OnAppExit()来完成对该命令消息的缺省处理。
void CWinApp::OnAppExit(){// same as double-clicking on main window close boxASSERT(m_pMainWnd != NULL);m_pMainWnd->SendMessage(WM_CLOSE);}可以看出,其实现是向主窗口发送WM_CLOSE消息。
主窗口处理完WM_CLOSE消息之后,关闭窗口,发送WM_QUIT消息,退出消息循环(见图5-3),进而退出整个应用程序。
6.1 边框窗口对WM_CLOSE的处理MFC提供了函数CFrameWnd::OnClose来处理各类边框窗口的关闭:不仅包括SDI的边框窗口(从CFrameWnd派生),而且包括MDI的主边框窗口(从CMDIFrameWnd派生)或者文档边框窗口(从CMDIChildWnd派生)的关闭。
该函数的原型如下,流程如图6-1所示:void CFrameWnd::OnClose()从图6-1中可以看出,它首先判断是否可以关闭窗口(m_lpfnCloseProc是函数指针类型的成员变量,用于打印预览等情况下),然后,根据具体情况进行处理:z如果是主窗口被关闭,则关闭程序的所有文档,销毁所有窗口,退出程序;z如果不是主窗口被关闭,则是文档边框窗口被关闭,又分两种情况:若该窗口所显示的文档被且仅被该窗口显示,则关闭文档和文档窗口并销毁窗口;若该窗口显示的文档还被其他文档边框窗口所显示,则仅仅关闭和销毁文档窗口。
网络编程实用教程课后习题
第一章网络编程基础1.什么是线程,什么是进程?答:进程是处于运行过程中的程序实例,是操作系统调度和分配资源的基本单位。
一个进程实体由程序代码、数据和进程控制块三部分构成。
线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。
2.描述网络应用程序的一般组成。
为什么说应用层协议是在应用程序中实现的?答:从功能上,可以将网络应用程序分为两部分,一部分是专门负责网络通信的模块,它们与网络协议栈相连接,借助网络协议栈提供的服务完成网络上数据信息的交换。
另一部分是面向用户或者作其他处理的模块,它们接收用户的命令,或者对借助网络传输过来的数据进行加工,这两部分模块相互配合,来实现网络应用程序的功能。
2.实现网间进程通信必须解决哪些问题?答:(1)网间进程的标识问题;(2)如何与网络协议栈连接的问题;(3)协议的识别问题;(4)不同的通信服务的问题4.说明TCP/IP中,端口的概念和端口的分配机制。
答:端口是TCP/IP协议族中,应用层进程与传输层协议实体间的通信接口。
TCP/IP协议采用了全局分配(静态分配)和本地分配(动态分配)相结合的分配方法。
对于TCP,或者UDP,将它们的全部65535个端口号分为保留端口号和自由端口号两部分。
保留端口的范围是0—1023,又称为众所周知的端口或熟知端口(well-known port),其余的端口号,1024-65535,称为自由端口号,采用本地分配,又称为动态分配的方法。
总之,TCP或UDP端口的分配规则是:端口0:不使用,或者作为特殊的使用;端口1-255:保留给特定的服务,TCP和UDP均规定,小于256的端口号才能分配给网上著名的服务;端口256-1023:保留给其他的服务,如路由;端口1024-4999:可以用作任意客户的端口;端口5000-65535:可以用作用户的服务器端口。
VC++6.0入门【第六章 创建和使用对话框】
第6章创建和使用对话框对话框是一种用户界面,几乎每一个Windows程序都使用对话框与用户进行交互。
对话框可能是一个简单的只含有OK按钮的消息框,也可以是一个复杂的数据输入表单。
对话框上有一些方便用户输入的控件,对话框依靠这些控件与用户进行交互,其实质是一个接收消息的窗口。
在本章节我们主要讲述模式对话框和无模式对话框的原理和使用方法,下一章将详细介绍各种控件的使用。
你将学习创建一个对话框,使用对话框模板编辑一个对话框资源,并在程序中调用对话框的方法。
6.1 对话框的基本原理6.1.1 对话框的工作原理在创建一个对话框之前,我们先来了解一下对话框是如何工作的,对话框的数据来自三方面:对话框资源、对话框对象、和一个文档对象:1.对话框资源对话框资源是一个用户输入或取得数据的图形界面。
这个图形界面是使用Develop Studio的对话框编辑器在对话框模板上创建的,程序员可以在对话框模板上增加并编辑控件,生成对话框资源。
当应用程序运行时,就可以得到一个对话框。
2.对话框对象MFC使用CDialog类来描述对话框,它是CWnd类的派生类。
在CWnd类的基础上增加了数据交换的功能。
当创建一个新的对话框资源后,使用ClassWizard可以创建一个对话框类的派生类。
对话框对象实现了对话框和应用程序之间的通信。
在应用程序中定义一个对话框对象后,在对话框显示前,可以通过访问对话框对象的成员变量为一个对话框的控件初始化,在对话框关闭后,可以通过访问对话框对象的成员变量获得用户的输入数据。
3.文档对象MFC使用文档对象描述应用程序处理的数据,用户输入的数据要进一步的处理,通常要先存贮到文档对象中。
例如:一个学生记录处理的应用程序,用户通过一个对话框输入学生记录并贮存到一个文件中。
应用程序的处理顺序是:用户在对话框中输入信息,通过对话框对象得到输入信息,将输入信息整理到文档对象中,使用序列化函数将文档对象存贮到一个文件中,所以文档对象扮演了一个很重要的数据交换的角色。
《面向对象程序设计》6章-12章问答题习题答案
面向对象程序设计习题 面向对象程序设计习题
习 题7
(4) 映像模式是什么?它是如何定义的? 映像模式是什么?它是如何定义的?
映像模式定义逻辑坐标系的单位与设备坐标系的度量单位之间的 转换关系以及设备坐标系的X方向和 方向。其优点是, 方向和Y方向 转换关系以及设备坐标系的 方向和 方向。其优点是,程序 员可不必考虑输出设备的具体坐标系, 员可不必考虑输出设备的具体坐标系,而在一个统一的逻辑 坐标系中进行图形的绘制与操作。 坐标系中进行图形的绘制与操作。 设置当前设备环境的映像模式采用SetMapMode()函数,函数中 函数, 设置当前设备环境的映像模式采用 函数 的映像模式选择如下表: 的映像模式选择如下表:
面向对象程序设计习题 面向对象程序设计习题
6-2 简答题 (3) Windows应用程序中的消息传递是如何进行的? 应用程序中的消息传递是如何进行的? 应用程序中的消息传递是如何进行的
由Windows以及由其他应用程序向用户的应用程序发送的全部消息都 以及由其他应用程序向用户的应用程序发送的全部消息都 储存在消息队列中,等待调用。 程序以消息循环调用Windows消 储存在消息队列中,等待调用。SDK程序以消息循环调用 程序以消息循环调用 消 如下代码表示此循环一直运行到程序接受终止执行消息才停止。 息,如下代码表示此循环一直运行到程序接受终止执行消息才停止。 MSG Msg; … while (GetMessage (&Msg,NULL,0,0)) { TranslateMessage(&Msg); DispatchMessage(&Msg); } While循环内部 由循环的每次迭代调用Windows API函数 循环内部, 在While循环内部,由循环的每次迭代调用 函数 GetMessage (&Msg,NULL,0,0)以得到消息队列中的下一个消息,并把 以得到消息队列中的下一个消息, 以得到消息队列中的下一个消息 它存在特定的MSG结构体变量 结构体变量Msg中。TranslateMessage(&Msg)实现 它存在特定的 结构体变量 中 实现 键盘上某个键的翻译。 键盘上某个键的翻译。DispatchMessage(&Msg)函数向窗口的消息处 函数向窗口的消息处 理函数发送消息,调用相应的消息处理函数。 理函数发送消息,调用相应的消息处理函数。完成后进入下一个循环
计算机组成与系统结构第六章答案
第六章中央处理器2. 简单回答下列问题。
(参考答案略)(1)CPU的基本组成和基本功能各是什么?(2)取指令部件的功能是什么?(3)控制器的功能是什么?(4)为什么对存储器按异步方式进行读写时需要WMFC信号?按同步方式访问存储器时,CPU如何实现存储器读写?(5)单周期处理器的CPI是多少?时钟周期如何确定?为什么单周期处理器的性能差?元件在一个指令周期内能否被重复使用?为什么?(6)多周期处理器的设计思想是什么?每条指令的CPI是否相同?为什么在一个指令周期内某个元件可被重复使用?(7)单周期处理器和多周期处理器的控制逻辑设计的差别是什么?(8)硬布线控制器和微程序控制器的特点各是什么?(9)为什么CISC大多用微程序控制器实现,RISC大多用硬布线控制器实现?(10)水平型微指令和垂直型微指令的基本概念和优缺点是什么?(11)CPU检测内部异常和外部中断的方法有什么不同?3. 在书中图6.9中,假定总线传输延迟和ALU运算时间分别是20ps和200ps,寄存器建立时间为10ps,寄存器保持时间为5ps,寄存器的锁存延迟(Clk-to-Q time)为4ps,控制信号的生成延迟(Clk-to-signal time)为7ps,三态门接通时间为3ps,则从当前时钟到达开始算起,完成以下操作的最短时间是多少?(1)将数据从一个寄存器传送到另一个寄存器(2)将程序计数器PC加1参考答案:(1)寄存器的锁存延迟与控制信号的生成延迟的时间重叠,且Clk-to-signal time> Clk-to-Q time,所以完成寄存器传送的时间延迟为:7+3+20+10=40ps。
(2)分两个阶段:PC+1→Z :7+3+20+200+10=240ps;Z→PC:7+3+20+10==40ps寄存器保持时间用来作为时间约束。
4. 图6.30给出了某CPU内部结构的一部分,MAR和MDR直接连到存储器总线(图中省略)。
网络编程实用教程_第6章
dwFlags:Options. This parameter can be a combination of
the following values : INTERNET_FLAG_ASYNC:Makes only asynchronous requests on handles descended from the handle returned from this function. 。 INTERNET_FLAG_FROM_CACHE:Does not make network requests. All entities are returned from the cache. If the requested item is not in the cache, a suitable error, such as ERROR_FILE_NOT_FOUND, is returned. INTERNET_FLAG_OFFLINE:Identical to INTERNET_FLAG_FROM_CACHE. Does not make network requests. All entities are returned from the cache. If the requested item is not in the cache, a suitable error, such as ERROR_FILE_NOT_FOUND, is returned.
CERN type proxies
TIS FTP gateway
全称Trusted Information Systems FTP gateway,是一种由 TIS开发的FTP网关服务器。 TIS是由(Trusted Information Systems)写的一组构造防火墙 的工具包,又叫firewall toolkit(FWTK) FWTK是一套用来建立和维护内部网络防火墙的工具集,用 于构建应用网关式防火墙。它包含了许多独立的组件,大部 分的组件是代理应用程序,如telnet、FTP、rlogin、 sendmail、HTTP、X windows等。它的突出优点是将很好 的访问控制融入其设计中,不但可以从本地和目标地的主机 名、IP地址来指定访问规则,而且可以根据访问操作来允许 或拒绝某个执行命令,更充分地体现了应用层网关的优势。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2010年10月
重庆理工大学计算机科学与工程学院计 算机科学与技术系刘恒洋
共9页第3页
6.2.1 按钮控件的使用
1. 简介
• 按钮控件分为:普通按钮(又分为普通按钮和默认普通按钮)、 单选按钮、复选框按钮、组框按钮、自绘按钮等。 • MFC的CButton类封装了按钮控件的相关操作; • 用于按钮控件消息映射的宏有ON_BN_CLICKED、 ON_BN_DBLCLICKED和ON_COMMAND; • CButton的父类为CWnd,所以按钮控件对象也可以使用类CWnd中 通用的窗口操作函数;
2. 组合框与应用程序间的消息传递
• 组合框应用实例:参见例题6-4。
2010年10月 重庆理工大学计算机科学与工程学院计 算机科学与技术系刘恒洋 共9页第7页
6.2.5 对话框通用控件的使 1. Picture控件的使用 2. Spin控件的使用 3. Progress控件的使用
用
4. Slider控件的使用
6.3.1 登录对话框的设计与实现
1. 对话框和控件
• 一个对话框由两部分组成:
– 对话框模板资源:用于指定对话框的控件及其布局; – 对话框类:用来实现对话框的功能,一般是从CDialog类派生而来;
• 控件实际上都是窗口,所有的控件类都是CWnd类的派生类。 控件通常是作为对话框的子窗口而创建的,控件也可以出现 在窗口、工具条和状态条中。
2. 列表框控件类的成员函数
• CListBox类的成员函数分为通用的成员函数、处理单选列表框、多选列 表框、特定字符串的成员函数和虚拟成员函数等(参见教材P105)。
3. 列表框应用举例
• 参见例题6-2
2010年10月 重庆理工大学计算机科学与工程学院计 算机科学与技术系刘恒洋 共9页第5页
6.2.3 编辑框控件的使用
• 每个控件都是一个小的窗口,所以控件具有通用的窗口属性; • Windows提供的标准控件主要包括:按钮控件、滚动条控件、 静态控件、列表框控件、编辑框控件和组合控件等。 • 控件通过发送WM_COMMAND消息进行相关的通信。不同控件 类型发送消息的通知代码不一样,教材P98表6-1列出了不同 的控件类型发送的通知代码
• 编辑框控件有两种:单行和多行编辑框控件。
1. 编辑框控件简介
• MFC在类CEdit中提供标准的Windows编辑框控件服务,CEdit是CWnd类直 接派生来的,它具有CWnd的所有功能; • 编辑框控件默认模式是单行的,通用成员函数参见教材P107; • 当编辑框控件具有EX_MULTILINE样式时,表示该控件是一个多行编辑框 控件,它的成员函数参见教材P108。
算机科学与技术系刘恒洋
6.3.2 添加全局变量和全局函
数 现
6.3.3 注册对话框的设计与实
6.3.4 主界面对话框的设计与实现
6.3.5 查看联系人信息对话框的设计与实现 6.3.6 查找联系人类型对话框的设计与实现 6.3.7 查找联系人结果对话框的设计与实现 6.3.8 文本聊天对话框的设计与实现 6.3.9 添加自定义消息(讲解原理)
2. 对话框模板的设计
• 完成示例系统中客户端登录对话框的设计,参见实验。
2010年10月 重庆理工大学计算机科学与工程学院计 算机科学与技术系刘恒洋 共9页第9页
3. 对话框类的设计
• 完成示例系统中客户端登录对话框类的创建,为该对话框类 加入成员变量,并在对话框初始化函数中完成初始化工作; • 对话框的数据交换机制
2. 按钮控件示例
• 参见例题6-1
2010年10月 重庆理工大学计算机科学与工程学院计 算机科学与技术系刘恒洋 共9页第4页
6.2.2 列表框控件的使用
• 列表框是一个矩形窗口,在矩形窗口中包含一系列的字符串,也可以包 含其他的数据元素,用户可以根据需要选择列表框中的元素。
1. 列表框的类结构
• 列表框允许用户在列表框中选择一项或多项,因此有两种样式的列表框, 即单选项列表框和多选项列表框; • 列表框控件在MFC中对应的类为CListBox; • 通常情况下列表框作为某一对话框的子窗口出现,这个对话框相当于列 表框的父窗口,列表框的消息都发往这个父窗口;
第6章 MFC应用程序基础
重点 1.Windows标准控件的使用 2.对话框通用控件的使用
2010年10月
重庆理工大学计算机科学与工程学院计 算机科学与技术系刘恒洋
共9页第1页
6.1
• 演示
应用程序向导
2010年10月
重庆理工大学计算机科学与工程学院计 算机科学与技术系刘恒洋
共9页第2页
6.2 MFC中常用Windows标准控件的应用
– 对话框的数据成员变量用来存储与控件相对应的数据,数据变量需 要和控件交换数据,以完成输入或输出功能; – MFC提供了类CDataExchange来实现对话框类与控件之间的数据交换 (DDX)和数据有效机制(DDV); – 数据交换的工作由CDialog::DoDataExchange成员函数来完成,但是 程序员不直接调用该函数,而是CWnd::UpdateData函数。
5. Date Time Picker控件的使用
6. List Control控件的使用
7. Tree Control控件的使用
• 参见例题6-5(演示其中一种控件的实现过程)。
2010年10月 重庆理工大学计算机科学与工程学院计 算机科学与技术系刘恒洋 共9页第8页
6.3 MFC对话框控件在实例系统中的应用
2. 编辑框控件应用
• 编辑框应用实例:参见例题6-3。
2010年10月
重庆理工大学计算机科学与工程学院计 算机科学与技术系刘恒洋
共9页第6页
6.2.4 组合框控件的使用
• 组合框是两种预定义窗口的组合形式。
1. 组合框类的机构及组合框的特点
• 常见的组合框是列表框以隐藏形式出现在编辑框下,用户单击编辑框右 侧的箭头时弹出列表框; • 在MFC中操作组合框的类为CComboBox; • 组合框的常见样式参见教材P110。
2010年10月
重庆理工大学计算机科学与工程学院计 算机科学与技术系刘恒洋
共9页第10页
3. 对话框类的设计
• 对话框的运行机制:在MFC程序中运行模态对话框分为两个步骤:
– 构建一个对话框类对象; – 利用该对象调用CDialog::DoModal():DoModal函数负责模态对话框 的创建和撤销。在创建对话框时,DoModal的任务包括载入对话框模 板资源,调用OnInitDialog初始化对话框,将对话框显示在屏幕上。 完成对话框的创建后,DoModal启动一个消息循环,以响应用户的输 入。由于该消息循环截获了几乎所有的输入消息,使主消息循环收 不到其他消息的输入,致使用户只能与模态对话框进行交互,而其 他用户界面对象收不到输入信息; – 若用户在对话框内单击了ID为IDOK的按钮(通常该按钮的标题是“确 定”或OK),或按了回车键,则CDialog::OnOK将被调用。OnOK首先 调用UpdateData(TRUE)将数据从控件传给对话框成员变量,然后调 用CDialog::EndDialog关闭对话框。关闭对话框后,DoModal会返回 值IDOK; – 若用户单击了ID为IDCANCEL的按钮(通常其标题为“取消”或 Cancel),或按了Esc键,则会调用CDialog::OnCancel。该函数只调 用CDialog::EndDialog关闭对话框。关闭对话框后,DoModal会返回 2010年10月 共9页第11页 重庆理工大学计算机科学与工程学院计 值IDCANCEL。
• 参见教材实现步骤。
2010年10月 重庆理工大学计算机科学与工程学院计 算机科学与技术系刘恒洋 共9页