菜单与对话框
- 格式:doc
- 大小:18.82 KB
- 文档页数:4
专业课程实验报告课程名称:windows程序设计开课学期: 2015至2016 学年第1学期专业:计算机科学与技术年级班级:2013级学生姓名:刘敏学号:222013*********实验教师:刘红俊计算机与信息科学学院软件学院wcex.lpszMenuName = MAKEINTRESOURCE(IDC_WIN32PROJECT2);2.对话框资源及其应用:1)模式对话框:①定义对话框资源:资源文件中如此定义对话框资源:对话框名 DIALOGEX x,y,weight,hightSTYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION ""FONT 9, ""BEGIN对话框的控件定义END②调用函数DiaLogBox显示对话框;③构造对话框消息处理函数;④关闭对话框。
2)非模式对话框:①定义非模式对话框:STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION |WS_SYSMENU|WS_VISIBLE②创建对话框函数:HWND CreateDialog{hInst, MAKEINTRESOURCE(IDD_SHOWBOX),hWnd,(DLGPROC)DlgProc}③消息循环:while (GetMessage(&msg, NULL, 0, 0)){if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)){TranslateMessage(&msg);DispatchMessage(&msg);}}④关闭对话框:DestroyWindow(hDlg);3)程序加载图标:IDI_WIN32PROJECT2 ICON "Win32Project2.ico"IDI_SMALL ICON "small.ico"(三)程序代码:Win32Project2.cpp// Win32Project2.cpp : 定义应用程序的入口点。
三种菜单编程实现1.新建插件工程mon。
2.添加依赖插件3.新建包mon.handler。
4.新建类NewFolderHandler,并继承AbstractHandler5.在插件根节点新建plugin.xml文件和icons文件夹。
6.扩展mands,并添加如下扩展信息:7.扩展org.eclipse.ui.handlers,添加信息如下:1.查找要扩展的视图ID,经过系统查询,视图ID为com.teamcenter.rac.ui.views.DetailsView。
2.根据前面所讲的视图菜单扩展规则,在扩展点添加视图菜单代码如下:3.通过Eclipse启动Teamcenter客户端,进入系统,则可以看到所添加的视图菜单:1.根据前面所讲的上下文菜单扩展规则,在扩展点添加上下文菜单代码2. 重启Teamcenter系统,点击右键菜单,可以出现我们的上下文菜单添加My New Folder到File主菜单1.根据前面所讲的主菜单扩展规则,在扩展点添加主菜单代码2.启动Teamcenter系统并进入,就可以看到我们客户化的菜单项1.控制菜单出现在固定的透视图,代码如下所示:2.该方式控制My New Folder在My Teamcenter透视图中,如要添加到多个应用或者透视图中通过activeWhen可以控制菜单的启用与禁用1.在现有代码工程中建立自己的主菜单,并添加My New Folder菜单项,代码如下:新建mands.newmyfolder包。
2.新建NewFolderCustomAction类,该类继承AbstractAIFAction类并对run方法进行重写,代码如下:3.新建NewFolderCustomCommand类并继承AbstractAIFCommand类4.新建NewFolderCustomDialog类,并继承AbstractAIFDialog类,并实现InterfaceAIFOperationListener方法。
QT(4).窗⼝、对话框、状态栏、菜单栏1、坐标体系以左上⾓为原点,X向右增加,Y向下增加。
对于嵌套窗⼝,其坐标是相对于⽗窗⼝来说的。
2、QWidget所有窗⼝及窗⼝控件都是从QWidget直接或间接派⽣出来的。
3、QMainWindowQMainWindow是⼀个为⽤户提供主窗⼝程序的类,包含⼀个菜单栏(menubar)、多个⼯具栏(tool bars)、多个锚接部件(dock widgets)、⼀个状态栏(status bar)及⼀个中⼼部件(central widget),是许多应⽤程序的基础,如⽂本编辑器,图⽚编辑器等。
1、菜单栏⼀个主窗⼝最多只有⼀个菜单栏。
位于主窗⼝顶部、主窗⼝标题栏下⾯。
创建菜单栏,通过QMainWindow类的menubar()函数获取主窗⼝菜单栏指针QMenuBar *menuBar() const创建菜单,调⽤QMenu的成员函数addMenu来添加菜单QAction*addMenu(QMenu * menu)QMenu*addMenu(const QString & title)QMenu*addMenu(const QIcon & icon, const QString & title)创建菜单项,调⽤QMenu的成员函数addAction来添加菜单项QAction*activeAction() constQAction*addAction(const QString & text)QAction*addAction(const QIcon & icon, const QString & text)QAction*addAction(const QString & text, const QObject * receiver,const char * member, const QKeySequence & shortcut = 0)QAction*addAction(const QIcon & icon, const QString & text,const QObject * receiver, const char * member,const QKeySequence & shortcut = 0)Q t 并没有专门的菜单项类,只是使⽤⼀个QAction类,抽象出公共的动作。
为对话框增加菜单1.为对话框创建一个菜单资源IDR_MENU1。
2. 在对话框的属性对话框中在Menu属性中选择刚创建的菜单资源IDR_MENU1。
此时保存编译后,在对话框中就可看到菜单。
3.点击快捷键Ctrl + W,在“Add a Class”对话框中选择已存在的对话框类“Select an existing class”,打开“Select Class”对话框。
4. 选择对话框类,本例中的类名为CDlgDlg,选中进入下一步。
5. 进入MFC ClassWizard对话框,在消息映射属性页中,为菜单增加消息处理函数,本例中为“打开文件”菜单增加COMMAND处理函数,增加的函数名为OnFileOpen。
6.编辑OnFileOpen函数代码,实现自己定义的功能,本例只是简单显示“关于”对话框。
void CDlgDlg::OnFileOpen(){CAboutDlg dlgAbout;dlgAbout.DoModal();}编译运行后,点击文件菜单的子菜单“打开文件”,将弹出“关于”对话框,如下图所示。
接下来为对话框添加右键菜单。
1.为对话框增加事件2.在打开的对话框中,在左侧的消息/事件列表中选择WM_CONTEXTMENU,添加OnContextMenu函数。
3. 编辑代码如下。
void CDlgDlg::OnContextMenu(CWnd* pWnd, CPoint point){CMenu MyMenu;MyMenu.LoadMenu(IDR_MENU1);CMenu* pMyMenu=MyMenu.GetSubMenu(0);pMyMenu->TrackPopupMenu(TPM_LEFTBUTTON|TPM_LEFTALIGN,point.x ,point.y,this);MyMenu.DestroyMenu();}显示效果:很简单,但很实用。
通用对话框-数据文件一、教学目标1、通用对话框常用属性2、通用对话框应用举例3、文件相关概念4、文件操作与应用二、教学过程1、通用对话框属性A)DialogTitle属性:设置对话框的标题Private Sub Command1_Click()CommonDialog1.DialogTitle = "对话框标题"CommonDialog1.ShowOpenEnd SubB)FileName属性:设置或返回要打开或保存的文件的路径及文件名返回文件的路径及文件名CommonDialog1.FileName = "C:\WINDOWS\Web\Wallpaper\xx.jpg" '引号内为路径,或文件名CommonDialog1.ShowOpenC)FileTitle属性:设置或返回要打开或保存的文件的文件名返回文件名D)Filter属性:指定对话框中显示的文件类型(过滤文件)CommonDialog1.Filter = "所有文件(*.*)|*.*|文本文件(*.txt)|*.txt|mp3文件(*.mp3)|*.mp3|"CommonDialog1.ShowOpenE)FilterIndex属性:指定默认的文件类型,值为一个整数CommonDialog1.Filter = "所有文件(*.*)|*.*|文本文件(*.txt)|*.txt|mp3文件(*.mp3)|*.mp3|"CommonDialog1.FilterIndex = 3 '打开的就是第三种类型的文件CommonDialog1.ShowOpenF)InitDir属性:用来指定对话框中显示的起始目录。
若没有设置,刚返回当前目录。
CommonDialog1.InitDir = "d:"CommonDialog1.ShowOpen2、键盘事件A)KeyPressPrivate Sub Text1_KeyPress(KeyAscii As Integer)Print "你按下了某个键"Print KeyAsciiMsgBox "你按下的键是" & Chr(KeyAscii)End SubB)KeyDownPrivate Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)Print "按下……"End SubC)KeyUpPrivate Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer)Print "松开……"End SubKeyCode码与KeyAscii码的区别1,键盘上的所有按键都有KeyCode码,有且只有一个,不会分A和a,包括Ctrl,Alt,Del等都有keyCode码;2,KeyAscii A的KeyAscii码为65,而a的码为97;Ctrl、Alt 及方向键等没有KeyAscii码;Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)'button:值为1,按下了左键;值为2,按下了右键;值为4,按下了中键'shift:值为1,按下了shift键;值为2,按下了ctrl键;值为4,按下了alt键End Sub文件练习1、Private Sub Command1_Click()Open "d:\ab.txt" For Output As #1Write #1, "张三", "男", 98, 87, 89Write #1, "李四", "女", 78, 99, 97Write #1, "王五", "男", 96, 85, 74Close #1End Sub2、把1-50各数及能被7整除的数分别存入两个文件中。
菜单与对话框(总分:34.00,做题时间:90分钟)一、{{B}}选择题{{/B}}(总题数:13,分数:26.00)1.如果设置了通用对话框的以下属性:DefaultExt="doc" FileName="c:/file1.txt",Filter= "应用程序|*.exe”,则显示“打开”对话框式,在“文件类型”下拉列表中的默认文件类型是 ______ 。
(分数:2.00)A.应用程序(*.ex √B.*.docC.*.txtD.不确定解析:2.以下叙述中错误的是______ 。
(分数:2.00)A.在同一窗体的菜单项中,不允许出现Name 属性相同的菜单项√B.在菜单的标题栏中,“&”所引导的字母指明了访问该菜单项的访问键C.程序运行过程中,可以重新设置菜单的Visible 属性D.同一个窗体中的所有弹出式菜单都在同一个菜单编辑器中定义解析:3.假定已经在菜单编辑器中建立了窗体的弹出式菜单,其顶级菜单的名称为a1,其“可见”属性为False,则程序运行后,可以同时响应鼠标左键单击和右键单击的事件过程是 ______ 。
(分数:2.00)A.Private Sub Form_ MouseDown (Button As Integer, _ Shift As Integer, X As Single, Y As Singl If Button = 1 And Button = 2 Then PopupMenu al End If End SubB.Private Sub Form_ MouseDown (Button As Integer, _ Shift As Integer, X As Single, Y As Singl PopupMenu a1 End Sub √C.Private Sub Form_ MouseDown (Button As Integer, _ Shift As Integer, X As Single, Y As Singl If Button = 1 Then PopupMenu a 1 End If End SubD.Private Sub Form_ MouseDown(Button As Integer, _ Shift As Integer, X As Single, Y As Singl If Button = 2 Then PopupMenu a 1 End If End Sub解析:4.在窗体上画一个通用对话框,其名称为CommonDialog1,然后画一个名为Command1的命令按钮,并编写如下事件过程: Private Sub Command1_ Click() CommonDialog1. Flags= cd10FNHideReadOnly CommonDialog1. Filter= "All Files (*.*) |*.*|Text File" & _ "(*.txt) |*.txt | Batch Files (*.bat)| *.bat" CommonDialog1. FilterIndex = 2 CommonDialog1. ShowOpen MsgBox CommonDialog1. FileName End Sub程序运行后,单击命令按钮,将显示一个“打开”对话框,此时在“文件类型”框中显示的是______ 。
(分数:2.00)A.All Files (*.*)B.Text Files(*.tx √C.Batch Files (*.baD.不确定解析:5.如果要在菜单中添加一个分隔线,则应将其Caption 属性设置为______ 。
(分数:2.00)A.=B.*C.&D.- √解析:6.设通用对话框的名称为CD1,如,果希望在“打开”对话框中的“文件类型”列表中包含所有文件、Word 文档和文本文件,则应把Filter 属性设置为______ 。
(分数:2.00)A.CD1.Filter=”所有文件|Word 文档|文本文件”B.CD1.Filter=”所有文件|*.*|Word文档|*.doc,文本文件|*.txt" √C.CD1.Filter=所有文件|*.*|Word 文档|*.doc|文本文件|*.txtD.CD1.Filter=”*.*|所有文件|*.doc |Word 文档|*.txt|文本文件”解析:7.以下叙述中错误的是______ 。
(分数:2.00)A.每个菜单项都是一个控件,与普通控件一样,也有属性和事件B.菜单项只能响应Click 事件C.菜单项的索引号必须从1开始√D.菜单项的索引号可以不连续解析:8.以下叙述中错误的是______ 。
(分数:2.00)A.菜单名称是程序使用菜单的标识B.菜单名称是设置菜单属性的对象C.菜单名称是显示在菜单项上的字符串√D.菜单名称是引用菜单项属性的对象解析:9.假定有一个菜单项,名称为MenuItem,为了在运行时使该菜单项失效(变灰),应使用的语句为______ 。
(分数:2.00)A.MenuIte Enabled = False √B.MenuIte Enabled= TureC.MenuIte Visible = TrueD.MenuIte Visible= False解析:10.以下叙述中错误的是______ 。
(分数:2.00)A.在程序运行时,通用对话框控件是不可见的B.在同一个程序中,用不同的方法(如ShowOpen或ShowSave 等)激活同一个通用对话框,可以使该通用对话框具有不同的作用C.调用通用对话框的ShowOpen 方法,能够直接打开在该通用对话框中指定的文件√D.调用对话框的ShowColor 方法,可以打开颜色对话框解析:11.以下关于菜单的叙述中,不正确的是______ 。
(分数:2.00)A.在程序运行过程中能够增加或减少菜单项B.使菜单项的Enabled 属性为False,则可删除该菜单项√C.弹出式菜单在菜单编辑器中设计D.利用控件数组可以实现菜单项的增加或减少解析:12.在窗体上画一个通用对话框,其名称为CommonDialog1,则下列与CommonDialog1.ShowOpen方法等效的语句是______。
(分数:2.00)monDialog1.Action= 1 √monDialog1.Action=2monDialog1.Action = 3monDialog1.Action = 4解析:13.在窗体上画一个名为CommonDialog1的通用对话框,一个名称为Command1的命令按钮。
要求单击命令按钮时,打开一个保存文件的通用对话框窗口。
该窗口的标题为“Save”,默认文件名为“SaveFile",在“文件类型”栏中显示“*.txt”。
能够满足上述要求的程序是 ______ 。
(分数:2.00)A.Private Sub Command1_ Click() CommonDialog1. FileName = "SaveFile" CommonDialog1. Filter = "All Files | *.* |*.txt *.txt| *.doc| *.doc" CommonDialog1. Filterlndex = 2 CommonDialog1. DialogTitle = "Save" CommonDialog1. Action = 2 End Sub √B.Private Sub Command1_Click() CommonDialog1. FileName = "SaveFile" CommonDialog1. Filter = "All Files |*.* | *.txt|*.txt|*.doc|*.doc" CommonDialog1. Filterlndex = 1 CommonDialog1. DialogTitle = "Save" CommonDialog1. Action = 2 End SubC.Private Sub Command1_ Click() CommonDialog1. FileName = "Save" CommonDialog1. Filter = "All Files |%* |*.txt|*.txt|*.doc|*.doc" CommonDialog1. Filterlndex = 2 CommonDialog1. DialogTitle = "Save" CommonDialog1. Action = 2 End SubD.Private Sub Command1_ Click() CommonDialog1. FileName = "SaveFile" CommonDialog1. Filter = "All Files |*.*|*.txt|*.txt|*.doc|*.doc" CommonDialog1. Filterlndex = 1 CommonDialog1. DialogTitle = "Save". CommonDialog1. Action = 1 End Sub解析:二、{{B}}填空题{{/B}}(总题数:4,分数:8.00)14.在窗体上画一个名为Text1的文本框,然后建立一个弹出式菜单,菜单名称为 Textformat,包含“宋体”、“黑体”、“隶书”等3个菜单项,其名称分别为font1、font2和font3,分别用来使Text1中的文字用相应的字体显示。
程序运行后,如果用鼠标右键单击文本框,则弹出此菜单。
要求:在弹出的菜单中只显示与Text1中字体不同的其他两种字体的菜单项。
例如,假定文本框种显示的字体是“宋体”,则弹出的菜单中只有“黑体”和“隶书”两个菜单项(如下图所示)。
请填空。
Private Sub font1_ Click() Text1. FontName = “宋体” End Sub Private Sub font2 Click() Text1. FontName = “黑体” End Sub Private Sub font3 Click() Text1. FontName = “隶书” End Sub Private Sub Form_ MouseDown (Button As Integer, Shift As Integer, _ X As Single, Y As Single) If ______ Then If Text1. FontName =“宋体” Then Font1. Visible = Font2. Visible = True Font3. Visible = True ElseIf Text1. FontName= "______ "Then Font1. Visible = True Font2. Visible = False Font3. visible = True ElseIf Text1. FontName =" ______ "Then Font1. Visible = True Font2. Visible = True Font3. Visible = False End If ______ Textformat End If End Sub(分数:2.00)填空项1:__________________ (正确答案:Button=2 False 黑体隶书 PopupMenu)解析:15.在窗体上画一个名称为Text1的文本框,一个名称为CD1的通用对话框,一个名称为 C1、标题为“存盘”的命令按钮,编写适当的事件过程。