MFC编程之控件的禁用与激活

原创 2016年05月31日 15:40:30

在写3DES文件加密的时候,我希望能让用户的输入符合标准的时候,能执行加密的功能,或者输入的文件类型是ept才能解密,于是便找到了控件禁用语激活

首先可以看到,我的加解密按钮设置为禁用状态
这里写图片描述

在我的程序里,如果输入两个密钥都是八字节的时候,
如果输入的文件是ept类型的,则可以加解密,如果不是则只能加密
这里写图片描述

注释的地方也可以用,这是两种不同的方法,
第一种是直接用GetDlgItem(控件ID)获取窗口句柄,然后调用EnableWindow()方法
第二种是给控件关联一个控件变量,通过空间变量的EnableWindow()方法来激活和禁用控件
本文后面附上EnableWindow()方法的百度百科解释


这里写图片描述

上图可以看到,在输入的密钥不规范的时候,加解密控件都是禁用状态
这里写图片描述

当两个密钥都是八字节时,因为此时文件路径未初始化,默认字符串不是ept文件,所以只有加密按钮被激活
这里写图片描述

当输入的文件是ept类型时,加解密按钮都被激活,一旦某个密钥长度被改了,则密钥输入框会被初始化为初始化字符串,加解密按钮都会被禁用
这里写图片描述

可以看到,控件的激活与禁用很简单,但是在某些程序中却可以得到更好的体验

附:
EnableWindow()函数
Windows API函数。该函数允许/禁止指定的窗口或控件接受鼠标和键盘的输入,当输入被禁止时,窗口不响应鼠标和按键的输入,输入允许时,窗口接受所有的输入。

函数功能
该函数允许/禁止指定的窗口或控件接受鼠标和键盘的输入,当输入被禁止时,窗口不响应鼠标和按键的输入,输入允许时,窗口接受所有的输入。

函数原型
BOOL EnableWindow(HWND hWnd,BOOL bEnable);
WINUSERAPI BOOL WINAPI
EnableWindow(
_In_HWNDhWnd,
_In_BOOLbEnable);

参数
hWnd:被允许/禁止的窗口句柄
bEnable:定义窗口是被允许,还是被禁止。若该参数为TRUE,则窗口被允许。若该参数为FALSE,则窗口被禁止。

返回值
在 EnableWindow 成员函数调用之前,指示状态。 如果窗口此前已禁用,则返回值是非零。 返回值是0,则窗口先前启用或错误。若想获得更多的错误信息,可调用GetLastError函数。

版权声明:本文为博主原创文章,未经博主允许不得转载。

MFC编程之控件的禁用与激活

MFC控件的激活与禁用
  • enjoy5512
  • enjoy5512
  • 2016年05月31日 15:40
  • 1209

MFC控件积累——CDockablePane控件

1.控制多个CDockablePane停靠在一起时,先停靠一个窗口: DockPane(&m_dockPane1); //使用CFrameWndEx::DockPane() void DockP...
  • u011519892
  • u011519892
  • 2014年01月02日 20:30
  • 1852

MFC窗体去边框、置顶、全屏、激活

静态移除长提边框很简单,直接设置“Border”属性为"none"即可 "Maximize Box", “Minimize Box” 设置是否显示 最大化/最小化按钮; “System Menu”...
  • jiangqin115
  • jiangqin115
  • 2015年07月04日 11:52
  • 2355

VS2013/MFC编程入门之六(对话框:为对话框添加控件)

创建对话框资源需要创建对话框模板、修改对话框属性、为对话框添加各种控件等步骤,前面一讲中已经讲了创建对话框模板和修改对话框属性,本节继续讲如何为对话框添加控件。        上一讲中创建了一个...
  • zhaoyinhui0802
  • zhaoyinhui0802
  • 2016年11月23日 17:07
  • 5302

MFC对话框编程之控件删除

有添加就会有删除,直接将控件从设计界面delete????肯定是不行的 这里以删除编辑框为例 一、对按钮右键,选择类向导,并找到按钮对应的处理函数,点击事件函数后,点击右边的删除处理程序  ...
  • yao1373446012
  • yao1373446012
  • 2017年12月16日 19:56
  • 40

VS2010/MFC编程入门之二十一(常用控件:编辑框Edit Control)

VS2010/MFC编程入门之二十一(常用控件:编辑框Edit Control) 分类标签: 编程入门  VS2010  VC++  MFC          鸡啄米上一节...
  • u013362499
  • u013362499
  • 2015年04月21日 21:16
  • 604

VS2013/MFC编程入门之八(对话框:为控件添加消息处理函数)

创建对话框类和添加控件变量在上一讲中已经讲过,这一讲的主要内容是如何为控件添加消息处理函数。        MFC为对话框和控件等定义了诸多消息,我们对它们操作时会触发消息,这些消息最终由消息处...
  • zhaoyinhui0802
  • zhaoyinhui0802
  • 2016年11月24日 21:09
  • 3661

VS2010/MFC编程之树型控件的创建及CTreeCtrl类的成员函数和实例

树形控件的创建        MFC为树形控件提供了CTreeCtrl类,它封装了树形控件的所有操作。        树形控件的创建也是有两种方式,一种是在对话框模板中直接拖入Tree C...
  • dearm23
  • dearm23
  • 2015年09月24日 21:17
  • 515

VS2010/MFC编程入门之八(对话框:为控件添加消息处理函数)

创建对话框类和添加控件变量在上一讲中已经讲过,这一讲的主要内容是如何为控件添加消息处理函数。        MFC为对话框和控件等定义了诸多消息,我们对它们操作时会触发消息,这些消息最终由消息处理函...
  • phenixyf
  • phenixyf
  • 2014年12月05日 09:44
  • 1008

VC ++ MFC编程--ListCtrl控件的用法

ListCtrl在工作中,常常用到,也常常看到大家发帖问怎么用这个控件,故总结了一下自己的使用经验,以供参考使用。 先注明一下,这里,我们用m_listctrl来表示一个CListCtrl的类对象,...
  • wodesanmaoqian
  • wodesanmaoqian
  • 2011年10月27日 17:52
  • 2419
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MFC编程之控件的禁用与激活
举报原因:
原因补充:

(最多只允许输入30个字)