当前位置: 首页 > news >正文

mfc 编辑框限制

DoDataExchange由框架调用,作用是交互并且验证对话框数据,主要由(DDX) 和 (DDV)宏实现。 永远不要直接调用这个函数,而是通过UpdateData(TRUE/FALSE)实现控件与变量之间值的传递。 

当然你也可以不使用DoDataExchange而完成控件与变量之间值的传递,如:通过GetWindowText和SetWindowText等等函数完成String变量与Edit控件之间的数据交互。

DDX/DDV

通过使用ClassWizard向对话类添加成员变量,你可以利用ClassWizard所提供的高效特征,为对话数据交换和对话数据验证自动生成源代码,也就是人们所熟知的DDX/DDV。

数据交换和验证仅仅应用于为之选定了Value类别的成员变量。也就是CString,BOOL,数字,COleDateTime或COLeCurrency。

对话框数据交换负责数据在控件中的进出。当对话首次出现的时候,每个控件窗口自动用相应的成员变量的值进行初始化。当用户通过单击OK按钮,或通过按Enter键关闭对话的时候,该控件无论是包含哪一个值或文本,都将被复制回该变量。

对话数据验证可以确保值落在规定的限制之内。交换和验证机制都是由MFC框架提供的。每个函数都有一个前缀DDX_或DDV_,来把它作为数据交换或数据验证函数来标识。

1. 对话数据交换(DDX)    常见的对话数据交换函数

(1)交换函数:DDX_CBIndex,获得/设置的数据类型:int,应用于控件:Combobox
(2)交换函数:DDX_CBString,获得/设置的数据类型:Cstring,应用于控件:Combobox
(3)交换函数:DDX_CBStringExact, 获得/设置的数据类型:Cstring,应用于控件:Combobox
(4)交换函数:DDX_Check, 获得/设置的数据类型:intCheck,应用于控件:box
(5)交换函数:DDX_DateTimeCtrl, 获得/设置的数据类型:Ctime,应用于控件:Datetimepicker
(6)交换函数:DDX_LBIndex,获得/设置的数据类型:int,应用于控件:List box
(7)交换函数:DDX_LBString,获得/设置的数据类型:CString,应用于控件:Listbox
(8)交换函数:DDX_LBStringExact,获得/设置的数据类型:CString,应用于控件:List box
(9)交换函数:DDX_MonthCalCtrl, 获得/设置的数据类型:Ctime,应用于控件:Month calendar
(10)交换函数:DDX_Radio获得/设置的数据类型:int,应用于控件:Radio button
(11)交换函数:DDX_Scroll, 获得/设置的数据类型:int, 应用于控件:Scroll bar
(12)交换函数:DDX_Text,获得/设置的数据类型:CString  or numerical(BYTE,short,int,UINT,long,etc.),应用于控件:Edit control

在所有的数据交换函数之中,该函数是独一无二的,它只应用于一组控件,而不是一个控件。DDX_Radio返回一个int值用来指示用户打开了组中的哪个按钮:0代表组中的第一个按钮,1代表第二个按钮,以此类推。值-1的意思是小组中的所有按钮都是清除的。你可以调用DDX_Radio来确定单个单选按钮的状态(假如它是组中的唯一一个按钮)。在这种情况下,返回值0的意思是按钮是打开的,值-1意为按钮是关闭的。

 建立一个单选按钮通常在对话编辑器中进行,我们一会儿就能看到。

MFC提供了大量的对话数据交换函数,它们可以在对话类中的控件成员变量之间移动数据。除了所列的常见函数之外,还有用于记录集数据和由ActiveX控件返回的数据的特殊交换函数。DDX_Control函数可以为几种不同类型的控件传输数据  ,例如Animate和IPAddress。

2.对话数据验证(DDV)对话数据验证函数

它们仅仅应用于接受用于从键盘输入数据的控件成员变量。换言之,就是编辑控件和组合框。
对话数据验证函数
(1)DDV_MinMaxByte 指定限制范围内的一个BYTE值。
(2)DDV_MinMaxInt 指定限制范围内的一个int值。
(3)DDV_MinMaxUInt 指定限制范围内的一个UNIT值。
(4)DDV_MinMaxLong 指定限制范围内的一个long值。
(5)DDV_MinMaxDWord 指定限制范围内的一个DWORD值。
(6)DDV_MinMaxFloat 指定限制范围内的一个float值。
(7)DDV_MinMaxDouble 指定限制范围内的一个double值。
(8)DDV_MaxCharsCString字符串的长度不能超过指定的最大长度。
    当你为编辑控件或组合框添加成员变量,然后在Member Variable选项卡中的Control IDs框中选择控件的时候,两个提示之一将会出现在该选项卡的底部。究竟出现哪一个提示取决于变量所具有的是数字数据,还是文字数据;在任一种情况下,都要输入用于验证的变量限制值。
    除了一个对话数据验证函数之外,所有函数都监视数值数据,以确保由用户输入的值落在指定的上下限之间。
    例外是DDV_MaxChars函数,它用来验证键入到编辑控件或组合框中的字符数不超过给定的最大值。与交换函数不同,验证函数仅仅在对话关闭的时候起作用,而不在它刚出现的时候起作用。
    

如果输入到一个控件的值落到了指定的限制之外,那么,该控件的验证函数将显示一个消息框,以通知用户出了问题。当消息框被关闭的时候,出问题的控件将具有一个焦点,提示用户重新输入数据。除非所有的数据验证函数都满足了,否则,用户不能够通过单击OK来关闭对话。

相关文章:

mfc 编辑框限制

DoDataExchange由框架调用,作用是交互并且验证对话框数据,主要由(DDX) 和 (DDV)宏实现。 永远不要直接调用这个函数,而是通过UpdateData(TRUE/FALSE)实现控件与变量之间值的传递。 当然你也可以不使用DoDataExchange而完成控件与变量之间值…...

web基础与tomcat环境部署

一. 简述静态网页和动态网页的区别。 请求响应信息,发给客户端进行处理,由浏览器进行解析,显示的页面称为静态页面。处理文件类型如.html、jpg、.gif、.mp4、.swf、.avi、.wmv、.flv等 请求响应信息,发给事务端进行处理&#xff0…...

Go 变量

在Go中,有不同的变量类型,例如: int 存储整数(整数),例如123或-123float32 存储浮点数字,带小数,例如19.99或-19.99string - 存储文本,例如“ Hello World”。字符串值用…...

【雷达通信】非相干多视处理(CSA)(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

73. 矩阵置零

题目链接:力扣 解题思路: 方法一:比较容易想到的方向,使用两个数组row和col保存有0的行或者列,然后将有0的那一行或那一列的所有元素都设置为0 AC代码 class Solution {public void setZeroes(int[][] matrix) {in…...

‘大数据技术与应用’和‘数据科学与大数据技术’有什么区别

一、侧重点不同 ‘大数据技术与应用’主要侧重于大数据的存储、处理和分析技术、包括数据挖掘、机器学习、数据仓库、分布式计算等方面的研究,旨在开发大数据相关的应用程序和系统,以满足商业和企业的需求。 ‘数据科学与大数据技术’则更加注重数据本…...

没有jsoup,rust怎么解析html呢?

在 Rust 中,你可以使用各种库来解析网页内容。一个常用的库是 reqwest ,它提供了一个简单的方式来发送 HTTP 请求并获取网页内容。另外,你可以使用 scraper 或 select 等库来解析 HTML 或 XML 格式的网页内容。 下面是一个使用 reqwest 和 sc…...

【C高级】Day4 shell脚本 排序

1. 整理思维导图 2. 写一个函数&#xff0c;获取用户的uid和gid并使用变量接收 #!/bin/bash function getid() {uidid -ugidid -g }getid echo "uid$uid" echo "gid$gid"3. 整理冒泡排序、选择排序和快速排序的代码 #include <myhead.h>void Inp…...

大模型开发(十六):从0到1构建一个高度自动化的AI项目开发流程(中)

全文共1w余字&#xff0c;预计阅读时间约40~60分钟 | 满满干货(附代码)&#xff0c;建议收藏&#xff01; 本文目标&#xff1a;通过LtM提示流程实现自动构建符合要求的函数&#xff0c;并通过实验逐步完整测试code_generate函数功能。 代码下载点这里 一、介绍 此篇文章为…...

【深入了解pytorch】PyTorch强化学习:强化学习的基本概念、马尔可夫决策过程(MDP)和常见的强化学习算法

【深入了解pytorch】PyTorch强化学习:强化学习的基本概念、马尔可夫决策过程(MDP)和常见的强化学习算法 PyTorch强化学习:介绍强化学习的基本概念、马尔可夫决策过程(MDP)和常见的强化学习算法引言强化学习的基本概念状态(State)动作(Action)奖励(Reward)策略(Pol…...

尚硅谷张天禹Vue2+Vue3笔记(待续)

简介 什么是Vue&#xff1f; 一套用于构建用户界面的渐进式JavaScript框架。将数据转变成用户可看到的界面。 什么是渐进式&#xff1f; Vue可以自底向上逐层的应用 简单应用:只需一个轻量小巧的核心库 复杂应用:可以引入各式各样的Vue插件 Vue的特点是什么&#xff1f; 1.采…...

深度学习(35)—— StarGAN(2)

深度学习&#xff08;34&#xff09;—— StarGAN&#xff08;2&#xff09; 完整项目在这里&#xff1a;欢迎造访 文章目录 深度学习&#xff08;34&#xff09;—— StarGAN&#xff08;2&#xff09;1. build model&#xff08;1&#xff09;generator&#xff08;2&#…...

连续四年入选!三项荣耀!博云科技强势上榜Gartner ICT技术成熟度曲线

日&#xff0c;全球知名咨询公司Gartner发布了2023年度的《中国ICT技术成熟度曲线》&#xff08;《Hype Cycle for ICT in China, 2023》&#xff0c;以下简称“报告”&#xff09;。令人瞩目的是&#xff0c;博云科技在报告中荣获三项殊荣&#xff0c;入选云原生计算&#xff…...

Docker实战-操作Docker容器实战(一)

导语   在之前的分享中&#xff0c;我们介绍了关于如何去操作Docker镜像&#xff0c;下面我们来看看如何去操作容器。 简单来讲&#xff0c;容器是镜像运行的一个实例&#xff0c;与镜像不同的是镜像只能作为一个静态文件进行读取&#xff0c;而容器是可以在运行时进行写入操…...

c#设计模式-行为型模式 之 观察者模式

定义&#xff1a; 又被称为发布-订阅&#xff08;Publish/Subscribe&#xff09;模式&#xff0c;它定义了一种一对多的依赖关系&#xff0c;让多个观察者 对象同时监听某一个主题对象。这个主题对象在状态变化时&#xff0c;会通知所有的观察者对象&#xff0c;使他们能够自 …...

开窗积累之学习更新版

1. 开窗使用1之 count range between current row and current row 将相同排序字段的值进行函数计算 selectsku_id,substr(create_date,1,7) date_month,order_id,create_date,sku_num*price,sum(sku_num*price) over (partition by sku_id order by substr(create_date,1,7)…...

ffplay简介

本文为相关课程的学习记录&#xff0c;相关分析均来源于课程的讲解&#xff0c;主要学习音视频相关的操作&#xff0c;对字幕的处理不做分析 ffplay播放器的意义 ffplay.c是FFmpeg源码⾃带的播放器&#xff0c;调⽤FFmpeg和SDL API实现⼀个⾮常有⽤的播放器。 ffplay实现了播…...

mysql之limit语句详解

一、介绍 LIMIT是MySQL内置函数&#xff0c;其作用是用于限制查询结果的条数。 二、使用 1. 语法格式 LIMIT [位置偏移量,] 行数 其中&#xff0c;中括号里面的参数是可选参数&#xff0c;位置偏移量是指MySQL查询分析器要从哪一行开始显示&#xff0c;索引值从0开始&#xff…...

4.while循环

1、while语句的语法结构如下&#xff1a; while语句可以在条件表达式为真的前提下&#xff0c;循环执行指定的一段代码&#xff0c;直到表达式不为真时结束循环。 1.1while语法结构 while(条件表达式){// 循环体} 执行思路&#xff1a; 1、执行思路 当条件表达式结果为tru…...

【雕爷学编程】 MicroPython动手做(35)——体验小游戏2

知识点&#xff1a;什么是掌控板&#xff1f; 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片&#xff0c;支持WiFi和蓝牙双模通信&#xff0c;可作为物联网节点&#xff0c;实现物联网应用。同时掌控板上集成了OLED…...

百川2-13B-4bits量化版温度参数研究:OpenClaw任务稳定性影响

百川2-13B-4bits量化版温度参数研究&#xff1a;OpenClaw任务稳定性影响 1. 温度参数与自动化任务的微妙关系 上周我在调试OpenClaw自动处理周报的任务时&#xff0c;遇到了一个奇怪现象&#xff1a;同样的提示词&#xff0c;有时候生成的周报结构清晰、重点突出&#xff0c;…...

3个步骤实现微信消息永久保存,高效保护重要沟通记录

3个步骤实现微信消息永久保存&#xff0c;高效保护重要沟通记录 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁&#xff08;我已经看到了&#xff0c;撤回也没用了&#xff09; 项目地址: https://gitcode.com/…...

Qwen All-in-One部署实战:极简依赖,快速搭建AI应用

Qwen All-in-One部署实战&#xff1a;极简依赖&#xff0c;快速搭建AI应用 1. 引言&#xff1a;轻量级AI服务的新选择 在当今AI应用遍地开花的时代&#xff0c;开发者们常常面临一个两难选择&#xff1a;要么使用功能强大但资源消耗巨大的模型&#xff0c;要么选择轻量级但功…...

OptiScaler高效配置全攻略:多显卡上采样技术实用指南

OptiScaler高效配置全攻略&#xff1a;多显卡上采样技术实用指南 【免费下载链接】OptiScaler DLSS replacement for AMD/Intel/Nvidia cards with multiple upscalers (XeSS/FSR2/DLSS) 项目地址: https://gitcode.com/GitHub_Trending/op/OptiScaler OptiScaler是一款…...

如何快速掌握PathOfBuilding:流放之路终极角色构建规划神器

如何快速掌握PathOfBuilding&#xff1a;流放之路终极角色构建规划神器 【免费下载链接】PathOfBuilding Offline build planner for Path of Exile. 项目地址: https://gitcode.com/GitHub_Trending/pa/PathOfBuilding 还在为《流放之路》复杂的天赋树和装备搭配而头疼…...

赋能工业智能化转型实战案例解析

随着“工业4.0”和智能制造的深入推进&#xff0c;工业生产现场正经历着从“自动化”向“智能化”的深刻转型。在这一进程中&#xff0c;传统的机器视觉&#xff08;MV&#xff09;虽在速度与精度上表现优异&#xff0c;但面对柔性制造、非结构化环境以及复杂多变的任务需求时&…...

Swin Transformer部署避坑指南:从环境搭建到性能翻倍的实战手册

Swin Transformer部署避坑指南&#xff1a;从环境搭建到性能翻倍的实战手册 【免费下载链接】Swin-Transformer This is an official implementation for "Swin Transformer: Hierarchical Vision Transformer using Shifted Windows". 项目地址: https://gitcode.…...

SenseVoice-small部署教程:国产昇腾AI芯片Ascend CANN适配进展

SenseVoice-small部署教程&#xff1a;国产昇腾AI芯片Ascend CANN适配进展 1. 引言&#xff1a;当语音识别遇上国产算力 想象一下&#xff0c;你正在开发一款面向医疗场景的离线语音助手&#xff0c;需要实时将医生的口述病历转成文字。数据隐私要求极高&#xff0c;不能上传…...

s2-pro语音合成多场景应用:车载导航语音、电梯播报、展馆导览系统集成

s2-pro语音合成多场景应用&#xff1a;车载导航语音、电梯播报、展馆导览系统集成 1. 专业语音合成工具s2-pro简介 s2-pro是Fish Audio开源的专业级语音合成模型镜像&#xff0c;它能够将文本内容转换为自然流畅的语音输出。这个工具特别适合需要高质量语音合成的各种应用场景…...

别再让Bug溜走!手把手教你用SVA在UVM里给芯片验证加个“监控探头”

芯片验证工程师的"电子眼"&#xff1a;用SVA在UVM中构建智能监控体系 想象一下&#xff0c;你正在负责一个复杂SoC芯片的验证工作。随着设计规模不断扩大&#xff0c;传统的测试方法就像在黑暗的房间里寻找掉落的针——效率低下且容易遗漏关键问题。这时&#xff0c;…...