《框架窗口教学》PPT课件.ppt
《《框架窗口教学》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《框架窗口教学》PPT课件.ppt(58页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、6.1 框架窗口框架窗口1.1.主框架窗口和文档窗口主框架窗口和文档窗口主框架窗口和文档窗口主框架窗口和文档窗口 主框架窗口是应用程序直接放置在桌面(DeskTop)上的那个窗口,每个应用程序只能有一个主框架窗口,主框架窗口的标题栏上往往显示应用程序的名称。文档窗口对于单文档应用程序来说,它和主框架窗口是一致的,即主框架窗口就是文档窗口;而对于多文档应用程序,文档窗口是主框架窗口的子窗口。多文档应用程序的框架窗口多文档应用程序的框架窗口6.1 框架窗口框架窗口2.2.窗口状态的改变窗口状态的改变窗口状态的改变窗口状态的改变参数值参数值参数值参数值含含含含 义义义义SW_HIDESW_HIDE隐
2、隐藏此窗口并将激活状藏此窗口并将激活状态态移交移交给给其它窗口其它窗口SW_MINIMIZESW_MINIMIZE将窗口最小化并激活系将窗口最小化并激活系统统中的中的顶层顶层窗口窗口SW_RESTORESW_RESTORE激活并激活并显显示窗口。若窗口是最小或最大状示窗口。若窗口是最小或最大状态时态时,则则恢复到原来的大小恢复到原来的大小和位置。和位置。SW_SHOWSW_SHOW用当前的大小和位置激活并用当前的大小和位置激活并显显示窗口示窗口SW_SHOWMAXIMIZEDSW_SHOWMAXIMIZED激活窗口并使之最大化激活窗口并使之最大化SW_SHOWMINIMIZEDSW_SHOWM
3、INIMIZED激活窗口并使之最小化激活窗口并使之最小化SW_SHOWMINNOACTIVESW_SHOWMINNOACTIVE窗口窗口显显示成示成为为一个一个图标图标并保留其激活状并保留其激活状态态(即原来是激活的,仍然是即原来是激活的,仍然是激活激活)SW_SHOWNASW_SHOWNA用当前状用当前状态显态显示窗口示窗口SW_SHOWNOACTIVATESW_SHOWNOACTIVATE用最近的大小和位置状用最近的大小和位置状态显态显示窗口并保留其激活状示窗口并保留其激活状态态SW_SHOWNORMALSW_SHOWNORMAL激活并激活并显显示窗口示窗口 MFC AppWizard为每
4、一个文档应用程序的框架窗口设置了相应的大小和位置,但为每一个文档应用程序的框架窗口设置了相应的大小和位置,但默认的窗口状态有时并不那么令人满意,这时就需要对窗口状态进行适当的改变。默认的窗口状态有时并不那么令人满意,这时就需要对窗口状态进行适当的改变。ShowWindow函数的参数值函数的参数值6.1 框架窗口框架窗口3.3.窗口风格的设置窗口风格的设置窗口风格的设置窗口风格的设置风风风风 格格格格含含含含 义义义义WS_BORDERWS_BORDER窗口含有窗口含有边边框框WS_CAPTIONWS_CAPTION窗口含有窗口含有标题栏标题栏(它意味着它意味着还还具有具有WS_BORDERWS
5、_BORDER风风格格),但它不能和,但它不能和WS_DLGFRAMEWS_DLGFRAME组组合合WS_CHILDWS_CHILD创创建子窗口,它不能和建子窗口,它不能和WS_POPUPWS_POPUP组组合合WS_DISABLEDWS_DISABLED窗口最初窗口最初时时是禁用的是禁用的WS_DLGFRAMEWS_DLGFRAME窗口含有双窗口含有双边边框,但没有框,但没有标题标题WS_HSCROLLWS_HSCROLL窗口含有水平窗口含有水平滚动滚动条条WS_MAXIMIZEWS_MAXIMIZE窗口最初窗口最初时处时处于最大化于最大化WS_MAXIMIZEBOXWS_MAXIMIZEB
6、OX在窗口的在窗口的标题栏标题栏上含有上含有 最大化最大化 按按钮钮WS_MINIMIZEWS_MINIMIZE窗口最初窗口最初时处时处于最小化,它只和于最小化,它只和WS_OVERLAPPEDWS_OVERLAPPED组组合合WS_MINIMIZEBOXWS_MINIMIZEBOX在窗口的在窗口的标题栏标题栏上含有上含有 最小化最小化 按按钮钮WS_OVERLAPPEDWS_OVERLAPPED创创建覆盖窗口,一个覆盖窗口通常有一个建覆盖窗口,一个覆盖窗口通常有一个标题标题和和边边框框WS_OVERLAPPEDWINDOWWS_OVERLAPPEDWINDOW创创建一含有建一含有WS_OVE
7、RLAPPEDWS_OVERLAPPED、WS_CAPTIONWS_CAPTION、WS_SYSMENUWS_SYSMENU、WS_THICKFRAMEWS_THICKFRAME、WS_MINIMIZEBOXWS_MINIMIZEBOX和和WS_MAXIMIZEBOXWS_MAXIMIZEBOX风风格的覆盖窗口格的覆盖窗口WS_POPUPWS_POPUP创创建一建一弹弹出窗口,它不能和出窗口,它不能和WS_CHILDWS_CHILD组组合。合。只能用只能用只能用只能用CreateExCreateEx函数指定函数指定函数指定函数指定WS_POPUPWINDOWWS_POPUPWINDOW创创建一
8、含有建一含有WS_BORDERWS_BORDER、WS_POPUPWS_POPUP和和WS_SYSMENUWS_SYSMENU风风格的格的弹弹出窗口。当出窗口。当WS_CAPTIONWS_CAPTION和和WS_POPUPWINDOWWS_POPUPWINDOW风风格格组组合合时时才能使系才能使系统统菜菜单单可可见见WS_SYSMENUWS_SYSMENU窗口的窗口的标题栏标题栏上含有系上含有系统统菜菜单单框,它框,它仅仅用于含有用于含有标题栏标题栏的窗口的窗口WS_TABSTOPWS_TABSTOP用用户户可以用可以用TABTAB键选择键选择控件控件组组中的下一个控件中的下一个控件WS_TH
9、ICKFRAMEWS_THICKFRAME窗口含有窗口含有边边框,并可框,并可调调整窗口的大小整窗口的大小WS_VISIBLEWS_VISIBLE窗口最初是可窗口最初是可见见的的WS_VSCROLLWS_VSCROLL窗口含有垂直窗口含有垂直滚动滚动条条6.1 框架窗口框架窗口2.2.在在在在MFC AppWizardMFC AppWizard中进行修改中进行修改中进行修改中进行修改(1)选择“文件”“新建”菜单,在弹出的“新建”对话框中选择“工程”标签,选择MFC AppWizard(exe)的项目类型,指定项目工作文件夹位置,输入项目名Ex_SDI2,单击确定按钮。(2)在向导的第一步中,
10、将应用程序类型选为“单个文档”。“新建新建”对话框对话框6.1 框架窗口框架窗口(3)单击单击下一个下一个按钮,出现向导的第二步对话框,在这里用户可以选择按钮,出现向导的第二步对话框,在这里用户可以选择 程序中是否加入数据库的支持。程序中是否加入数据库的支持。“Step 2”对话框对话框6.1 框架窗口框架窗口 (4)(4)单击单击单击单击 下一个下一个下一个下一个 按钮,出现向导的第三步对话框,允许用户在程按钮,出现向导的第三步对话框,允许用户在程按钮,出现向导的第三步对话框,允许用户在程按钮,出现向导的第三步对话框,允许用户在程序中加入复合文档、自动化、序中加入复合文档、自动化、序中加入复
11、合文档、自动化、序中加入复合文档、自动化、ActiveXActiveX控件的支持。控件的支持。控件的支持。控件的支持。6.1 框架窗口框架窗口 (5)(5)单击单击单击单击 下一个下一个下一个下一个 按钮,出现向导的第四步对话框,对话框的前几项依次确按钮,出现向导的第四步对话框,对话框的前几项依次确按钮,出现向导的第四步对话框,对话框的前几项依次确按钮,出现向导的第四步对话框,对话框的前几项依次确定对浮动工具条、打印与预览以及通信网络等特性的支持。定对浮动工具条、打印与预览以及通信网络等特性的支持。定对浮动工具条、打印与预览以及通信网络等特性的支持。定对浮动工具条、打印与预览以及通信网络等特性
12、的支持。6.1 框架窗口框架窗口 (6)(6)单击单击单击单击 高级高级高级高级 按钮,出现下图所示的对话框,分别用于文档按钮,出现下图所示的对话框,分别用于文档按钮,出现下图所示的对话框,分别用于文档按钮,出现下图所示的对话框,分别用于文档模板字串资源内容和窗口风格的修改。模板字串资源内容和窗口风格的修改。模板字串资源内容和窗口风格的修改。模板字串资源内容和窗口风格的修改。6.1 框框 架架 窗窗 口口 (7)(7)单击单击单击单击 关闭关闭关闭关闭 按钮回到向导对话框,单击按钮回到向导对话框,单击按钮回到向导对话框,单击按钮回到向导对话框,单击 下一个下一个下一个下一个 按钮,出现如下按钮
13、,出现如下按钮,出现如下按钮,出现如下图所示的对话框。图所示的对话框。图所示的对话框。图所示的对话框。6.1 框框 架架 窗窗 口口 (8)(8)单击单击单击单击 下一个下一个下一个下一个 按钮,出现对话框。在这里,用户可以对按钮,出现对话框。在这里,用户可以对按钮,出现对话框。在这里,用户可以对按钮,出现对话框。在这里,用户可以对MFC MFC AppWizardAppWizard提供的默认类名、基类名、各个源文件名进行修改。提供的默认类名、基类名、各个源文件名进行修改。提供的默认类名、基类名、各个源文件名进行修改。提供的默认类名、基类名、各个源文件名进行修改。6.1 框框 架架 窗窗 口口
14、3.3.修改修改修改修改CREATESTRUCTCREATESTRUCT结构结构结构结构当窗口创建之前,系统自动调用PreCreateWindow虚函数。在用MFC AppWizard创建文档应用程序结构时,MFC已为主窗口或文档窗口类自动重载了该虚函数。BOOL CMainFrame:PreCreateWindow(CREATESTRUCT&cs)/新窗口不带有最大化按钮 cs.style&=WS_MAXIMIZEBOX;/将窗口的大小设为1/3屏幕并居中 cs.cy=:GetSystemMetrics(SM_CYSCREEN)/3;cs.cx=:GetSystemMetrics(SM_CX
15、SCREEN)/3;cs.y=(cs.cy*3)-cs.cy)/2;cs.x=(cs.cx*3)-cs.cx)/2;/调用基类的PreCreateWindow函数 return CFrameWnd:PreCreateWindow(cs);6.1 框框 架架 窗窗 口口4.4.使用使用使用使用ModifyStyleModifyStyle和和和和ModifyStyleExModifyStyleExCWnd类中的成员函数类中的成员函数ModifyStyle和和ModifyStyleEx也可用来更改窗也可用来更改窗口的风格,其中口的风格,其中ModifyStyleEx还可更改窗口的扩展风格。还可更改窗
16、口的扩展风格。6.1 框框 架架 窗窗 口口5.5.改变窗口的大小和位置改变窗口的大小和位置改变窗口的大小和位置改变窗口的大小和位置用用CWnd类的成员函数类的成员函数SetWindowPos或或MoveWindow可以改变窗口的大小和位置。可以改变窗口的大小和位置。SetWindowPos是一个非常有用的函数,它不仅可以改变窗口的大小、位置,而且是一个非常有用的函数,它不仅可以改变窗口的大小、位置,而且还可以改变所有窗口在堆栈排列的次序还可以改变所有窗口在堆栈排列的次序(Z次序次序),这个次序是根据它们在屏幕出现的,这个次序是根据它们在屏幕出现的先后来确定的。先后来确定的。nFlagsnFl
17、ags值值值值含含含含 义义义义SWP_HIDEWINDOWSWP_HIDEWINDOW隐隐藏窗口藏窗口SWP_NOACTIVATESWP_NOACTIVATE不激活窗口。如不激活窗口。如该标该标志没有被指定,志没有被指定,则则依依赖赖pWndInsertAfterpWndInsertAfter参数参数SWP_NOMOVESWP_NOMOVE不改不改变变当前的窗口位置当前的窗口位置(忽略忽略x x和和y y参数参数)SWP_NOOWNERZORDERSWP_NOOWNERZORDER不改不改变变父窗口的父窗口的Z Z次序次序SWP_NOREDRAWSWP_NOREDRAW不重新不重新绘绘制窗口
18、制窗口SWP_NOSIZESWP_NOSIZE不改不改变变当前的窗口大小当前的窗口大小(忽略忽略cxcx和和cycy参数参数)SWP_NOZORDERSWP_NOZORDER不改不改变变当前的窗口当前的窗口Z Z次序次序(忽略忽略pWndInsertAfterpWndInsertAfter参数参数)SWP_SHOWWINDOWSWP_SHOWWINDOW显显示窗口示窗口6.2 文文 档档 模模 板板1.1.文档模板类文档模板类文档应用程序框架结构是在程序运行一开始构造的,在单文档应用程序(设项目名为Ex_SDI)的应用程序类InitInstance函数中,可以看到这样的代码:BOOL CEx_
19、SDI2App:InitInstance()CSingleDocTemplate*pDocTemplate;pDocTemplate=new CSingleDocTemplate(IDR_MAINFRAME,/资源ID RUNTIME_CLASS(CEx_SDIDoc),/文档类 RUNTIME_CLASS(CMainFrame),/主框架窗口类 RUNTIME_CLASS(CEx_SDIView);/视图类AddDocTemplate(pDocTemplate);return TRUE;6.2 文文 档档 模模 板板2.2.文档模板字符串资源文档模板字符串资源文档模板字符串资源文档模板字符串
20、资源 在MFC AppWizard创建的应用程序资源中,许多资源标识符都是IDR_MAINFRAME,这就意味着这些具有同名标识的资源将被框架自动加载到应用程序中。IDR_MAINFRAMIDR_MAINFRAME E的子串的子串的子串的子串串号串号串号串号用用用用 途途途途Ex_SDI2nEx_SDI2n0 0应应用程序窗口用程序窗口标题标题nn1 1文档根名。文档根名。对对多文档多文档应应用程序来用程序来说说,若在文档窗口,若在文档窗口标题标题上上显显示示“Sheet1”“Sheet1”,则则其中的其中的SheetSheet就是文档根名。若就是文档根名。若该该子串子串为为空,空,则则文档名
21、文档名为为默默认认的的“无无标题标题”Ex_SDInEx_SDIn2 2新建文档的新建文档的类类型名。若有多个文档型名。若有多个文档类类型,型,则这则这个名称将出个名称将出现现在在“新建新建”对话对话框中。框中。nn3 3通用通用对话对话框的文件框的文件过滤过滤器正文器正文nn4 4通用通用对话对话框的文件框的文件扩扩展名展名ExSDI2.DocumentnExSDI2.Documentn5 5在注册表中登在注册表中登记记的文档的文档类类型型标识标识Ex_SDIDocumentnEx_SDIDocumentn6 6在注册表中登在注册表中登记记的文档的文档类类型名称型名称6.2 文文 档档 模模
22、 板板3.3.使用多个文档类型使用多个文档类型使用多个文档类型使用多个文档类型(1)用MFC AppWizard(exe)创建一个默认的多文档应用程序项目Ex_MDIDemo。(2)打开项目工作区窗口中String Table的资源项,双击该项下的String Table,打开字符串表资源。6.2 文文 档档 模模 板板 (3)(3)双击双击双击双击IDR_MAINFRAMEIDR_MAINFRAME列表列表列表列表项,弹出字符串属性对话框,将项,弹出字符串属性对话框,将项,弹出字符串属性对话框,将项,弹出字符串属性对话框,将其标题修改为其标题修改为其标题修改为其标题修改为“多个文档类型实多个
23、文档类型实多个文档类型实多个文档类型实例例例例”。(4)双击双击IDR_EX_MDITYPE列表项,在字符串属性对列表项,在字符串属性对话中,将其内容修改话中,将其内容修改:(5)拖动字符串表编辑器右拖动字符串表编辑器右边边 的滚动块,直到出现最的滚动块,直到出现最后一个字符串项,双击最后一个字符串项,双击最后的空行,在字符串属性后的空行,在字符串属性对话框中将对话框中将ID设为设为 修改修改IDR_MAINFRAME字符串标题字符串标题 添加新的字符串项添加新的字符串项6.2 文文 档档 模模 板板 (6)6)按按快捷键快捷键Ctrl+WCtrl+W,打开,打开MFC MFC ClassWi
24、zardClassWizard,单击,单击Add ClassAdd Class按按钮,从弹出的菜单中选择钮,从弹出的菜单中选择NewNew,出现,出现“New Class”New Class”对话框,在对话框,在NameName框中框中输入类名输入类名COtherDocCOtherDoc,在,在Base classBase class组合框中选择基类组合框中选择基类CDocumentCDocument。(7)单击OK按钮,新的文档类COtherDoc就添加到Ex_MDIDemo项目中。(8)修改CEx_MDIDemoApp:InitInstance函数代码.(9)在类CEx_MDIDemoAp
25、p源代码文件Ex_MDIDemo.cpp的开始处,添加包含前面创建的两个派生类的头文件.添加新的文档类添加新的文档类COtherDoc6.2 文文 档档 模模 板板(10)(10)编译运行并测试。编译运行并测试。(11)(11)多类型文档窗口显示多类型文档窗口显示文档类型新建对话框文档类型新建对话框 文件打开对话框中的文件类型文件打开对话框中的文件类型6.3.1 MFC文档读写机制文档读写机制1.创建空文档创建空文档文档应用程序运行到应用程序类的InitInstance函数时,它会在调用了AddDocTemplate函数之后,通过CWinApp:ProcessShellCommand间接调用C
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 框架窗口教学 框架 窗口 教学 PPT 课件
限制150内