模式对话框传递对象
模态窗口
模态窗口的打开,model window open2.模态窗口的关闭,model window close3.模态窗口的传递参数,model window get valuse4.其他....,other ..1.window.showModalDialog("DialogPage.aspx","newwin","dialogHeight: 200px; dialogWidth: 150px; dialogTop: 458px; dialogLeft: 166px; edge: Raised; center: Yes; help: Yes; resizable: Yes; status: Yes;");2.window.close();3.传值ParentPage.aspx:window.showModalDialog("DialogPage.aspx?para1=aaa¶2=bbb"); DialogPage.aspx:string str1=Request.QueryString["para1"].toString();string str2=Request.QueryString["para2"].toString();返回值DialogPage.aspx:window.returnValue="aaa";ParentPage.aspx:var str=window.showModalDialog("DialogPage.aspx");4.aspx页面在showmodeldialog情况下为什么一提交就重新打开一个页面? showmodaldialog打开的页面中在<head></head>之间加入一行:<basetarget="_self">浅析js中的showModalDialog的实战应用IE提供的showModalDialog()方法是一个很好用的Web应用功能,虽然一般的网站应用不是很常见,但一旦涉及到企业应用级的Web开发则就很有用了。
关于在模态对话框中获取父窗口对象的方法研究
关于在模态对话框中获取父窗口对象的方法研究姚君/************************************************ *******************************/ 测试方法/************************************************ *******************************/ 首先,新建一个默认的单文档应用程序。
然后添加对话框资源,并为该对话框资源关联一个类,例如:CSl;为添加菜单,如Test;为view 类添加成员变量:public: COLORREF m_clr; 在view 类下添加菜单命令函数:void CColrView::OnTest() { // TODO: Add your command handler code here Csl dlg(this);//指定当前view 类窗口为模态对话框父窗口dlg.DoModal();} 在CSl 类中添加消息响应函数(WM_PAINT): void Csl::OnPaint() { CPaintDC dc(this); // device context for painting // TODO: Add your message handler code here CColrView *cp=(CColrView *)GetParent();//不能正确的获取父窗口view 类对象指针CWnd *cw=GetParent(); m_clr=((CColrView *)m_pParentWnd)->m_clr;//可以通过断点debug,发现m_clr 是我们要的值。
// Do not call CDialog::OnPaint() for painting messages } 注意:m_pParentWnd 是在CDialog 类中定义的,该类的头文件是"AFXWIN.H ”;protected: CWnd*m_pParentWnd; 为什么调用CWnd 类的GetParent 方法不能正确的获取到父窗口类对象指针的问题留待有时间认真阅读该函数源代码后再予以说明。
Windows程序设计 第3章 对话框和常见控件
树形控件
树形控件(TreeCtrl)和下面要讲的列表控件(ListCtrl) 在系统中大量被使用,例如Windows资源管理器就是一 个典型的树形控件例子。 树形控件可以用于树形的结构,其中有一个根接点(Root) (Root) 然后下面有许多子结点,而每个子结点上有允许有一个 或多个或没有子结点。MFC中使用CTreeCtrl类来封装树 形控件的各种操作。通过调用 BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );
滚动条控件
滚动条(Scroll Bar)一般不会单独使用,因为SpinCtrl 可以取代滚动条的一部分作用,但是如果我们需要自己生 成派生窗口,滚动条还是会派上一些用场。创建一个滚动 条可以使用成员函数: : BOOL CEdit::Create( LPCTSTR lpszText, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID = 0xffff );
MFC 提供类CDialog作为对话框服务的基类,类CDialog将对话框模板与使 用对话框时必需熟悉的几种类方法进行封装。对于对话框中发送消息的的 控件,我们可创建相应的消息处理程序。MFC编译器提供的框架工具使得 我们把对话框中的控件消息映像到派生类的类函数变得简单、快捷。对话 框数据映像函数使用专门的值初始化对话框中的控件,接着检索数据并使 之有效。大多数对话框需要类成员变量来跟踪用户的输入,这些数据在数 据映像中使用,它们在对话控件与类变量之间自动映像数据。 为创建对话框,首先建立CDialog对象,然后创建和显示对话框窗口我们 有两种选择:一种方法是调用函数CDialog::DoModal()来创建有模式对话 框窗口,另一种方法是调用函数CDialog::Create()来创建无模式对话框窗口, 在上述两种情况之下,对话框对象先初始化,然后创建对话框以及它的控 件。 类CDialog成员函数Create()使用两种重载原形,最常用的一种如下: Create(UINT nIDTemplate, CWnd * pParentWnd=NULL); 其中,参数nIDTemplate是一个对话框模板的标识符, 参数pParentWnd是对话框所属的父窗口。
可视化程序设计期末复习
一、选择题1. 从下列选项中,选择可视化的软件开辟工具。
A、C 语言C、C++D、ABC 都是2. VC++面对对象的设计方法中,新类继承了现有类的特性,我们称之为类的。
A.封装 B.抽象D.多态性3. VC++是支持的程序设计语言。
A、仅面对对象B、仅面对过程D、都不正确4. 面对对象的设计方法中,把每一个对象的数据和操作包装在一个类中,称之为类的。
B.抽象 C.继承 D.多态性5. 设 time 为一个类,从下列函数名中,选出 time 的析构函数。
A.time_show B.show C.6. 设 time 为一个类,从下列函数名中,选出 time 的构造函数。
A.time_show B.D.~time7. 创建基于 API 的应用程序,应选择项目类型。
A.MFC B.CLR C.8.采用重新绘制的方法刷新窗口,选择设备描述表。
A.CClientDC B.D.都可以9. 创建 MFC 应用程序,选择项目。
B.CLR C.ATL D.Win3210.采用记录事务的方法刷新窗口,选择设备描述表。
B.CWindowDC C.CPaintDC D.都可以11. 全部的控件都是类的派生类。
A.CView B.CDocument C.12. 设类名为“CA”,用来描述 CA 的对象的语句是。
A.CA ::Show B.D.Show :CA13. 设类名为“CA”,用来描述 CA 的成员函数的语句是。
B.Show CA C.CA Show D.Show :CA14. 设类名为“CA”,用来描述 CA 的派生类的语句是 D 。
A.CA ::Show B.Show CA C.15. VC++程序设计中,类的构造函数放在中。
B.头文件(.h) C.目标文件(.obj) D.可执行文件(.exe) 16. VC++程序设计中,类的定义放在中。
A.源文件C.目标文件(.obj) D.可执行文件(.exe) 17. VC++6.0 开辟环境的项目工作区中包括哪些视图。
Windows程序设计-大学模拟题(附答案)
《Windows程序设计》模拟题一,单选题1.所有的Windows应用程序都是由()驱动的.A.事件B.消息C.命令D.菜单[答案]:B2.一般应用程序不会派生自己的()类.A.主框架B.视图C.菜单D.文档[答案]:C3.MessageBox不能完成()功能.A.接收用户输入B.显示消息C.改变对话框标题D.显示问号图标[答案]:A4.Windows系统中的消息不包括().A.标准Windows消息B.控件消息C.命令消息D.视图消息[答案]:D5.()函数是从CView继承来的成员函数,用于刷新整个视图窗口屏幕.A.InvalidateB.MouseMoveC.PaintD.Brush[答案]:A6.菜单()消息,处理菜单状态的动态变化.A.UPDA TE_UIB.UPDATEMANDD.UPDA TE_COMMAND_UI[答案]:DmdUI类的常用成员函数()使菜单项前增加或清除√标志.A.SetCheckB.SetRadioC.SetTextD.Enable[答案]:A8.编辑菜单时为使字母下带下划线,应使用助记符().A.@B.#C.&D.$[答案]:CmdUI类的常用成员函数()使菜单项前增加或清除圆点标志.A.SetCheckB.SetRadioC.SetTextD.Enable[答案]:BmdUI类的常用成员函数()设置菜单项有效或无效.A.SetCheckB.SetRadioC.SetTextD.Enable[答案]:DmdUI类的常用成员函数()改变菜单项文本.A.SetCheckB.SetRadioC.SetTextD.Enable[答案]:C12.CDC的常用函数()可以绘制矩形.A.EllipseB.RectangleC.ArcD.Circle[答案]:B13.应用程序可以使用GDI创建3种类型的图形输出,不包括().A.矢量图形C.光栅图形D.文本[答案]:B14.CDC的常用函数()可以绘制内接矩形的圆.A.EllipseB.RectangleC.ArcD.Circle[答案]:A15.()函数用于在指定位置输出字符串.A.PrintB.TextOutC.ScanfD.Write[答案]:B16.在View的在普通成员函数体内用()获得设备环境.A.CDCB.CWindowDClientDClassDC[答案]:C17.创建画笔不需要给出()参数.A.风格B.宽度C.颜色D.长度[答案]:D18.实线画笔的风格应用()宏.A.PS_SOLIDB.PS_DASHC.PS_DOTD.PS_DASHDOT[答案]:A19.实心画刷只需要定义().A.填充样式B.填充颜色C.填充模式[答案]:B20.对话框()描述对话框的外观和控件布局,在资源描述文件中有对话框的定义.A.资源B.类C.模板D.数据[答案]:A21.调用对话框类的对象的方法,创建并显示模态对话框.A.Print()B.Create()C.DoModal()D.Show()[答案]:C22.CDialog中的()成员函数用于成员变量和控件之间的数据传递.A.ExchangeB.ToDoC.EXTD.UpdateData[答案]:D23.静态控件不包括().A.静态文本B.按钮C.静态图片D.组框[答案]:B24.()不是编辑框的消息.A.BN_CLICKEDB.EN_CHANGEC.EN_KILLFOCUSD.EN_SETFOCUS[答案]:A25.()设置进度条的当前位置.A.SetRangeB.SetStepC.SetPosD.StepIt[答案]:C26.()设置进度条范围.A.SetRangeB.SetStepC.SetPosD.StepIt[答案]:A27.()设置进度条填充步长.A.SetRangeB.SetStepC.SetPosD.StepIt[答案]:B28.()让进度条前进一个步长.A.SetRangeB.SetStepC.SetPosD.StepIt[答案]:D29.文档和视图的关系是().A.一对一B.一对多C.多对一D.多对多[答案]:B30.在视图类中获得文档类对象指针用函数().A.GetDocumentB.UpdateAllViewsC.OnUpdateD.SetModifiedFlag[答案]:A31.Win32应用程序入口函数是().A.MainB.EntranceC.WinMainD.Inlet[答案]:C32.创建窗口工作()不在WinMain中完成.A.设计窗口类B.注册窗口类C.创建窗口D.窗口过程[答案]:D33.项目文件的扩展名是().A.exeB.dspC.dswD.cpp[答案]:B34.利用ClassWizard不能().A.建立新类B.进行消息映射C.增加类的成员变量D.插入资源[答案]:D35.下列()不是MFC消息映射机制有关的宏.A.DECLARE_MESSAGE_MAPB.BEGIN_MESSAGE_MAPC.DECLARE_SERIALD.END_MESSAGE_MAP[答案]:C36.要使鼠标箭头在按钮上暂停时能显示工具栏按钮提示,必须设置工具栏的风格为().A.CBRS_TOOLTIPSB.CBRS_FL YBYC.CBRS_NOALIGND.WS_VISIBLE[答案]:B37.当滑块滑动时,滑块条控件将发送滚动消息来通知父窗口,水平滑动条发送()消息.A.WM_CHARB.WM_HSCROLLC.WM_VSCROLLD.WM_CHANGE[答案]:B38.要将模式对话框在屏幕上显示需要用到().A.CreateB.DoModalC.OnOKD.构造函数[答案]:B39.当滑块滑动时,滑块条控件将发送滚动消息来通知父窗口,垂直滑动条发送()消息.A.WM_CHARB.WM_HSCROLLC.WM_VSCROLLD.WM_CHANGE[答案]:C40.以下控件中,()没有Caption属性.A.按钮B.组框C.编辑框D.静态文本框[答案]:C41.关于工具栏,菜单和加速键的关系,正确的说法是().A.工具按钮与菜单必须一一对应B.工具栏与加速键一一对应C.工具按钮不必与菜单一一对应D.菜单与加速键一一对应[答案]:C42.使用GetDC()获取的设备上下文在退出时,必须调用()释放设备上下文.A.ReleaseDC()B.deleteC.DeleteDC()D.Detach()[答案]:A43.列表框CListBox类的成员函数()用来向列表框增加列表项.A.AddString()B.DeleteString()C.ResetContent()D.FindString()E.GetCount()[答案]:A44.列表框CListBox类的成员函数()用来清除列表项所有项目.A.AddString()B.DeleteString()C.ResetContent()D.FindString()E.GetCount()[答案]:C45.下面()不是MFC设备环境类CDC类的派生类.A.GDIB.CPaintDClientDCD.CWindowDC[答案]:A46.()是非模态对话框.A.查找对话框B.字体对话框C.段落对话框D.颜色对话框[答案]:A47.使用()通用对话框类可用打开文件.A.CFileDialogolorDialogC.CPrintDialogD.CFontDialog[答案]:A48.常见的菜单类型不包括().A.自动菜单B.主菜单C.弹出菜单D.快捷菜单[答案]:A49.下列()不是MFCCDC类中常用的函数.A.TextOutB.EllipseC.RectangleD.CreateRedText[答案]:D50.对话框的功能被封装在()类中.A.CWndB.CDialogC.CObjectmdTarget[答案]:B51.Windows标准控件的属性设置通常由三个选项卡构成,不包括()A.ColorB.GeneralC.StyleD.ExtendStyles[答案]:A52.菜单项助记符前用()引导.A.%B.&C.#D.$[答案]:B53.更新菜单状态的消息是().MANDB.UPDATEC.UPDATE_COMMAND_UID.INV ALIDATE[答案]:C54.能间接调用视图类的OnDraw函数的是()A.OnTimerB.LButtonDownC.SerializeD.Invalidate[答案]:D55.下列()不是MFC消息映射机制有关的宏.A.DECLARE_MESSAGE_MAPB.BEGIN_MESSAGE_MAPC.DECLARE_SERIALD.END_MESSAGE_MAP[答案]:C56.下面()不是GDI对象.A.CFontB.CPalettelientDCD.CBitmap[答案]:C57.列表框的类型不包括()A.SimpleB.DropdownC.DropListD.Scroll[答案]:D58.设置编辑框控件的文本内容,可使用函数()A.SetWindowTextB.SetSelC.ReplaceSelD.GetWindowText[答案]:A59.使用()函数获取的设备上下文在退出时必须调用ReleaseDC释放.A.GetWindowsDCB.GetDCC.GetDesktopDCD.GetClientDC[答案]:B60.类CButton不是下列()控件对应的类.A.命令按钮B.单选按钮C.复选框D.静态文本框[答案]:D61.列表框CListBox类的成员函数()用来返回列表框的列表项总数.A.AddString()B.DeleteString()C.ResetContent()D.FindString()E.GetCount()[答案]:F62.滑动条是由滑动块和刻度线构成,按指定增量移动,CSliderCtrl类的成员函数()代表设置滑动块位置.A.SetRange()B.SetPos()C.SetTic()D.SetPoint()E.SetTicFreq()[答案]:B63.滑动条是由滑动块和刻度线构成,按指定增量移动,CSliderCtrl类的成员函数()代表设置刻度线位置,一次只能设置一个刻度线,用于手动设置刻度线.A.SetRange()B.SetPos()C.SetTic()D.SetPoint()E.SetTicFreq()[答案]:C64.滑动条是由滑动块和刻度线构成,按指定增量移动,CSliderCtrl类的成员函数()代表设置刻度线的疏密程度,配合Autoticks属性使用,每隔一定单位自动显示一条刻度线.A.SetRange()B.SetPos()C.SetTic()D.SetPoint()E.SetTicFreq()[答案]:F二,判断题1.UpdateData(true)函数完成成员变量的值传递给控件的操作.[答案]:F2.基于对话框的应用程序,也有文档类和视图类.[答案]:F3.调用DestroyWindow函数完成非模态对话框的销毁工作.[答案]:T4.每个对话框资源都会关联一个对话框类,常派生于CDialog,通过该类对象间接操纵对话框. [答案]:T5.基于对话框的应用程序在运行时也有菜单栏.[答案]:F6.对话框的功能被封装在CDialog类中.[答案]:T7.使用CColorDialog通过对话框类可以显示颜色对话框.[答案]:T8.DDX为对话框数据交换用.[答案]:T9.DDV完成成员变量和控件之间的交换.[答案]:F10.OnOK函数中进行对话框的初始化工作.[答案]:F11.对话框只由对话框类组成.[答案]:F12.从对话框的工作方式看,对话框可分为模式对话框和非模式对话框.[答案]:T13.查找对话框是模式对话框.[答案]:F14.颜色对话框是非模式对话框.[答案]:F15.每一个单选按钮在对话框类中都可以映射一个int类型值变量.[答案]:F16.当编辑框中的文本已被改变,在新的文本显示之后发送EN_CHANGE通知消息.[答案]:T17.CButton类控件只有按键按钮一种类型.[答案]:F18.一组单选按钮在组中的序号从1开始.[答案]:F19.向列表框增加列表项只能使用CListBox类成员的AddString函数.[答案]:F20.一个旋转按钮控件与一个相伴的控件一起使用时,该控件的Tab键次序必须大于旋转按钮. [答案]:F21.进度条控件的操作封装在CProgressCtrl类.[答案]:T22.多个静态文本控件必须有不同的ID号.[答案]:F23.调用Create成员函数创建动态分割窗口.[答案]:T24.调用Create成员函数创建静态分割窗口.[答案]:F25.视图派生类的成员函数通过调用GetDocument函数得到当前文档对象的指针.[答案]:T26.用户可以通过项目工作区窗口的ResourceView视图来查看资源.[答案]:T27.利用MFC编程时,所有的消息与消息处理函数的添加都必须采用ClassWizard类向导来完成.[答案]:F28.窗口是Windows应用程序的基本操作单元,是应用程序与用户之间交互的接口环境,也是系统管理应用程序的基本单位.[答案]:T29.Windows应用程序的入口也是main函数.[答案]:F30.键盘鼠标消息都是命令消息.[答案]:F31.使用MFCAppWizard[exe]向导创建应用程序框架时,向导生成的文件名和类名是不可以更改的.[答案]:F32.消息映射是将消息处理函数与要处理的特定消息连接起来的一种机制.[答案]:T33.命令消息是由菜单项,工具栏按钮和快捷键等用户界面对象发出的WM_COMMAND消息.[答案]:T34.用快捷键F9既可设置断点,又可取消断点.[答案]:T35.调试程序时,会同时出现Variable窗口和Watch窗口.[答案]:T36.Windows是一个基于事件的消息驱动系统.[答案]:T37.MFC采用消息映射来处理消息.[答案]:T38.WM_RBUTTONDOWN是鼠标右键按下时产生的消息.[答案]:T39.给菜单项定义快捷键,只需在菜单项属性设置对话框的Caption文本框中说明即可. [答案]:F40.快捷菜单一般出现在鼠标箭头的位置.[答案]:T41.UPDATE_COMMAND是更新命令用户接口消息.[答案]:F42.工具栏停靠特性只能设置一次.[答案]:T43.状态栏的功能由CToolBar类实现.[答案]:F44.CMenu类,CToolBar类和CStatusBar类的根基类是相同的.[答案]:T45.菜单选择只可以通过鼠标操作来完成.[答案]:F46.状态栏可以通过资源编辑器来编辑.[答案]:F47.MFC应用程序框架为状态栏定义的静态数组indicators放在MainFrm.h文件中. [答案]:F48.在菜单设计时,&字符的作用是使其后的字符加下划线.[答案]:TlientDC代表整个窗口的设备环境.[答案]:F50.删除CPen对象可调用CPen对象的DeleteObject函数.[答案]:F51.DDB又称GDI位图,它依赖于具体设备,只能存在于内存中.[答案]:T52.创建阴影画刷函数是CreateHatchBrush.[答案]:T53.深绿色RGB值为(0,128,0).[答案]:T54.Windows引入GDI的主要目的是为了实现设备相关性.[答案]:F55.Windows用COLORREF类型的数据存放颜色.[答案]:T56.Windows是按图形方式输出字符的.[答案]:T57.TextOut是CDC类中常用的文本输出函数.[答案]:T58.创建画笔后必须调用CDC类的成员函数SelectObject将画笔选人当前设备环境. [答案]:T59.对话框创建后,发送WM_CREATE消息,在该消息处理代码中创建各控件.[答案]:T60.通过AppWizard建立的程序不能被立即执行.[答案]:F61.打开一个项目,只需打开对应的项目工作区文件.[答案]:T62.在同一项目中,VisualC++在内部用来标识资源的资源符号不能重复.[答案]:T63.在Windows环境下,资源与程序源代码紧密相关.[答案]:F64.用户可以通过选择Tools|Customize菜单命令设置集成开发环境的工具栏.[答案]:T65.项目工作区文件的扩展名为dwp.[答案]:F66.Ctrl+F5是编辑程序的快捷键.[答案]:F67.F7是运行程序的快捷键.[答案]:F三,填空题1.项目工作区文件的扩展名是###.[答案]:dsw2.修改公司,描述等信息需用###编辑器.[答案]:Version3.利用###可以快速创建各种风格的应用程序框架,并可自动生成程序通用的源代码.[答案]:应用程序向导4.启动VisualC++,进入VisualC++IDE,从###菜单上选择New菜单项,此时将弹出New对话框[答案]:应用程序向导5.利用###可以快速创建各种风格的应用程序框架,并可自动生成程序通用的源代码[答案]:File6.句柄是Windows使用的一种无重复整数,主要用来###.[答案]:标识应用程序中的一个对象7.一个单文档的MFC应用程序框架一般包括5个类:应用程序类,框架窗口类,###,文档类和文档模板类.[答案]:视图类8.用户点击菜单项后,会产生###消息.[答案]:WM_COMMAND9.改变菜单项文本是使用CCmdUI类的###成员函数.[答案]:SetText10.处理菜单命令消息首先会在###类中.[答案]:视图11.弹出快捷菜单使用的是CMenu类的###函数.[答案]:TrackPopupMenu12.在状态栏中添加文本使用的是CStatusBar类的###函数.[答案]:SetPaneText13.与DOS字符方式下的输出不同,Windows是按###方式输出的.[答案]:图形14.为了体系Windows的设备无关性,应用程序的输出面向一个称为###的虚拟逻辑设备. [答案]:设备环境15.可以利用CGdiObject类的成员函数###将GDI对象设置成指定的库存对象.[答案]:CreateStockObject16.对话框的主要功能是###和输出信息.[答案]:接收用户输入17.使用###函数可用创建非模式对话框.[答案]:Create18.每个控件最多只能关联Control和Value类型成员变量各###个.[答案]:119.一组单选按钮在对话框类中只能映射一个###类型值变量,对应单选按钮在组中的序号,序号从0开始.[答案]:int。
模式对话框和非模式对话框
模式对话框和⾮模式对话框下是在百度空间中再录的内容:在WIN32中,模式对话框的创建⼀般是使⽤DialogBox来进⾏创建的。
⽽⾮模式对话框则是利⽤CreateWindow来创建的。
在MFC或是WTL中,模式对话框⼀般是使⽤DoModal,⽽⾮模式对话框的创建则是使⽤Create。
模式对话框创建后,程序的其他窗⼝便不能进⾏操作,必须将该窗⼝关闭后,其他窗⼝才能进⾏操作。
⽽⾮模式对话框则⽆需这样,它不强制要求⽤户⽴即反应,⽽是与其他窗⼝同时接受⽤户操作。
⼆、消息响应的区别在消息响应⽅⾯,模式对话框和⾮模式对话框之间⼜有着很⼤的区别。
模式对话框⼯作的时候,它有内部的消息泵机制,控件之间的交互不⽤我们⼈为的去控制,系统会帮助我们去处理。
⾮模式对话框则像普通窗⼝⼀样,则由WinMain中书写的消息循环驱动。
但由于是对话框,它对⼀些消息有特殊的处理。
因此,在消息循环中,需要先对对话框提供截获消息的机会。
While (GetMessage(&msg, NULL, 0, 0)){if (hDlgModeless == 0 || !IsDialogMessage(hDlgModeless, &msg)){TranslateMessage(&msg);DispatchMessage( &msg);}}如果当前取得的消息是对话框的消息,IsDialogMessage 将它交由对话消息处理函数处理,并返回TRUE。
不需要再派发了。
注意:这个⽅法并不是很好⽤,因为当对话框过多的时候,处理起来就⽐较⿇烦了。
另⼀种处理的⽅法是利⽤⼦类化控件的⽅法,来处理控件间的交互。
三、销毁的区别模式对话框的销毁是使⽤EndDialog,⽽⾮模式对话框的销毁是使⽤DestroyWindow.。
所以我们在销毁对话框的时候,也要对其进⾏区别。
⾮模式对话框,⽤户关闭对话框时,对话框消息处理函数将收到WM_CLOSE消息,接到后调⽤DestroyWindow以销毁⾮模式对话框。
android8种对话框(Dialog)使用方法汇总
android8种对话框(Dialog)使用方法汇总Android中提供了多种对话框(Dialog)用于与用户进行交互。
下面将介绍Android中的8种常用对话框及其使用方法。
1. AlertDialog对话框:AlertDialog对话框是Android中最常用的对话框之一、它可以显示一个带有标题、消息和按钮的对话框。
使用AlertDialog.Builder类创建AlertDialog对象并设置相关属性,如标题、消息、按钮等。
然后调用show(方法显示对话框。
2. ProgressDialog对话框:ProgressDialog对话框用于显示一个进度条,通常用于表示长时间运行的任务的进度。
使用ProgressDialog类创建ProgressDialog对象,并使用setProgressStyle(方法设置进度条的样式,然后使用show(方法显示对话框。
可以通过调用setProgress(方法来更新进度条的进度。
3. DatePickerDialog日期选择对话框:DatePickerDialog对话框用于选择日期。
使用DatePickerDialog类创建DatePickerDialog对象,并使用setDate(方法设置初始日期。
然后使用show(方法显示对话框。
可以通过实现OnDateSetListener接口来监听用户选择的日期。
4. TimePickerDialog时间选择对话框:TimePickerDialog对话框用于选择时间。
使用TimePickerDialog类创建TimePickerDialog对象,并使用setTime(方法设置初始时间。
然后使用show(方法显示对话框。
可以通过实现OnTimeSetListener接口来监听用户选择的时间。
5. AlertDialog单选对话框:AlertDialog单选对话框用于让用户从多个选项中选择一个选项。
使用AlertDialog.Builder类创建AlertDialog对象,并使用setSingleChoiceItems(方法设置选项列表。
关于VC++中两种自定义消息的发送与接收的方法实现进行说明
在MFC中添加用户自定义消息首先弄清楚两点:(1)谁要发送这个消息(2)谁要接受这个消息。
用一个简单的例子来说明。
对象A向B(也可以就是A到A)发送消息。
1 发送消息首先在A的头文件中定义这个消息:#define WM_USERMESSAGE WM_USER+30所有自定义消息都是以WM_USER消息为基础加上一个任意的自然数来表示的。
A是向外发送消息的对象,因此在A的某个方法(函数)里就会调用用来发消息的函数B::SendMessage()/B::PostMessage(),因为是B接受消息,因此是如上的形式。
2 接受消息对象接受一个消息,应该有三部分:在头文件中有该消息的处理函数的原型;在实现文件中有接受消息映射的宏;以及该消息的处理函数的具体实现。
2.1 头文件中加上自定义消息的处理函数原型在DECLARE_MESSAGE_MAP()语句之前,一对AFX_MSG之间加上如下形式的函数原型:afx_msg LRESULT OnProcName( WPARAM wParam, LPARAM lParam );对Win32来说,wParam, lParam是传递消息最常用的手段。
2.2 在实现文件中加上接受消息映射的宏在cpp文件里,BEGIN_MESSAGE_MAP语句之后,在一对AFX_MSG_MAP之间,增加如下形式的代码:ON_MESSAGE(WM_USERMESSAGE, OnProcName)上面是不用分号结尾的。
2.3 在实现文件中给出消息处理函数的具体实现。
发信人: Amia (小羊·橘子·和中南海有缘), 信区: VisualC标题: MFC中自由使用自定义消息发信站: 哈工大紫丁香(2003年11月26日07:45:34 星期三), 站内信件消息映射、循环机制是Windows程序运行的基本方式。
V C++MFC 中有许多现成的消息句柄,可当我们需要完成其它的任务,需要自定义消息,就遇到了一些困难。
window对象
window对象
1.3控 制 窗 口
• 1.3.5访问窗口历史记录
单击浏览器上的“前进”或“后退”按钮时,浏览器可以转到相应的历史记录页 面。JavaScript提供了用于访问浏览器历史记录的history对象,此对象是一个 只读的URL字符串数组,包含了用户最近访问过的URL记录。其语法格式如 下: <a href="javascript:window.history.forward();">forward</a> <a href="javascript:window.history.back();">back</a> 也可以使用history对象的go方法指定要访问的历史记录。若参数为正数,则 向前访问;若参数为负数,则向后访问。例如: <a href="JavaScript:window.history.go(-2);">back two times </a> <a href="JavaScript:window.history.go(3);">forward three times </a> 使用history对象的length属性能够获得history数组的长度,从而可以很容易地 转移到历史记录列表的末尾。例如: <a href="JavaScript:window.history.go(window.history.length-1);">last item </a>
在使用窗口特征参数时,更多的是使用字符串变量,而不是字符串 常量。在某一时刻,这些变量有且仅有一个特定的值,并且变量间要 用逗号隔开。例如: var windowoptions="directories=no,location=no,width=300,height=300";
MFC中CWnd类及其派生类对话框、消息处理、窗口操作
MFC中CWnd类及其派生类对话框、消息处理、窗口操作CWnd类我们在屏幕上看到的所有对象都和窗口有关,它们或者派生于CWnd,属继承关系,如对话框、工具栏、状态栏、子控件;或者被CWnd合成,属服务员与服务对象关系,如图标、菜单、显示设备。
CWnd类封装的窗口操作主要包含窗口的创建和销毁、操作窗口风格、操作窗口状态、窗口子类化、获取指定窗口等。
当然,CWnd还实现了其他功能:1、绘制窗口GetDC()//取得客户区显示设备上下文GetWindowsDC()//取得整个窗口的显示设备上下文ReleaseDC()BeginPaint()EndPaint()PrintClient()RedrawWindow()//重绘客户区的某区域2、操作窗口子控件GetDlgItem():取得(临时的)控件对象指针SetDlgItemText()和GetDlgItemText():设置、取得控件标题SubclassDlgItem():将控件句柄与相应类相关联DlgDirList()和DlgDirListComboBox():以文件列表或目录列表填充(组合框)列表框CheckDlgButton()和CheckRadioButton():设置复选框(单选按钮)状态。
GetNextDlgTabItem():取得下一个WS_TABSTOP风格控件3、窗口定时器SetTimer():设置定时器KillTimer():销毁定时器4、窗口消息的相关函数GetCurrentMessage():取得当前被处理的消息PreTranslateMessage():可重载的虚函数。
被UI线程的消息循环调用,可以过滤窗口收到的消息,过滤出的消息得以分发SendMessage():向本窗口发送消息。
不通过消息循环,直接调用窗口函数处理消息。
窗口函数执行完毕,该函数才返回PostMessage():向本窗口寄送消息。
将消息放入消息队列,立即返回。
如何在VC++中两个对话框相互传递信息
如何在VC++中两个对话框相互传递信息? 在主对话框Main_OnCommand 中,利用DialogBoxParam 弹出一个新的对话框,在函数最后一个参数里传一个long 型的参数1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 { HINSTANCE hInstance = (HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE); //获得实例 //TCHAR *buf = "abc"; login_data ld; ername = "geekgu"; ld.password = "7634336"; //DialogBoxParam 最后一个参数传值 ret 得到返回值 int ret = DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_LOGIN), NULL, Login_Proc,(LPARAM)&ld); if (ret == 0) { MessageBox(hwnd,TEXT("用户点击了取消"),TEXT(""),MB_OK); }}在新建对话框里初始化代码里得到参数1 2 3 4 5 6 7 8 9 { login_data *buf = (login_data *)lParam; //MessageBox(hwnd,buf->username,"",MB_OK); //SetDlgItemText(hwnd,IDC_EDITUSERNAME,buf->username); //SetDlgItemText(hwnd,IDC_EDITPASSWORD,buf->password); SetWindowLong(hwnd,GWL_USERDATA,(LPARAM)buf); //将数据跟窗口关联起来(存起来),比全局变量更好的方法。
MFC常用控件
MFC常用控件
2021/7/1
1
对话框的组成
在VC++中,对话框主要是由对话框资源和对话框类组 成:
1. 对话框资源
对话框资源中描述的是对话框的大小、风格等特性, 以及对话框中控件的类型和它们的位置。定义对话框 资源最简单、最有效的方法就是使用Visual C++中的 资源编辑器。
2. 对话框类
10数据交换mfc类库使用数据交换ddx机制在对话框的控件和对话框类的数据成员之间交换数据updatedatatrue将数据从对话框的控制传递到对话框对象的数据成员缺省的调用在对话框的onokupdatedatafalse将数据传送到对话框中缺省的调用发生在对话框的oninitdialog创建一个有模式对用户可以在任何时候调用updatedata进行数据交换该函数参数缺省值为true
静态文本控件(Static Text Control); 静态图片(Picture Control);属性有:Center,image,Real
size,Type,Image和Color
2021/7/1
11
按钮
常见的按钮有如下几种类型:命令按钮、单选按钮和复选 按钮。
➢ 命令按钮(button):命令按钮适用于消息的发送,通常用于执行某个命 令。
2021/7/1
21
VC++考试试题
VC++考试试题VC++复习题选择题1. 下列关键字中哪一个不是用于类的访问控制的(B)A.public B. friend C. private D. protected2. 以下四个特性中哪一个不属于面向对象的三大特性(C)A.封装性 B. 多态性 C. 抽象性 D. 继承性3.管理MFC应用程序(A)A. CWinAPPB. CmainFrameC. CDoucumentD. CView4. 关于构造函数,下列说法不正确的是(A)A. 一个类中有且仅有一个构造函数B. 构造函数在说明类变量时被自动执行C. 构造函数没有返回值类型D. 类中的构造函数的函数名与该类的类名必须同名5.关于析构函数,下列说法不正确的是(C)A. 类中有且仅有一个析构函数B. 析构函数可以没有形参C. 析构函数没有返回值类型D.析构函数在对象消失时被自动执行6. 下列类中不属于MFC框架基本类的时(D)A. CWinAppB. CFrameWndC. CViewD. CObject7. 下列选项中哪一个不是命令消息的产生途径(C)A. 选择菜单B. 单击工具栏C. 点击对话框的按钮D. 程序产生命令8. 下列关于构造函数的描述中,错误的是(D)A. 构造函数可以设置默认参数B. 构造函数在定义类对象时自动执行C. 默认构造函数可以没有D. 构造函数不可以重载9. 当在使用类模板时,类模板本身被实例化成了一个具体的(D)A. 对象B. 实例C. 模板类D. 类10. 以下四个关于类的访问控制的描述哪一个是错误的(D)A. 子类不能访问其父类的私有数据成员和成员函数B. 子类的对象不能访问其父类的保护数据成员或者成员函数C. 类的对象不能访问类保护数据成员或者成员函数D. 类的成员函数不能访问类中的私有数据11.下面有关重载函数中说法正确的(C)A. 重载函数必须有不同的返回值类型B. 重载函数形参个数必须不同C. 重载函数必须有不同的形参列表D. 重载函数名可以不同12.一个视图对象能连接()文档对象,一个文档对象能连接(D)视图对象。
VC++6.0入门【第六章 创建和使用对话框】
第6章创建和使用对话框对话框是一种用户界面,几乎每一个Windows程序都使用对话框与用户进行交互。
对话框可能是一个简单的只含有OK按钮的消息框,也可以是一个复杂的数据输入表单。
对话框上有一些方便用户输入的控件,对话框依靠这些控件与用户进行交互,其实质是一个接收消息的窗口。
在本章节我们主要讲述模式对话框和无模式对话框的原理和使用方法,下一章将详细介绍各种控件的使用。
你将学习创建一个对话框,使用对话框模板编辑一个对话框资源,并在程序中调用对话框的方法。
6.1 对话框的基本原理6.1.1 对话框的工作原理在创建一个对话框之前,我们先来了解一下对话框是如何工作的,对话框的数据来自三方面:对话框资源、对话框对象、和一个文档对象:1.对话框资源对话框资源是一个用户输入或取得数据的图形界面。
这个图形界面是使用Develop Studio的对话框编辑器在对话框模板上创建的,程序员可以在对话框模板上增加并编辑控件,生成对话框资源。
当应用程序运行时,就可以得到一个对话框。
2.对话框对象MFC使用CDialog类来描述对话框,它是CWnd类的派生类。
在CWnd类的基础上增加了数据交换的功能。
当创建一个新的对话框资源后,使用ClassWizard可以创建一个对话框类的派生类。
对话框对象实现了对话框和应用程序之间的通信。
在应用程序中定义一个对话框对象后,在对话框显示前,可以通过访问对话框对象的成员变量为一个对话框的控件初始化,在对话框关闭后,可以通过访问对话框对象的成员变量获得用户的输入数据。
3.文档对象MFC使用文档对象描述应用程序处理的数据,用户输入的数据要进一步的处理,通常要先存贮到文档对象中。
例如:一个学生记录处理的应用程序,用户通过一个对话框输入学生记录并贮存到一个文件中。
应用程序的处理顺序是:用户在对话框中输入信息,通过对话框对象得到输入信息,将输入信息整理到文档对象中,使用序列化函数将文档对象存贮到一个文件中,所以文档对象扮演了一个很重要的数据交换的角色。
showModalDialog用法
showModalDialog用法一、showModalDialog和showModelessDialog有什么不同?showModalDialog:被打开后就会始终保持输入焦点。
除非对话框被关闭,否则用户无法切换到主窗口。
类似alert的运行效果。
showModelessDialog:被打开后,用户可以随机切换输入焦点。
对主窗口没有任何影响(最多是被挡住一下而以。
)二、怎样才让在showModalDialog和showModelessDialog的超连接不弹出新窗口?在被打开的网页里加上<base target="_self">就可以了。
这句话一般是放在<html>和<body>之间的。
三、怎样才刷新showModalDialog和showModelessDialog里的内容?在showModalDialog和showModelessDialog里是不能按F5刷新的,又不能弹出菜单。
这个只能依靠javascript了,以下是相关代码:<body onkeydown="if (event.keyCode==116){reload.click()}"><a id="reload" href="filename.htm" style="display:none">reload...</a>将filename.htm替换成网页的名字然后将它放到你打开的网页里,按F5就可以刷新了,注意,这个要配合<base target="_self">使用,不然你按下F5会弹出新窗口的。
四、如何用javascript关掉showModalDialog(或showModelessDialog)打开的窗口。
<input type="button" value="关闭" onclick="window.close()">也要配合<base target="_self">,不然会打开一个新的IE窗口,然后再关掉的。
Dialog和alert和confirm对象用法
2、在JSP页面里加上国际化:
varDIALOG_OK="<s:text name='dialog.ok'/>";
varDIALOG_CANCLE="<s:text name='dialog.cancle'/>";
options:可选,与Dialog的jsonData参数基本一致object
例子:
Dialog.alert("保存成功!");
Dialog.alert("保存成功!", func.confirm对象用法:
Dialog.alert(message[, yesCallback, noCallback])
});
Dialog.confirm("我是消息",
function(){
//点击确定时的操作
},
function(){
//点击取消时的操作
}
);
样式:
对话框,alert,confirm用法
一、依赖文件:
Jquery-1.4.4.mis.js
Ps:不依赖jquery-ui
二、用法:
1、引入JS跟CSS:(分别在WebContent/js目录和WebContent/css目录下)
<link type="text/css" rel="stylesheet" href="../css/Dialog-1.1.css"/>
flutter showgeneraldialog用法
flutter showgeneraldialog用法Flutter是一款由谷歌开发的开源移动端开发框架,它提供了许多强大的UI组件和功能,使得开发者可以更加高效地开发出美观且功能丰富的移动应用。
在Flutter中,ShowGeneralDialog是一个常用的Dialog组件,用于展示通用类型的对话框。
本篇文章将详细介绍ShowGeneralDialog的用法。
ShowGeneralDialog是Flutter中用于显示通用类型对话框的组件,它可以用于展示一些需要用户确认或反馈的信息,例如确认操作、输入提示等。
通过使用ShowGeneralDialog,开发者可以方便地创建出具有良好用户体验的对话框。
在使用ShowGeneralDialog之前,需要先确保你的Flutter项目中已经引入了Flutter的Dialog模块。
下面是一个简单的ShowGeneralDialog用法示例:1. 引入必要的库和插件在文件顶部添加以下代码:```dartimport 'package:flutter/material.dart';```2. 定义对话框数据结构创建一个类来表示对话框中的数据,例如:```dartclass GeneralDialogData {String message;bool result;}```3. 创建对话框并显示在需要显示对话框的地方,使用ShowGeneralDialog组件并传入相应的数据:```dart// 创建对话框数据对象GeneralDialogData dialogData = GeneralDialogData(message: "确定要继续吗?",result: false, // 初始结果为false,表示不确定);// 显示对话框showDialog(context: context, // 上下文对象builder: (BuildContext context) { // 构建器对象,用于定制对话框内容return GeneralDialog( // 使用自定义的对话框组件GeneralDialogdata: dialogData, // 传递对话框数据对象给对话框组件 );},) { // 在回调中返回一个可空的BuildContext对象,用于关闭对话框或获取用户输入的反馈信息// 当用户点击确定按钮时,将结果设置为true,表示确定操作已完成if (BuildResult(context).isUserGesture) {dialogData.result = true; // 设置结果为trueNavigator.of(context).pop(); // 关闭对话框并返回结果给调用者}};```三、ShowGeneralDialog常见问题及解决方案1. 如何获取用户输入的反馈信息?在回调中返回一个可空的BuildContext对象即可获取用户输入的反馈信息。
showModalDialog参数详解
showModalDialog参数详解基本介绍:window.showModalDialog()方法用来创建一个显示HTML内容的模态对话框。
window.showModelessDialog()方法用来创建一个显示HTML内容的非模态对话框。
使用方法:vReturnV alue = window.showModalDialog(sURL [, vArguments] [,sFeatures]) vReturnV alue = window.showModelessDialog(sURL [, vArguments] [,sFeatures]) 参数说明:sURL-- 必选参数,类型:字符串。
用来指定对话框要显示的文档的URL。
vArguments-- 可选参数,类型:变体。
用来向对话框传递参数。
传递的参数类型不限,包括数组等。
对话框通过window.dialogArguments来取得传递进来的参数。
sFeatures-- 可选参数,类型:字符串。
用来描述对话框的外观等信息,可以使用以下的一个或几个,用分号“;”隔开。
1.dialogHeight :对话框高度,不小于100px,IE4中dialogHeight 和dialogWidth 默认的单位是em,而IE5中是px,为方便其见,在定义modal方式的对话框时,用px做单位。
2.dialogWidth: 对话框宽度。
3.dialogLeft: 离屏幕左的距离。
4.dialogTop: 离屏幕上的距离。
5.center: {yes | no | 1 | 0 }:窗口是否居中,默认yes,但仍可以指定高度和宽度。
6.help: {yes | no | 1 | 0 }:是否显示帮助按钮,默认yes。
7.resizable: {yes | no | 1 | 0 } [IE5+]:是否可被改变大小。
默认no。
8.status: {yes | no | 1 | 0 } [IE5+]:是否显示状态栏。
elementui 事件参数
elementui 事件参数ElementUI 事件参数详解ElementUI是一套基于Vue.js的组件库,提供了丰富的UI组件和常用的功能,方便了开发者快速搭建界面。
在使用ElementUI时,我们经常会接触到各种事件,而这些事件会传递一些参数,用于响应和处理特定的操作。
本文将详细介绍ElementUI常用组件的事件参数,帮助开发者更好地理解和应用这些参数。
一、Button按钮组件事件参数1. click:点击按钮时触发的事件,参数为事件对象event。
2. dblclick:双击按钮时触发的事件,参数为事件对象event。
3. contextmenu:右键点击按钮时触发的事件,参数为事件对象event。
二、Input输入框组件事件参数1. input:输入框内容发生变化时触发的事件,参数为当前输入框的值value。
2. blur:输入框失去焦点时触发的事件,参数为事件对象event。
3. focus:输入框获得焦点时触发的事件,参数为事件对象event。
4. clear:点击输入框清空按钮时触发的事件,参数为事件对象event。
三、Select选择器组件事件参数1. change:选择器值发生变化时触发的事件,参数为当前选择的值value。
2. visible-change:下拉框出现或隐藏时触发的事件,参数为下拉框的显示状态visible。
3. remove-tag:点击移除标签时触发的事件,参数为被移除的标签。
四、Table表格组件事件参数1. select:选中表格行时触发的事件,参数为选中的行数据。
2. select-all:全选表格行时触发的事件,参数为所有选中的行数据。
3. selection-change:表格行选中状态发生变化时触发的事件,参数为当前选中的行数据。
4. cell-mouse-enter:鼠标移入单元格时触发的事件,参数为单元格的行索引和列索引。
5. cell-mouse-leave:鼠标移出单元格时触发的事件,参数为单元格的行索引和列索引。
HTML静态网页--JavaScript-DOW操作
HTML静态⽹页--JavaScript-DOW操作1、DOM的基本概念DOM是⽂档对象模型,这种模型为树模型;⽂档是指标签⽂档;对象是指⽂档中每个元素;模型是指抽象化的东西。
2、Windows对象操作⼀、属性和⽅法:属性(值或者⼦对象):opener:打开当前窗⼝的源窗⼝,如果当前窗⼝是⾸次启动浏览器打开的,则opener是null。
dialogArgument:对话框返回值。
⼦对象:history,location,document,status,menubar,toolbar等。
⽅法(函数):事件(事先设置好的程序,被触发)。
⼆、Window.open("第⼀部分","第⼆部分","第三部分","第四部分")Window.open的特征参数:第⼀部分:写页⾯地址。
第⼆部分:_blank 打开的⽅式,在新窗⼝还是⾃⾝的窗⼝。
第三部分:控制打开的窗⼝格式,可以写多个,⽤空格隔开如下:toolbar=no新打开的窗⼝⽆⼯具条;menubar=no⽆菜单栏 status=no⽆状态栏;width=100 height=100 宽度⾼度;left=100 打开的窗⼝距离左边多少距离;resizable=no窗⼝⼤⼩不可调;scrollbars=yes 出现滚动条;location=yes 有地址栏;Window.open也有返回值,它的返回值是:新打开的窗⼝对象。
例如:最简单的打开窗⼝:window.open("Untitled-6.html");打开⼀个窗⼝并保存在变量中:var w= window.open();可以将打开的多个窗⼝保存在数组w⾥:function openW(){w[i++]=window.open();}三、window.close():关闭当前窗⼝;w.close():关闭保存在变量w中的那个窗⼝;关闭多个⼦窗⼝:先将打开的窗⼝存⼊数组内,利⽤循环将其挨个关闭;关闭打开当前窗⼝的源窗⼝: window.opener.close();四、间隔与延迟间隔执⾏⼀段代码(函数):window.setInterval("要执⾏的代码",间隔的毫秒数)清除间隔执⾏:window.clearInterval(间隔的id); 循环⼀次之后⽤来清除隔执⾏的代码延迟⼀段时间执⾏某⼀段代码(函数):window.setTimeout("要执⾏的代码",延迟的毫秒数)清除延迟:window.clearTimeout(延迟的id);清除setTimeout五、调整页⾯window.navigate("url") 跳转⾄⽬标页⾯,在⾕歌浏览器下有bug;window.moveTo(x,y) 移动页⾯⾄某⼀位置,位置由x和y决定;window.resizeTo(宽,⾼) 调整页⾯的宽度和⾼度;window.scrollTo(x,y)滚动页⾯⾄哪⾥,y代表纵向滚动。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、创建模态和非模态对话框
首先,我们举个例子来快速了解一下什么是模态与非模态。在caller.htm中,我们输入以下代码:
· SOrnaments:用这个参数指定新窗口的外观。可选择的窗口属性有很多种,当有多种控制需求时,将相关内容用一个字符串连接起来,其间用分号隔开。以下是可选择的属性种类:
o dialogHeight: sHeight
o dialogLeft: sXpos
o dialogTop: sYpos
o di yes | no | 1 | 0 | on | off )
o dialogHide: ( yes | no | 1 | 0 | on | off )
o edge: ( sunken | raised )
o help: ( yes | no | 1 | 0 | on | off )
edge的可取值为sunken(凹陷)和raised(凸起),status、help、resizeable和scroll的可取值都是yes、no、1、0、on和off,其含义一目了然。
下面的代码将去除上下文关联提示图标、不显示状态栏、窗口边缘风格为凹陷:
showModelessDialog("callee.htm","","status:0;help:0;edge:sunken");
(二)传递数组引用类型数据
第一种值类型数据的传递中,在callee.htm页面中只能读取caller.htm页面的传递数据。当需要对caller.htm页面的传递内容进行修改时,就需使用到数组引用类型的传递方式。
首先,在caller.htm页面中输入以下代码:
<INPUT TYPE="button" value="创建模态对话框" onclick="fnOpenModal()">
下面的代码将打开一个高200px、宽800px的对话框:
window.showModalDialog(’callee.htm’,’’,’dialogHeight:200px;dialogWidth:800px’);
我们注意到,打开的新窗口会在桌面中处于居中的位置,这也正是居中属性(center)的默认值。居中属性(center)的可取值包括yes、no、1、0、on和off,含义一目了然。执行以下代码,看看关闭居中属性后新窗口的位置:
}
// -->
</script>
然后在callee.htm页面中输入以下代码:
<SCRIPT LANGUAGE="javascript">
<!--
a = dialogArguments;
alert(a);
a[0] = "fourth";
// -->
(一)传递值类型数据
在caller.htm页面中输入以下代码:
<INPUT TYPE="button" value="创建模态对话框" onclick="fnOpenModal()">
<br><br>
<INPUT TYPE="button" value="创建非模态对话框" onclick="fnOpenModeless()">
二、控制对话框大小和位置
控制对话框的大小和位置涉及到5个方面:高度(dialogHeight)、宽度(dialogWidth)、相对于桌面左上角的x坐标(dialogLeft)、y坐标(dialogTop)以及是否让对话框窗口居中(center)。由于不同版本的Internet Explorer浏览器处理的默认度量单位并非一致,所以我们在指定高度、宽度等大小时,最好是同时设置好单位。单位种类包括很多,比如cm、mm、in、pt、pc、px。请注意:最小的高度值是100px。
</SCRIPT>
最后,在浏览器中打开caller.htm,点击任意一个按钮,我们将首先看到如下的对话框:
接着关闭这个对话框以及新打开的窗口,再次点击一个按钮,又出现一个对话框:
从运行结果我们看到,在caller.htm页面中通过对数组a的地址引用,就可以实现在callee.htm中修改数组a的内容。
function fnOpenModal(){
window.showModalDialog("callee.htm")
}
function fnOpenModeless(){
window.showModelessDialog("callee.htm")
}
</script>
a[1]="second";
a[2]="third";
function fnOpenModal(){
window.showModalDialog("callee.htm",a)
}
function fnOpenModeless(){
window.showModelessDialog("callee.htm",a)
window.showModelessDialog("callee.htm","打开了一个新非模态窗口")
}
// -->
</script>
在callee.htm页面中输入以下代码:
<SCRIPT LANGUAGE="javascript">
<!--
alert(dialogArguments);
<INPUT TYPE="button" value="创建模态对话框" onclick="fnOpenModal()">
<br><br>
<INPUT TYPE="button" value="创建非模态对话框" onclick="fnOpenModeless()">
<script language="javascript">
window.showModalDialog(’callee.htm’,’’,’dialogHeight:200px;dialogWidth:800px;dialogLeft:300;
dialogTop:500’)
注意,即使指定了居中属性,但如果同时设置了dialogLeft和dialogTop属性值,那么窗口位置将遵从后者。试一试执行下面的代码:
<script language="javascript">
<!--
function fnOpenModal(){
window.showModalDialog("callee.htm","打开了一个新模态窗口")
}
function fnOpenModeless(){
我们知道,对话框一般分为两种类型:模态类型(modal)与非模态类型(modeless)。所谓模态对话框,就是指除非采取有效的关闭手段,用户的鼠标焦点或者输入光标将一直停留在其上的对话框。非模态对话框则不会强制此种特性,用户可以在当前对话框以及其他窗口间进行切换。本文介绍如何使用javascript语言来创建这两种类型的对话框、控制其大小和位置、改变其外观以及在对话框间的数据传递。
o resizable: ( yes | no | 1 | 0 | on | off )
o scroll: ( yes | no | 1 | 0 | on | off )
o status: ( yes | no | 1 | 0 | on | off )
除了以上属性外,我们还可以加入更加丰富的CSS控制。 以下我们来详细解释如何应用这些属性。
window.showModalDialog(’callee.htm’,’’,’dialogHeight:200px;dialogWidth:800px;center:no’);
我们看到,新窗口紧挨者桌面的左上角打开。当然,我们可以使用dialogLeft和dialogTop 属性来精确定义新窗口的打开位置。下面的代码将在相对于桌面左上角的x位置300px和y位置500px处打开新窗口:
接下来,我们看看创建模态对话框与非模态对话框的相关语法:
创建模态对话框:
vReturnvalue = window.showModalDialog(sURL [, vFreeArgument] [, sOrnaments]);
创建非模态对话框:
vReturnvalue = window.showModelessDialog(sURL [, vFreeArgument] [, sOrnaments]);
从上面的语法我们得知:除了名字有所区别外,参数种类与含义都相同。以下是各参数的含义:
· VReturnvalue:对于showModalDialog(),它表示被打开的对话框窗口设置的returnvalue属性值。对于showModelessDialog(),它表示新窗口对象。
· VFreeArgument:这个参数可用于传递某种类型的数据到打开的对话框,数据可以是一个数值、字符串、数组或者一个对象类型。在新窗口中引用这个数值时,可通过新创建window对象的dialogArguments 属性。