精华内容
下载资源
问答
  • 允许改方按钮
    千次阅读
    2021-01-27 00:25:01

    在网页设计过程中,一般标签属性默认的效果都不是太美观,就比如按钮样式,默认状态是极其普通毫无美感。那么本篇文章就给大家介绍关于css设置按钮样式之圆角按钮效果的相关操作示例。

    代码如下:

    或者

    效果如下图:

    33563a5a59a631e8860e6ac53e9930e3.png

    看了上述代码是不是觉得非常简单呢。其实html设置圆角矩形按钮样式关键之处,就是css中的border-radius

    属性。只要你掌握了这属性的本质用法,那么无论给div还是图片还是边框按钮设置圆角都可以轻松实现。

    重点知识点介绍:border-radius 属性是一个最多可指定四个 border -*- radius 属性的复合属性 这个属性允许你为元素添加圆角边框!border-radius: 1-4 length|% / 1-4 length|%;

    每个半径的四个值的顺序是:左上角,右上角,右下角,左下角。如果省略左下角,右上角是相同的。如果省略右下角,左上角是相同的。如果省略右上角,左上角是相同的。

    那么本篇关于css按钮设置圆角样式的介绍,对有需要的朋友有所帮助。

    更多相关内容
  • wps office手机版 点击左上角编辑按钮

    千次阅读 2020-12-20 03:29:24
    导读:说到手机,大家应该都了解,有朋友问wps office,还有人问wps office,这到底是咋回事?事实上wps office 手机版下载安装呢,下面是小编推荐给大家的wps office手机... 『青青星座网』原创文章,未经允许不得转载

    导读:说到手机,大家应该都了解,有朋友问wps office,还有人问wps office,这到底是咋回事?事实上wps office 手机版下载安装呢,下面是小编推荐给大家的wps office手机版,希望对你有所帮助!

    wps office手机版

    wps office手机版 插入横列的具体操作步骤如下:

    我们需要准备的材料有:手机、wps office。

    1、首先我们打开需要编辑的wps office,点击左上角“编辑”按钮。

    2、之后我们在该页面中点击左下角“工具”按钮。

    3、然后我们在该页面中点击“插入”,再点击“单元格”按钮。

    4、最后我们在弹出的框框中点击“整行”,或者“整列”即可

    一款手机应用程序,功能是可以进行操作一些基本的办公。包括:word、excel、ppt等常用应用程序。

    具体功能如下:

    1、字数统计:用户可以轻松统计文档的全文字数。

    2、文档分享:不管是文字内容,还是文档截图、附件等,都可以随时随地通过微博、短信和邮件等方式分享及发送出去。

    3、阅读记忆:当用户再次查看已打开过的文档时,可以选择直接跳转到上一次查看的位置,避免下次打开时找不到之前查看的内容。

    4、DOCX文档保存:可以对DOCX文档直接保存,同时,还可将其他格式的文档另存为DOCX格式,操作步骤更简单。

    5、显示效果更完善:对DOCX文档中表格、对象等内容的显示效果更加完善,打开的文档格式相当于电脑上的显示效果。

    怎么在wps office 手机版的方框里打勾

    首先,打开手机WPS的word文档,进入编辑模式,在要打√的方框旁点击,左边右边都行,如下图

    然后点击那个小蓝点,点中后就会弹出打勾的选项

    wps office 手机版怎么在word上插图片

    以WPS 2019版为例

    1、打开文档

    2、接着在“插入”界面点击“图片”

    3、从以下方式选择图片即可~

    4、效果显示如下~

    手机WPS office怎么做图表

    手机的功能越来越强大了,每一次的软件更新总是会带来一些新的功能和体验,一直以来都是在空闲的时候会在手机上看一些文档,但是编辑起来并不是太舒服,不过现在好多了。现在在手机上也可以简单的做基础的ppt操作,那么我们如何在wps中插入图表,比如柱状图,同时编辑数据呢?下面和小编一起使用wps的手机版来操作一番吧!

    工具/原料

    手机版WPS office

    手机

    方法/步骤

    手机上安装wps office,安装之后打开它

    点击右下角的红色按钮,选择“新建演示文档”,接着点击空白

    新建演示文档打开,点击页面底端的“工具”,切换到“查看”,选择“版式”

    在版式列表里面选择“空白”,这样就可以清空版面了当然我们也可以删除页面中的文本框达到同样的效果

    从查看切换到“插入”选项卡,选择“图表”

    点击顶端的柱状图可以选择不同样式的图表,这里小编以柱状图为例,选择第一种柱状图

    默认的柱状图实际上默认的柱状图实际上根据的事是3x3的列联表做出的

    选中这个柱状图,再次点击,它的上方出现黑色的选择条,点击第一个“编辑数据”

    单击单元格,在单元格里面输入实际的数据,比如小编这里使用的ABC三地区Q P两种产品的销量数据,这是一个2x3的表,不需要最后一行

    点击第三行前面的颜色竖条,选择“删除行”

    如果你的数据较多可以选择添加行或列

    如果我们需要转换行和列的位置,由根据区域转换为根据产品划分数据,那么点击两次柱状图如果我们需要转换行和列的位置,由根据区域转换为根据产品划分数据,那么点击两次柱状图,向左滑动黑色的选择条,选择“切换行列”

    我们还可以快速的请,我们还可以快速的切换不同的图表的表现形式,选择“切换图表”即可

    最后在插入里面选择“文本框”,输入图表标题

    一幅简单的图表就完成了

    END

    注意事项

    经验系小编根据生活独立创作完成,如果您有更好的办法,请多多指教!

    手机上处理文档不是很方便,简单处理还可以,大家最好使用电脑来进行办公处理!

    手机版WPS office 里怎么修改word文稿的名字啊?

    1、以华为P20手机为例,首先打开手机中安装的WPS office软件。

    2、在打开的页面中找到需要更改文稿名称的Word文档,点击进入该文档的编辑界面。

    3、在编辑页面中点击左下角红色圈标记的位置。

    4、然后在打开的页面中点击“文件”选项,并选择其中的“另存为”选项。

    5、即可将打开的Word文档进行保存操作,在这步操作中即可修改文稿的名称。

    “wps office”手机版怎么用?

    方法如下:

    1、首先需要在手机商店里面下载软件WPS office,并且安装到手机上。

    2、在手机上打开WPS office 软件。

    3、打开WPS office,下面会有“新建字样”,然后点击它,就会出现下面的截图。

    4、打开后就和电脑的office文档编辑模式一样了,可以写自己的文档了。

    5、手机上的office功能和电脑上的差不多,在新建的下方都有功能表。

    手机wps怎么登陆

    1.在手机桌面中找到手机WPS,点击打开WPS进入主页面,如下图所示。

    2.在主页面中找到下方我的选项,点击该选项进入我的页面,如下图所示。

    3.在我的页面中找到上方账号选项,点击该选项进入登录页面,如下图所示。

    4.在登录页面中选择一种登录方式,输入相关账号信息即可完成登录。

    5.登录完毕之后在我的页面中即可找到自己刚刚登录相关账号信息。

    手机wps office怎么做表格

    1,打开最新版wps office。一般手机都自带该软件,没有的话,可以下载一个,方便以后使用,这个软件在平时还是挺实用的。

    2,在“最近”这个页面点击“+”号,即可打开功能,这时会有很多选项,如图所示。

    3,在这些选项中,选择“新建表格”,你会看到许多表格模板之类的。

    4,如果你想制作简单表格,可以点击“新建空白”开始制作。

    5,打开之后,你可以看到最下方有一些工具选项可以帮助你完成表格制作。

    6,制作完成之后,点击“完成”即可保存你制作的表格。

    WPS Office 手机版 怎样才能填写数字0

    这里以word文档中输入公式为例。 打开wps的word文档编辑功能,然后新建一个word文档。 接下来,就是公式的编辑了,点击“插入”-“公式”,就会弹出公式的编辑框了。 接下来,就是输入公式的内容了。 在公式的编辑框中,可以选择公式中需要的格式,...

    『青青星座网』原创文章,未经允许不得转载

    展开全文
  • 【第三互联】3、腾讯QQ授权第三登录

    万次阅读 多人点赞 2020-02-25 15:24:15
    定义三个变量,接收 QQ 互联的信息 2、登录按钮点击后的接口 /** * 请求授权页面 */ @GetMapping(value = "/auth") public String qqAuth(HttpSession session) { // 用于第三应用防止CSRF攻击 String uuid = ...

    当我们创建的 QQ 互联应用成功后,我们便可以开始使用该应用来实现 QQ 互联

    一、获取 APP ID 和 APP Key

    1、在 QQ 互联官网首页找到“我的应用”
    我的应用
    2、点击应用,进入详情
    获取appid和appkey
    这样,我们就获取到了 APP ID 和 APP Key

    二、QQ 授权登录进行开发

    1、将 APP ID 、APP Key,以及该应用的信息放入项目中的配置文件中,我使用的是SpringBoot,我放在了 application.yml 配置文件中
    qq互联信息

    • 二、添加 Maven 依赖,在 pom.xml 文件中,我们需要加入以下依赖信息
    <!-- 网络请求 -->
    <dependency>
    	<groupId>org.apache.httpcomponents</groupId>
    	<artifactId>httpclient</artifactId>
    	<version>4.5.6</version>
    </dependency>
    

    其他依赖,请自行加入

    三、登录按钮

    在页面放置 QQ 授权登录的 DOM 元素

    <a th:href="@{qq/auth}" class="link" title="腾讯QQ登录"><i class="layui-icon">&#xe676;</i></a>
    

    四、接口类

    创建 QQ 授权登录的 Controller,QqController.java

    1、从配置文件中获取 QQ 互联信息

    /**
         * QQ互联中提供的 appid 和 appkey
         */
        @Value("${qq.oauth.appid}")
        public String APPID;
        @Value("${qq.oauth.appkey}")
        public String APPKEY;
        @Value("${qq.oauth.url}")
        public String URL;
    

    定义三个变量,接收 QQ 互联的信息

    2、登录按钮点击后的接口

    /**
         * 请求授权页面
         */
        @GetMapping(value = "/auth")
        public String qqAuth(HttpSession session) {
            // 用于第三方应用防止CSRF攻击
            String uuid = UUID.randomUUID().toString().replaceAll("-", "");
            session.setAttribute("state", uuid);
    
            // Step1:获取Authorization Code
            String url = "https://graph.qq.com/oauth2.0/authorize?response_type=code" +
                    "&client_id=" + APPID +
                    "&redirect_uri=" + URLEncoder.encode(URL) +
                    "&state=" + uuid;
    
            return PasswordUtils.redirectTo(url);
        }
    

    QQ 互联的接口文档中建议我们在授权登录时传入一个加密的数据防止被攻击,我们传入了UUID,最后重定向到授权页面
    QQ授权页面

    3、我们在授权页面,登录了 QQ 账号,并同意授权后,就回到了我们创建应用是设置的回调地址里面了

    /**
         * 授权回调
         */
        @GetMapping(value = "/callback")
        public String qqCallback(HttpServletRequest request) throws Exception {
            HttpSession session = request.getSession();
            // 得到Authorization Code
            String code = request.getParameter("code");
            // 我们放在地址中的状态码
            String state = request.getParameter("state");
            // 验证信息
            String uuid = (String) session.getAttribute("state");
    
            // 验证信息我们发送的状态码
            if (null != uuid) {
                // 状态码不正确,直接返回登录页面
                if (!uuid.equals(state)) {
                    return PasswordUtils.redirectTo("/login");
                }
            }
    
            // Step2:通过Authorization Code获取Access Token
            String url = "https://graph.qq.com/oauth2.0/token?grant_type=authorization_code" +
                    "&client_id=" + APPID +
                    "&client_secret=" + APPKEY +
                    "&code=" + code +
                    "&redirect_uri=" + URL;
            String access_token = QqHttpClient.getAccessToken(url);
    
            // Step3: 获取回调后的openID
            url = "https://graph.qq.com/oauth2.0/me?access_token=" + access_token;
            String openId = QqHttpClient.getOpenID(url);
    
            // Step4:获取QQ用户信息
            url = "https://graph.qq.com/user/get_user_info?access_token=" + access_token +
                    "&oauth_consumer_key=" + APPID +
                    "&openid=" + openId;
    
            // 得到用户信息
            JSONObject jsonObject = QqHttpClient.getUserInfo(url);
            /**
    	     * 获取到用户信息之后,就该写你自己的业务逻辑了
    	     */
            return PasswordUtils.redirectTo("/success");
        }
    

    以上代码,从我自己的项目中拷贝而来,如果你直接使用,你需要对其业务代码进行修改

    五、网络请求方法

    第四步代码中所用到的网络接口方法,我放在了 QqHttpClient.java 文件中,主要有三个方法

    /**
         * 获取Access Token
         */
        public static String getAccessToken(String url) throws IOException {
            CloseableHttpClient client = HttpClients.createDefault();
            String token = null;
    
            HttpGet httpGet = new HttpGet(url);
            HttpResponse response = client.execute(httpGet);
            HttpEntity entity = response.getEntity();
    
            if (entity != null) {
                String result = EntityUtils.toString(entity, "UTF-8");
                if (result.indexOf("access_token") >= 0) {
                    String[] array = result.split("&");
                    for (String str : array) {
                        if (str.indexOf("access_token") >= 0) {
                            token = str.substring(str.indexOf("=") + 1);
                            break;
                        }
                    }
                }
            }
    
            httpGet.releaseConnection();
            return token;
        }
    
        /**
         * 获取openID
         */
        public static String getOpenID(String url) throws IOException {
            JSONObject jsonObject = null;
            CloseableHttpClient client = HttpClients.createDefault();
    
            HttpGet httpGet = new HttpGet(url);
            HttpResponse response = client.execute(httpGet);
            HttpEntity entity = response.getEntity();
    
            if (entity != null) {
                String result = EntityUtils.toString(entity, "UTF-8");
                jsonObject = parseJSONP(result);
            }
    
            httpGet.releaseConnection();
    
            if (jsonObject != null) {
                return jsonObject.getString("openid");
            } else {
                return null;
            }
        }
    
        /**
         * 获取QQ用户信息
         */
        public static JSONObject getUserInfo(String url) throws IOException {
            JSONObject jsonObject = null;
            CloseableHttpClient client = HttpClients.createDefault();
    
            HttpGet httpGet = new HttpGet(url);
            HttpResponse response = client.execute(httpGet);
            HttpEntity entity = response.getEntity();
    
            if (entity != null) {
                String result = EntityUtils.toString(entity, "UTF-8");
                jsonObject = JSONObject.parseObject(result);
            }
    
            httpGet.releaseConnection();
    
            return jsonObject;
        }
        
        /**
         * 转换json对象
         */
        private static JSONObject parseJSONP(String jsonp) {
            int startIndex = jsonp.indexOf("(");
            int endIndex = jsonp.lastIndexOf(")");
            String json = jsonp.substring(startIndex + 1, endIndex);
            return JSONObject.parseObject(json);
        }
    

    以上,就是完成 QQ 授权登录的过程

    六、总结

    总结来说如图所示
    qq授权登录示意图
    如您在阅读中发现不足,欢迎留言!!!

    下一篇:

    【QQ互联】四、分享至QQ、新浪微博

    展开全文
  • 【MFC】学习笔记:按钮控件(Button)

    千次阅读 2020-07-02 09:58:25
    按钮控件分类3.1 命令按钮3.2 单选按钮3.3 复选按钮04.按钮控件的创建4.1 拖拽方式4.2 重写方式4.2.1 创建函数原型4.2.2 主要成员函数05.按钮控件实例(借鉴) 02.按钮控件介绍 按钮,这应该是用的最多,也是见得最多...

    01.目录

    02.按钮控件介绍

    按钮,这应该是用的最多,也是见得最多的一种控件。
    各大App,不管有名无名,按钮基本上都是不可或缺的控件之一。
    比如:王者荣耀登陆界面的“进入游戏”就是一个按钮,只是给他整的花里胡哨了而已。
    下面说说按钮控件的概念:

    控件是一类特殊的窗口,如按钮、文本框之类的,用来将信息传送给用户或获取用户的输入;

    控件都是一些高度封装好的对象,有自己的WM_PAINT处理代码,不必用户自己去重绘控件;

    控件的消息机制:当点击控件等操作发生时,用户不用具体去处理这些鼠标消息,MFC会处理这些最基本的控件上的消息并将其转化为“通知”(Notify),比如点击按钮时不需要用户去处理按钮的ButtonDown消息,而是MFC将这种消息转化为一个BN_CLICKED通知,然后用户只需要响应OnButtonClicked函数即可;

    PS:
    a. 一般普通消息,如WM_LBUTTONDOWN、WM_PAINT等都是基本的消息,这些消息直接反应了触发消息的事件;

    b. 通知消息是一种特殊的Windows消息,它主要来自控件,虽然触发通知的都是一些基本消息,如BUTTONDOWN等,但Windows将它们转换成控件发出的通知,通知消息直接反应了触发控件的事件;

    控件一般都挂载其它窗口上,因此控件都是其它窗口的子窗口,所以控件有时也叫子窗口控件:
    
         i. 父窗口移动控件就会跟着移动;
    
         ii. 父窗口被销毁控件也会跟着被销毁;
    
         iii. 这些动作都由MFC自动完成;
    

    03.按钮控件分类

    按钮控件一般分为:
    1.命令按钮(Button)
    2.单选按钮(Radio Button)
    3.复选按钮或者叫复选框(Check Box)

    3.1 命令按钮

    命令按钮就是我们前面多次提到的狭义的按钮控件,用来响应用户的鼠标单击操作,进行相应的处理,它可以显示文本也可以嵌入位图。单选按钮使用时,一般是多个组成一组,组中每个单选按钮
    的选中状态具有互斥关系,即同组的单选按钮只能有一个被选中。

    命令按钮是我们最熟悉也是最常用的一种按钮控件。

    3.2 单选按钮

    单选按钮有选中和未选中两种状态,为选中状态时单选按钮中心会出现一个蓝点,以标识选
    中状态。

    一个圆圈+一些字(基本样式),当然这个是可以根据风格改的。
    软件中 一般很少用默认样式,除了一些工业软件,比如自己公司做的很多软件就是用默认样式。

    3.3 复选按钮

    一般的复选框也是有选中和未选中两种状态,选中时复选框内会增加一个“√”,而三态复选框(设置了BS_3STATE风格)有选中、未选中和不确定三种状态,不确定状态时复选框内出现一个灰色“√”。
    按钮控件会向父窗口发送通知消息,最常用的通知消息莫过于BN_CLICKED和BN_DOUBLECLICKED了。用户在按钮上单击鼠标时会向父窗口发送BN_CLICKED消息,双击鼠标时发送BN_DOUBLECLICKED消息。

    复选框就是正方形 + 一些字(基本样式),一般这种样式都是用于工业软件,不是特别在意界面,但是一些游戏啊,直播啊,都会给这些常用控件“穿一件衣服”。

    04.按钮控件的创建

    按钮控件的创建有两种方式:
    1.第一种是最常用的:拖拽
    2.第二种是用于原生控件:程序写出来的控件

    4.1 拖拽方式

    拖拽方式就比较常见了,没有哪一个程序员会在拖控件和写控件间犹豫,肯定都是选择编译器封装好的直接拖来用就好了,这个就不多说,大致说一下步骤:

    新建MFC项目(至于选择单文档,多文档自己决定,均可)——切换视图为资源视图(如果界面没有,点击工具栏的视图->其他视图->资源视图)——选择一个Dialog,没有就创建,如果不知道怎么创建,请回看MFC学习笔记(创建与修改对话框),——选择左侧或者右侧工具栏,是所有按钮都在里面

    4.2 重写方式

    一般来说这种是用于写原生控件,就是自己写控件,不用系统默认的,自己给他给样式或者属性等等

    4.2.1 创建函数原型

    MFC提供了CButton类封装按钮控件的所有操作。
    之前的教程中,我们是在对话框模板上直接添加的按钮控件资源,但某些特殊情况下需要我们动态创建按钮控件,即通过CButton类的成员函数Create来创建按钮。下面是Create函数的原型:

    virtual BOOL Create(
       LPCTSTR lpszCaption,
       DWORD dwStyle,
       const RECT& rect,
       CWnd* pParentWnd,
       UINT nID 
    );
    

    参数说明:
    lpszCaption:指定按钮控件显示的文本。
    dwStyle:指定按钮控件的风格,可以设置为以下按钮风格的任意组合。
    BS_AUTOCHECKBOX :同BS_CHECKBOX,不过单击鼠标时按钮会自动反转
    BS_AUTORADIOBUTTON: 同BS_RADIOBUTTON,不过单击鼠标时按钮会自动反转
    BS_AUTO3STATE :同BS_3STATE,不过单击按钮时会改变状态
    BS_CHECKBOX:指定在矩形按钮右侧带有标题的选择框
    BS_DEFPUSHBUTTON:指定默认的命令按钮,这种按钮的周围有一个黑框,用户可以按回车键来快速选择该按钮
    BS_GROUPBOX:指定一个组框
    BS_LEFTTEXT:使控件的标题显示在按钮的左边
    BS_OWNERDRAW:指定一个自绘式按钮
    BS_PUSHBUTTON:指定一个命令按钮
    BS_RADIOBUTTON:指定一个单选按钮,在圆按钮的右边显示正文
    BS_3STATE:同BS_CHECKBOX,不过控件有3 种状态—选择、未选择和变灰
    当然,除了以上列出的风格,一般还会为按钮设置WS_CHILD、WS_VISIBLE和WS_TABSTOP等风格,WS_TABSTOP风格使按钮控件具有tab停止属性,即按tab键切换焦点控件时能够将焦点
    停在按钮控件上。创建一组单选按钮时,第一个按钮的风格应设置为WS_CHILD|WS_VISIBLE|WS_TABSTOP|WS_GROUP|BS_AUTORADIOBUTTON,其他单选按钮的风格应
    为WS_CHILD|WS_VISIBLE|BS_AUTORADIOBUTTON,不包含WS_TABSTOP和WS_GROUP。
    在对话框模板上直接添加按钮控件时,它的属性中包含了上述风格,例如,复选框的Tri_state属性实际上代表的就是BS_3STATE风格。
    剩下的三个参数与静态文本框的Create函数中的相应参数类似,大家可以参考前面静态文本框的讲解,也可以查阅MSDN。

    4.2.2 主要成员函数

    下面是CButton类的一些主要的成员函数,至于其他的函数大家可以在MSDN中查看。

    		// 设置要在按钮中显示的位图。参数hBitmap为位图的句柄。返回值为按钮原来位图的句柄。
      	   HBITMAP SetBitmap(HBITMAP hBitmap);
       		//获取之前由SetBitmap函数设置的按钮位图的句柄。
           HBITMAP GetBitmap( ) const;
           //设置按钮的风格。参数nStyle指定按钮的风格,bRedraw指定按钮是否重绘,为TRUE则重绘,否则不重绘,默认为重绘。 
           void SetButtonStyle(UINT nStyle,BOOL bRedraw = TRUE);
           // 获取按钮控件的风格。
           UINT GetButtonStyle( ) const;
          //设置按钮的选择状态。参数nCheck为0表示未选中状态,1表示选中状态,2表示不确定状态(仅用于复选框)。
           void SetCheck(int nCheck);
           //获取按钮的选择状态。返回值的意义同SetCheck函数的nCheck参数。
           int GetCheck( ) const;
           //设置要显示到按钮上的光标图。参数hCursor指定了光标的句柄。返回值为按钮原来光标的句柄。
           HCURSOR SetCursor(HCURSOR hCursor);
           // 获取之前由SetCursor设置的光标的句柄。
           HCURSOR GetCursor( );
          //设置要在按钮上显示的图标。参数hIcon指定了图标的句柄。返回值为按钮原来图标的句柄。
           HICON SetIcon(HICON hIcon);
           //  获取之前由SetIcon设置的图标的句柄。
           HICON GetIcon( ) const;
         	//设置按钮的高亮状态。参数bHighlight指定按钮是否高亮显示,非0则高亮显示,否则取消高亮显示状态。
           void SetState(BOOL bHighlight);
           //获取按钮控件的选择状态、高亮状态和焦点状态。我们可以通过将返回值与各个掩码相与来获得各种状态值,掩码与对应的相与结果说明如下:
           /*
    		掩码0x0003:用来获取单选按钮或复选框的状态。相与结果为0表示未选中,1表示被选中,2表示不确定状态(仅用于复选框)。
           掩码0x0004:用来判断按钮是否是高亮显示。相与结果为非0值表示按钮是高亮显示的。当单击按钮并按住鼠标左键时,按钮会呈高亮显示。
           掩码0x0008:相与结果为非零值表示按钮拥有输入焦点。
    		*/
           UINT GetState( ) const;
           //下面再列出几个继承自CWnd类的成员函数,通过它们获取或设置按钮控件的状态非常方便,只需要知道按钮的ID。
    
    		//用来设置按钮的选择状态。参数nIDButton指定了按钮的ID。nCheck的值为0表示按钮未被选择,为1表示按钮被选择,为2表示按钮处于不确定状态(仅用于复选框)。
           void CheckDlgButton(int nIDButton,UINT nCheck);
           // 返回复选框或单选按钮的选择状态。返回值为0表示按钮未被选择,为1表示按钮被选择,为2表示按钮处于不确定状态(仅用于复选框)。
           UINT IsDlgButtonChecked(int nIDButton) const;
          // 用来选择组中的一个单选按钮。参数nIDFirstButton指定了组中第一个按钮的ID,nIDLastButton指定了组中最后一个按钮的ID,nIDCheckButton指定了要选择的按钮的ID。
           void CheckRadioButton(int nIDFirstButton,int nIDLastButton,int nIDCheckButton);
          //用来获得一组单选按钮中被选中按钮的ID。参数nIDFirstButton 说明了组中第一个按钮的ID,nIDLastButton 说明了组中最后一个按钮的ID。
           int GetCheckedRadioButton(int nIDFirstButton, int nIDLastButton);
    

    另外,CWnd类的成员函数GetWindowText()、SetWindowText()等也可以用来获取或设置按钮中显示的文本。
    关于按钮控件Button、Radio Button和Check Box的使用基础就介绍到此。

    05.按钮控件实例(借鉴)

    公司电脑不能截图,所以写出来也没法上传,所以就直接借用网上的资源吧。

    1. 创建一个基于对话框的MFC工程,名称设为“Example23”。
      .

    2. 在自动生成的主对话框IDD_EXAMPLE23_DIALOG的模板中,删除“TODO: Place dialog controls here.”静态文本框,添加两个Group Box,属性Caption分别改为“网站类型”、“网站”。

    3. 在Group Box“网站类型”中加入三个Radio Button,Caption分别设为“门户”、“论坛”和“博客”,ID分别设为IDC_PORTAL_RADIO、IDC_FORUM_RADIO和IDC_BLOG_RADIO。

    4. 在Group Box“网站”中加入六个Check Box,Caption分别设为“鸡啄米”、“新浪”、“天涯论坛”、“韩寒博客”、“网易”和“凤凰网论坛”,ID分别设为IDC_CHECK1、IDC_CHECK2、IDC_CHECK3、IDC_CHECK4、IDC_CHECK5和IDC_CHECK6。然后为每个复选框添加CButton类型的变量m_check1、m_check2、m_check3、m_check4、m_check5和m_check6。

    5. 在两个Group Box下面,添加一个静态文本框和一个编辑框。静态文本框的Caption设为“选择的网站:”。编辑框的ID设为IDC_WEBSITE_SEL_EDIT,属性Read Only改为True,使此编辑框为只读状态,不允许用户编辑。

    6. 将“OK”按钮的Caption修改为“确定”,“Cancel”按钮的Caption修改为“退出”。到此,对话框模板就修改好了,如下图:
      在这里插入图片描述

    7. 为“门户”、“论坛”和“博客”三个单选按钮分别添加点击消息的消息处理函数CExample23Dlg::OnBnClickedPortalRadio()、CExample23Dlg::OnBnClickedForumRadio()和CExample23Dlg::OnBnClickedBlogRadio()。

    说明:
    在某个单选按钮被点击之后,我们可以先将六个网站复选框都禁用且置为非选中状态,而后将选择的网站类型对应的网站复选框激活。为了代码复用,我们将置所有复选框为禁用且非选中状态的操作写到一个函数里,此函数为CExample23Dlg::InitAllCheckBoxStatus(),然后就可以在三个单选按钮的消息处理函数中调用InitAllCheckBoxStatus(),实现复选框状态的初始化。
    三个消息处理函数及InitAllCheckBoxStatus()函数的实现如下:

    C++代码

    void CExample23Dlg::OnBnClickedPortalRadio()   
    {   
        // TODO: Add your control notification handler code here   
        // 如果选择了“门户”单选按钮,则激活复选框“新浪”和“网易”,其他复选框禁用并非选中   
        InitAllCheckBoxStatus();   
        m_check2.EnableWindow(TRUE);   
        m_check5.EnableWindow(TRUE);   
    }   
      
      
    void CExample23Dlg::OnBnClickedForumRadio()   
    {   
        // TODO: Add your control notification handler code here   
        // 如果选择了“论坛”单选按钮,则激活复选框“天涯论坛”和“凤凰网论坛”,其他复选框禁用并非选中   
        InitAllCheckBoxStatus();   
        m_check3.EnableWindow(TRUE);   
        m_check6.EnableWindow(TRUE);   
    }   
      
      
    void CExample23Dlg::OnBnClickedBlogRadio()   
    {   
        // TODO: Add your control notification handler code here   
        // 如果选择了“博客”单选按钮,则激活复选框“鸡啄米”和“韩寒博客”,其他复选框禁用并非选中   
        InitAllCheckBoxStatus();   
        m_check1.EnableWindow(TRUE);   
        m_check4.EnableWindow(TRUE);   
    }   
      
    // 初始化所有复选框的状态,即全部禁用,全部非选中   
    void CExample23Dlg::InitAllCheckBoxStatus()   
    {   
        // 全部禁用   
        m_check1.EnableWindow(FALSE);   
        m_check2.EnableWindow(FALSE);   
        m_check3.EnableWindow(FALSE);   
        m_check4.EnableWindow(FALSE);   
        m_check5.EnableWindow(FALSE);   
        m_check6.EnableWindow(FALSE);   
      
        // 全部非选中   
        m_check1.SetCheck(0);   
        m_check2.SetCheck(0);   
        m_check3.SetCheck(0);   
        m_check4.SetCheck(0);   
        m_check5.SetCheck(0);   
        m_check6.SetCheck(0);   
    }  
    
    1. 程序运行后,我们希望网站类型默认选择为“门户”,则修改对话框初始化函数CExample23Dlg::OnInitDialog()为:

    C++代码

    BOOL CExample23Dlg::OnInitDialog()   
    {   
        CDialogEx::OnInitDialog();   
      
        // Add "About..." menu item to system menu.   
      
        // IDM_ABOUTBOX must be in the system command range.   
        ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);   
        ASSERT(IDM_ABOUTBOX < 0xF000);   
      
        CMenu* pSysMenu = GetSystemMenu(FALSE);   
        if (pSysMenu != NULL)   
        {   
            BOOL bNameValid;   
            CString strAboutMenu;   
            bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);   
            ASSERT(bNameValid);   
            if (!strAboutMenu.IsEmpty())   
            {   
                pSysMenu->AppendMenu(MF_SEPARATOR);   
                pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);   
            }   
        }   
      
        // Set the icon for this dialog.  The framework does this automatically   
        //  when the application's main window is not a dialog   
        SetIcon(m_hIcon, TRUE);         // Set big icon   
        SetIcon(m_hIcon, FALSE);        // Set small icon   
      
        // TODO: Add extra initialization here   
        // 默认选中“门户”单选按钮   
        CheckDlgButton(IDC_PORTAL_RADIO, 1);   
        OnBnClickedPortalRadio();   
      
        return TRUE;  // return TRUE  unless you set the focus to a control   
    }  
           9. 点击“确定”后,将选择的网站名字显示到编辑框中,那么需要修改“确定”按钮(原来的OK按钮)的消息处理函数CExample23Dlg::OnBnClickedOk()如下:
    C++代码
    void CExample23Dlg::OnBnClickedOk()   
    {   
        // TODO: Add your control notification handler code here   
        CString strWebsiteSel;         // 选择的网站   
      
        // 若选中“鸡啄米”则将其加入结果字符串   
        if (1 == m_check1.GetCheck())   
        {   
            strWebsiteSel += _T("鸡啄米 ");   
        }   
        // 若选中“新浪”则将其加入结果字符串   
        if (1 == m_check2.GetCheck())   
        {   
            strWebsiteSel += _T("新浪 ");   
        }   
        // 若选中“天涯论坛”则将其加入结果字符串   
        if (1 == m_check3.GetCheck())   
        {   
            strWebsiteSel += _T("天涯论坛 ");   
        }   
        // 若选中“韩寒博客”则将其加入结果字符串   
        if (1 == m_check4.GetCheck())   
        {   
            strWebsiteSel += _T("韩寒博客 ");   
        }   
        // 若选中“网易”则将其加入结果字符串   
        if (1 == m_check5.GetCheck())   
        {   
            strWebsiteSel += _T("网易 ");   
        }   
        // 若选中“凤凰网论坛”则将其加入结果字符串   
        if (1 == m_check6.GetCheck())   
        {   
            strWebsiteSel += _T("凤凰网论坛 ");   
        }   
      
        // 将结果字符串显示于“选择的网站”后的编辑框中   
        SetDlgItemText(IDC_WEBSITE_SEL_EDIT, strWebsiteSel);   
      
        // 为了避免点“确定”后对话框退出,将OnOk注掉   
        //CDialogEx::OnOK();   
    }  
    
    1. 到此程序编写完成。运行程序弹出结果对话框,选择网站后界面如下图:
      在这里插入图片描述
      按钮控件的内容就这些了。掌握了按钮控件的基本用法,又动手编写了这个实例后,相信大家对按钮控件已经很熟悉了。欢迎大家继续来学习交流。

    按钮框就讲到这里,主要是今天工作用到了复选框,复习的时候就直接写一篇博客。
    借鉴博客:http://www.jizhuomi.com/software/182.html
    版权声明:转载请注明出处
    谢谢大家的支持,欢迎大家一起交流学习

    展开全文
  • 使用HTML按钮调用JavaScript函数

    千次阅读 2021-06-09 03:55:09
    使用HTML按钮调用JavaScript函数...这是链接:[http://projectpath.ideapeoplesite.com/bendel/toolscalculators.html]点击左下的容量标签。 如果值未更改,则按钮应生成警报,如果输入值,则应生成图表。fmz aske...
  • 常用的子窗口控件有按钮BUTTON、组合框COMBOBOX、编辑框EDIT、列表框LISTBOX、静态框STATIC、滚动条SCROLLBAR等类型。消息为WM_COMMAND/WM_CTLCOLORBTN 启用/禁用窗口: EnableWindow 设置指定窗口的显示状态: ...
  • 问题:Java语言只允许单继承,指每个类只能有一个 ( )更多相关问题用List命令显示表文件中的当前记录的命令格式是________。WHERE子句的条件表达式中,可以匹配0个到多个字符的通配符是( )。在Visual FoxPro中,每一...
  • [审核]App审核(第三登录)

    千次阅读 2021-01-08 10:13:55
    具体来说,要让审核人员在任何情况下看到的第三登录都是正常可用的,可以选择在用户未安装第三软件时隐藏掉第三登录按钮,也可以在用户未安装第三应用时让用户从您的应用程序内使用微信登录(Safari View ...
  • 需要通过以下方法进行修改: (1)打开chrome://flags网页,进行如下设置: 把Disabled为Enabled,然后在方框中输入你想要开启权限的网址,记住,一定要加上http://。 (2)之后页面下方会弹出一栏提示,点击...
  • 本文我们将讲解允许模拟位置在Android M下的坑。做地图类应用的同学应该都知道为了避免软件模拟位置影响正常流程的进行我们一般都会判断用户手机是否打开了模拟位置设置,若打开了则终止用户流程,提醒用户关闭模拟...
  • JAVA实现QQ登录、注册、修改密码等功能(美化版)

    万次阅读 多人点赞 2022-05-12 10:26:24
    允许用户通过点击给定标题或图标的选项卡,在一组组件之间进行切换显示 JCheckBox 复选框,是否被选中 JPanel相当于将整个窗体划分成几个面板,然后在面板中使用布局管理器(管理按钮的布局)一个窗口只能有一个...
  • 项目需求:用vue在el-table中添加每一行的操作,需要在操作时对按钮进行禁用操作,在返回参数后根据参数判断是否可以解除禁用,并将参数实时更新到页面上 解决方案: 1、第一种解决方案 我们可以将禁用按钮定义...
  • 自定义形状按钮的实现

    千次阅读 2017-11-30 09:29:07
    其实这只是一个很小很小的知识点,却有很多人不会去考虑,所以就遇到了这样的情况偶然有一天,朋友给了我一套产品原型,他说叫我帮他写几个按钮,很简单的按钮,我当时感觉有坑,但是也没有想太多,想着本来这段时间有点闲,...
  • 如何在360浏览器中设置允许所有网站跟踪我的地理位置腾讯视频/爱奇艺/优酷/外卖 充值4折起我们在使用360浏览器的时候,想要设置允许所有的网站跟踪我的位置,该怎么操作呢?今天就跟大家介绍一下如何在360浏览器中...
  • 关于新版谷歌Chrome允许flash的选项已不再保存和添加了 新版谷歌Chrome允许flash的选项已不再保存和添加了(已解决) 转自: [link] http://www.mz6.net/news/android/12258.html. 在博客上找到的方式并不全,这里找到...
  • 或者,也许您不小心允许了第三软件的安装,并希望快速找到这些文件。 不管是什么原因,都非常容易根据其时间戳查找文件。 了解文件时间戳 (Understanding File Time Stamps ) Every file on a Windows system has...
  • 根据应用启动时获取的版本信息来决定显示还是隐藏第三授权按钮和用户名密码登录方式。 由于现在禁止app自己弹出版本更新的提示框,那么绝大多数应用都需要版本更新的,甚至在强制更新场景下,以前的版本接口或...
  • Windows 10现在允许您重新映射Xbox One控制器的按钮,就像您可以重新映射Xbox One控制台上的按钮一样。 此功能是Xbox附件应用程序的一部分,默认情况下未安装。 局限性 (Limitations) Unfortunately, this new ...
  • 第一步,请大家打开电脑,然后选择屏幕左下的[win]图标按钮.2. 第二步,接下来,请选择屏幕中的[设置]选项.3. 第三步,如图所示,请大家选择屏幕中的[轻松使用]这一项.4. 第四步,接下来,请选择屏幕左边的[光标和指针]这...
  • 需求背景: 在软件里加入第三登录小窗进行软件的登录。 方案 方案一 第一个方案决定使用 iframe 加载第三 web ...1、在主进程里需要允许主窗口使用 webviewTag: const win = new Browser({ ..., webPreferences: {
  • 登录等第三认证-outh2原理与分析

    千次阅读 2021-11-22 22:58:47
    网易已经拿到授权码code,但这个code 只能表明,用户允许网易从微信上获取该用户的数据,如果其他平台拿这个code去微信访问用户数据一定会被拒绝,因为任何平台都可以持有code,微信并不知道code持有就是谁。...
  • &emsp修改注册表后,一般需要重启才能生效,当然你也可以做到不重启就生效,同时按下Ctrl+Shift+Esc组合键,在弹出的Windows任务列表中,选择Explore,单击“结束进程”按钮,接着在弹出的警告对话框中单击“是”,...
  • 安卓12 将禁止第三分享 App

    千次阅读 多人点赞 2021-05-29 13:31:47
    5 月 28 日消息 许多 Android App 都支持分享功能,当用户点击分享按钮,如果没有自行实现分享功能,就会调用 Android 系统的分享功能。 此外,市面上也有许多第三分享 App,在功能上更加易用,可以用来替代 ...
  • 微信第三平台开发错误码集合 PHP static $codes = [ "-1" => "系统繁忙", "0" => "请求成功", "40001" => "获取access_token时Secret错误,或者access_token无效", "40002" => "不合法的凭证类型...
  • 定制按钮及CALayer

    千次阅读 2011-12-01 15:56:36
    by Matt Long 原文地址: ...因此程序员们在用IB设定按钮的Background属性时,不得不借助图形工具以创建按钮的背景图。这也是不错的解决方案,但正如帖子中所述,
  • 第三支付接口开发原理

    千次阅读 2019-02-15 18:23:33
    1.什么是第三支付  所谓第三支付,就是一些和各大银行签约、并具备一定实力和信誉保障的第三独立机构提供的交易支持平台。在通过第三支付平台的交易中,买方选购商品后,使用第三平台提供的账户进行货款...
  • Burp suite按钮简介和简单爬虫

    千次阅读 2019-04-14 16:55:43
    这一节我学会了一些简单的burpsuite的按钮,知道了它们的含义和一些作用, 还有通过一些视频和一些博客学会简单的spider爬虫。 1.Target(目标)——显示目标目录结构的的一个功能 2.Proxy(代理)——拦截HTTP/S的...
  • React Native之常用第三

    万次阅读 2017-01-01 21:49:38
    因此在很多深层次上还需要结合原生app做一定的兼容,还有就是现在好多控件,如Android中已是系统的控件的sidemenu、checkbox、gridview等,这些在react native中 系统是没有给我们提供的,这时候就借助了第三开源...
  • 第三网站/系统使用微信扫码登录

    千次阅读 2020-07-15 16:47:11
    第三发起微信授权登录请求,微信用户允许授权第三应用后,微信会拉起应用或重定向到第三网站,并且带上授权临时票据code参数; 通过code参数加上AppID和AppSecret等,通过API换取access_token; 通过access_...
  • iOS第三库 --- IQKeyboardManager

    千次阅读 2020-07-10 14:37:57
    允许你定制键盘距离UITextField或UITextView的距离,在键盘上面的UIToolBar添加前一个/后一个/done按钮,当用户在文本框之间切换时播放声音。 三、版本要求 系统版本要求 Swift Versions Support 四、安装说明 1、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 66,430
精华内容 26,572
热门标签
关键字:

允许改方按钮