五、菜单栏和工具栏(主工具栏上创建按钮)

2024-06-17 00:18

本文主要是介绍五、菜单栏和工具栏(主工具栏上创建按钮),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.   菜单和工具在操作系统中的含义:

       a. 菜单就是一种展示操作系统命令的目录;

       b. 也就是菜单中选项中的子目录中的内容其实都是操作系统的命令,比如菜单栏中文件选项中的打开选项,就对应着操作系统的“打开文件命令”;

       c. 比如Windows系统中的开始菜单还有右键菜单所展示的都是操作系统的命令;

       d. 应用程序的菜单编程就是指为应用程序添加菜单项,并为这些选项编写相应的命令相应函数;

       e. 而工具栏就是将菜单中一些常用选项所对应的命令集合在一起,并且以图形按钮的形式提供给用户,使用户的操作更加便捷;


2.   WM_COMMAND消息:

       a. 点击菜单栏中的选项、加速键、工具栏中的图标都可以引发WM_COMMAND消息;

       b. 该消息就是菜单命令消息,点击以上所述的选项之后可向应用程序窗口发送该消息,并触发相应的动作;

       c. 只不过这些动作都是需要通过操作系统的命令集合来完成的,这里只是指这些操作系统命令必不可少,它们是核心环节,当然用户也可以添加自己的代码以完成一些特定的功能;

       d. 这些特定功能就可以写在消息响应函数中,同时MFC在调用消息响应函数的同时也会执行对应的操作系统命令;


3.   在VC++6.0中添加菜单项以及响应的消息响应函数:

       a. 同样是以一个单文档名为Test的工程为例;

       b. 在菜单资源视图(即Resource View)中的Menu下的IDR_MAINFRAME上双击;

       c. 然后在代码编辑区的菜单栏的末尾空的框框处可以添加菜单选项,方法是右键,并选择属性,然后就可以打开属性对话框了;

       d. !!小技巧,在对话框的左上角有一个图钉的图标,点击以后图标就凹陷下去了,这可以使得属性对话框永远不会消失,除非点击右上角的×按钮,并且用鼠标点击不同对象该属性框就会自动切换成相应对象的属性内容,使得编辑的时候非常方便,比如用鼠标点击子菜单,则该属性框中的内容就自动切换成了该子菜单的属性,如果用鼠标点击成员函数,则该属性框中的内容就自动切换成该成员函数的属性了,非常方便;

       e. 在属性框中输入菜单项的名称(Caption中,这里填写Hello),不用敲回车,已经自动保存进对象中了,然后将鼠标移至创建好的菜单项上,会自动弹出空的子菜单,然后在空的子菜单框框上右键选择属性就又会弹出该子菜单项的属性对话框(如果之前已经对属性框敲过图钉了,则直接用鼠标点击空的子菜单属性框中的内容就会自动切换到该子菜单中的内容而不需要右键选择属性了);

       f.  同样在Caption中输入子菜单选项的名称(取名为“开始测试”),而该子菜单项对象的ID一般(约定俗称的)将会作为其消息响应函数的名称,这里可以填写IDM_TESTCOMMAND,其中ID是指其ID名,M_是指它是Menu,TESTCOMMAD即使其真正的ID名,而这部分将会作为消息响应函数的名字,一般函数命名规则就是各个字母首字母大写,因此成员函数名可以是OnTestCommand,而一般ID名约定俗成以IDM_打头;

      g.  添加消息响应函数:

            i.   在子菜单项上右键选择类向导(Class Wizard),跳出类向导对话框;

            ii.  左侧会显示工程中存在的各个类的ID,但是是通过右键选择的方式打开该窗口的,因此其会自动帮你选择你各个右键点击的类对象(这里就是子菜单项的ID,IDM_TESTCOMMAND),而右侧则显示出该类对象所可以相应的消息种类,在里面选择一项来添加相应的消息相应函数,这里选择COMMAND消息,然后点击Add Function;

            iii. 之后会跳出添加函数对话框,其中消息相应函数的名称已经自动为你生成,而命名规则就是f.中所描述的那样,可以修改,但是不建议修改(使用约定俗成的规范比较好),确定后将会回到刚才的类向导对话框中,然后点击Edit Code之后就会在代码区自动为你生成该函数的定义(同时在相应的头文件中也会定义该函数的声明);

            iv. 然后在函数体中填写相关代码即可,这里我们填写AfxMessageBox("这就是消息相应函数!");

       h. 测试:编译运行程序后选择菜单栏中的Hello选项,并选择子菜单中的“开始测试”选项,之后将会跳出提示窗口显示“这就是消息相应函数!”;


3.   在VC++2008中添加菜单项和消息相应函数:

       a. 如果没有资源视图就在菜单栏中的视图中点击资源视图添加;

       b. 不能右键选择属性和类向导,必须先在菜单栏中的视图中选择其他视图,并点击属性视图添加到工作区的右侧,可以点击右上角的图钉选择是否隐藏;

       c. 添加函数时右键选择“添加事件处理程序”,可以看见标准的取名命名规则为“On+母菜单名+子菜单名”;

       d. 消息类型选择COMMAND,类列表中选择Doc,然后点击添加编辑即可;


4.   修改VS2008中的字体:菜单栏→工具→选项→字体和颜色,进入设置;


5.   用VC++6.0添加工具栏中的按钮:

       a. 和菜单栏中已有的项建立链接:

            i.   双击资源视图中Toolbar的IDR_MAINFRAME,进入工具栏的编辑区;

            ii.  末尾的空的图标即为可添加的按钮,可在其中绘出你想要的图案;

            iii. 工具栏末尾处你正在编辑的图标将会和你正在编辑的图案同步更新;

            iv.  绘制完成后双击(注意:单击和右键都不管用!!!)编辑完成的末尾小图标进入属性对话框;

            v.   ID就选择以存在的菜单栏中的选项的ID,这样就可以和其建立链接;

            vi.  可以直接编译运行程序,点击新添加的工具栏按钮即可得到和之前菜单栏选项相同的效果;

        b. 调整各个按钮的顺序以及显示分隔符:

             i.   在Toolbar的IDR_MAINFRAME的编辑区中,点击目标按钮不放,并且来回拖动,即可改变顺序;

             ii.  拖动按钮可以调整其和相邻按钮之间的距离,如果两按钮直接有很大的间隙,则在运行程序时就会在这两个按钮之间存在分隔符,即一条淡淡的虚线,如果两个按钮直接黏在一起没有间隙,则在运行程序时这两个按钮之间无分隔符,即无虚线;

         c. 删除按钮(在编辑区实施):

              i.   删除按钮上的图案:点击目标按钮后按delete键即可删除上面建的图案;

              ii.  将整个按钮删除:左击目标按钮不放,然后脱出工具栏区域后松手即可将整个按钮删除;

这篇关于五、菜单栏和工具栏(主工具栏上创建按钮)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1067958

相关文章

JAVA中整型数组、字符串数组、整型数和字符串 的创建与转换的方法

《JAVA中整型数组、字符串数组、整型数和字符串的创建与转换的方法》本文介绍了Java中字符串、字符数组和整型数组的创建方法,以及它们之间的转换方法,还详细讲解了字符串中的一些常用方法,如index... 目录一、字符串、字符数组和整型数组的创建1、字符串的创建方法1.1 通过引用字符数组来创建字符串1.2

手把手教你idea中创建一个javaweb(webapp)项目详细图文教程

《手把手教你idea中创建一个javaweb(webapp)项目详细图文教程》:本文主要介绍如何使用IntelliJIDEA创建一个Maven项目,并配置Tomcat服务器进行运行,过程包括创建... 1.启动idea2.创建项目模板点击项目-新建项目-选择maven,显示如下页面输入项目名称,选择

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

在cscode中通过maven创建java项目

在cscode中创建java项目 可以通过博客完成maven的导入 建立maven项目 使用快捷键 Ctrl + Shift + P 建立一个 Maven 项目 1 Ctrl + Shift + P 打开输入框2 输入 "> java create"3 选择 maven4 选择 No Archetype5 输入 域名6 输入项目名称7 建立一个文件目录存放项目,文件名一般为项目名8 确定

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

顺序表之创建,判满,插入,输出

文章目录 🍊自我介绍🍊创建一个空的顺序表,为结构体在堆区分配空间🍊插入数据🍊输出数据🍊判断顺序表是否满了,满了返回值1,否则返回0🍊main函数 你的点赞评论就是对博主最大的鼓励 当然喜欢的小伙伴可以:点赞+关注+评论+收藏(一键四连)哦~ 🍊自我介绍   Hello,大家好,我是小珑也要变强(也是小珑),我是易编程·终身成长社群的一名“创始团队·嘉宾”

Maven创建项目中的groupId, artifactId, 和 version的意思

文章目录 groupIdartifactIdversionname groupId 定义:groupId 是 Maven 项目坐标的第一个部分,它通常表示项目的组织或公司的域名反转写法。例如,如果你为公司 example.com 开发软件,groupId 可能是 com.example。作用:groupId 被用来组织和分组相关的 Maven artifacts,这样可以避免

批处理以当前时间为文件名创建文件

批处理以当前时间为文件名创建文件 批处理创建空文件 有时候,需要创建以当前时间命名的文件,手动输入当然可以,但是有更省心的方法吗? 假设我是 windows 操作系统,打开命令行。 输入以下命令试试: echo %date:~0,4%_%date:~5,2%_%date:~8,2%_%time:~0,2%_%time:~3,2%_%time:~6,2% 输出类似: 2019_06

ORACLE 11g 创建数据库时 Enterprise Manager配置失败的解决办法 无法打开OEM的解决办法

在win7 64位系统下安装oracle11g,在使用Database configuration Assistant创建数据库时,在创建到85%的时候报错,错误如下: 解决办法: 在listener.ora中增加对BlueAeri-PC或ip地址的侦听,具体步骤如下: 1.启动Net Manager,在“监听程序”--Listener下添加一个地址,主机名写计

C# 防止按钮botton重复“点击”的方法

在使用C#的按钮控件的时候,经常我们想如果出现了多次点击的时候只让其在执行的时候只响应一次。这个时候很多人可能会想到使用Enable=false, 但是实际情况是还是会被多次触发,因为C#采用的是消息队列机制,这个时候我们只需要在Enable = true 之前加一句 Application.DoEvents();就能达到防止重复点击的问题。 private void btnGenerateSh