UpdateData()用法

                                                                                          UpdateData()用法

一、总结UpdateData()函数

UpdateData(true);//用于将屏幕上控件中的数据交换到变量中。

UpdateData(false);//用于将数据在屏幕中对应控件中显示出来。

       当使用ClassWizard建立控件和变量之间的联系后:当修改了变量的值,而希望对话框控件更新显示,在修改变量后调用UpdateData(FALSE);
                                                                         希望知道用户在对话框中到底输入了什么,就应该在访问变量前调用UpdateData(TRUE)。

void CCharStatisticDlg::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExchange(pDX);
    //{{AFX_DATA_MAP(CCharStatisticDlg)
    DDX_Text(pDX, IDC_EDIT1, m_strTxt);
    DDX_Text(pDX, IDC_CH, m_strCh);
    DDX_Text(pDX, IDC_EN, m_strEn);
    DDX_Text(pDX, IDC_AL, m_strTotal);
    //}}AFX_DATA_MAP
}

二、关于编辑框的赋值和取值

向编辑框中赋值和取值时:

1、建一个 控制型的变量,如m_edit1,用CWnd的SetWindowText() 和GetWindowText()来赋值和取值。

m_Edit1.SetWindowText("Hello"); 或者GetDlgItem(IDC_EDIT1)->SetWindowText(str);

2、建立一个控制型的变量,如m_edit1,用SetDlgItemText()和GetDlgItemText()来赋值和取值

CString Str="Hello":  m_edit1.SetDlgItemText(IDC_EDIT1,str);

关联控制型变量时,会在DoDataExchange中,使用DDX_Control(pDX,IDC_EDIT,m_edit1);进行关联

2、直接建一个数值形的变量如m_strEdit;   用  UpdateData()来控制得到变量,还是更新变量。

关联CString变量的话,会在对话框类的构造函数中,进行初始化,在DoDataExchange中,通过DDX_Text(pDX,IDC_EDIT,m_EditText),进行对象的绑定。

//取值   
  UpdateData(TRUE);   
  CString   buf   =   m_Edit1;    
  //赋值   
  m_Edit1="ok!";   
  UpdateData(FALSE);






<think>好的,我现在要解决用户提到的Kali Linux旧源未签名错误的问题。用户遇到的错误是使用旧源'http://old.kali.org/kali sana InRelease'导致的,系统提示仓库未签名,无法安全更新。我需要根据已有的引用信息和自己的知识来提供解决方案。 首先,我需要回忆一下Kali Linux的源配置。通常,这类问题是由于软件源过期密钥失效引起的。用户提到的错误信息中提到EXPKEYSIG ED444FF07D8D0BF6,这可能与仓库的签名密钥有关。但用户现在使用的是旧源sana,而引用中提到的错误是kali-rolling的密钥问题,不过问题根源可能类似,都是密钥过期源地址不正确。 根据引用中的例子,比如引用[1]和[2],用户尝试使用不同的镜像源(如阿里云、USTC)时出现GPG错误解决办法通常是更新密钥者更换正确的源。而用户现在的问题是旧源sana,这可能是一个已经不再支持的版本,所以需要更换到当前支持的源。 步骤应该是: 1. 检查当前系统中的源配置,确认是否确实在使用旧的sana源。 2. 替换旧的源地址为官方推荐的最新源,比如kali-rolling的镜像。 3. 导入正确的GPG密钥,确保仓库签名有效。 4. 执行更新命令验证问题是否解决。 另外,可能需要手动下载并安装新的密钥,者使用wget命令从官方获取密钥并添加到apt-key中。例如,引用中提到的ED444FF07D8D0BF6可能已经过期,需要更新。 还需要注意,Kali Linux的不同版本可能对应不同的仓库名称,比如sana是旧版本,现在应该使用kali-rolling。因此,用户需要更新源列表中的条目,将sana替换为kali-rolling,并选择合适的镜像源。 另外,用户可能还需要清理旧的源列表,避免残留的旧配置导致问题。例如,检查/etc/apt/sources.list文件以及/etc/apt/sources.list.d/目录下的文件,删除注释掉所有涉及旧源sana的行。 最后,执行apt-get updateapt-get upgrade来测试是否解决问题。如果仍有GPG错误,可能需要手动导入新的密钥,比如使用apt-key adv命令。 总结解决方案步骤: 1. 备份当前源列表。 2. 编辑源列表,替换旧源为最新镜像源。 3. 导入新的GPG密钥。 4. 更新并升级系统。 同时,需要提醒用户在操作前备份重要数据,避免操作失误导致系统问题。</think>### 解决方案:Kali Linux旧源未签名错误处理 #### 问题根源分析 错误提示`The repository 'http://old.kali.org/kali sana InRelease' is not signed`表明: 1. 系统正在使用已弃用的旧版Kali源(`sana`为2016年发布的版本,当前官方仅支持`kali-rolling`)[^1][^4]; 2. 旧仓库的GPG密钥已失效,导致APT无法验证软件包安全性。 --- #### 分步解决方法 1. **备份当前源列表** ```bash sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak ``` 2. **更新为官方推荐镜像源** 编辑源配置文件: ```bash sudo nano /etc/apt/sources.list ``` 删除注释所有包含`old.kali.org``sana`的行,替换为以下内容(以阿里云镜像为例): ```plaintext deb http://mirrors.aliyun.com/kali kali-rolling main non-free contrib deb-src http://mirrors.aliyun.com/kali kali-rolling main non-free contrib ``` 3. **手动导入最新GPG密钥** ```bash wget -q -O - https://archive.kali.org/archive-key.asc | sudo apt-key add ``` 4. **执行系统更新** ```bash sudo apt-get update && sudo apt-get upgrade -y ``` --- #### 验证结果 若操作成功,终端应输出类似以下信息: ```plaintext Hit:1 http://mirrors.aliyun.com/kali kali-rolling InRelease Reading package lists... Done ``` --- #### 注意事项 - 若使用其他镜像(如清华、中科大),需确保URL中为`kali-rolling`而非`sana`[^2][^3] - 若仍报GPG错误,尝试强制刷新密钥: ```bash sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys ED444FF07D8D0BF6 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值