为什么会出现这样的问题,关于UpdateData

51touch 2004-07-02 05:22:50
我在对话框的 OnInitDialog()
中读取注册表,并将相关的值赋给与控件关联的变量
m_strHomeUrl
m_strHomePic
然后UpdateData(FALSE)
但是在控件中看到的值却都是 m_strHomePic 的值
与m_strHomeUrl关联的控件没有显示正确的值
显示的是 m_strHomePic 的值。
但是如果我不读取注册表,直接给上面变量赋值,显示又正确的
我跟踪可以看到寄存器的值是读取正确的
不知道是什么原因倒是两个控件显示相同的内容?
谢谢
...全文
139 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Kudeet 2004-07-02
  • 打赏
  • 举报
回复
UpdateData(FALSE),是没有问题的,
51touch 2004-07-02
  • 打赏
  • 举报
回复
zoid() :
明白了,原来是读取注册表时,自己写的一个类,使用了引用
导致的问题。我现在改成指针看看会不会出现问题
zjg751206 2004-07-02
  • 打赏
  • 举报
回复
读注册表的时候出错了。应该使用临时变量。读完后strcpy就对了
zoid 2004-07-02
  • 打赏
  • 举报
回复
数值没有赋对,
你读注册表的时候,读出的内容两次一样?或者指向同一地址?

看看你怎么读注册表的.
各种消息框的的应用1 创建一个DLG程序 2 添加5个新的对话框资源ID分别为:MsgBoxSimple,MsgBoxOption,MsgBoxCustom,并调整其大小使他们尺寸一样 3 为2中所添加的对话框创建新的类 class CPageSimple : public CPropertyPage class CPageOption : public CPropertyPage class CPageCustom : public CPropertyPage 保存在property.h和property.cpp中。 4 在ShowBmpInPropertyBtnAreaDlg.h中加入 #i nclude "property.h" ... public: CPropertySheet m_MyPropertySheet; //定义属性表变量 CPageSimple m_page1; //以下定义属性页成员变量 CPageOption m_page2; CPageCustom m_page3; 5 在对话框IDD_MESSAGEBOXES模板中加入一个Picture控件,ID设为IDC_PROPSHEET,并调整其大小使其与对话框MsgBoxSimple大小相似 6 在CMessageBoxesDlg::OnInitDialog()中加入 //属性表和属性页的成员变量我已经在头文件中定义过了 //现在把属性页加入到属性表中 m_MyPropertySheet.AddPage(&m_page1); m_MyPropertySheet.AddPage(&m_page2); m_MyPropertySheet.AddPage(&m_page3); //显示非摸态的属性表 m_MyPropertySheet.Create(this, WS_CHILD | WS_VISIBLE, 0); //当对话框搜索下一个Tab项时,WS_EX_CONTROLPARENT标记避免了死循环发生的可能性 //他可以让对话框搜索到属性表中的子窗体控件,就象对话框窗体上的其他普通控件一样。 m_MyPropertySheet.ModifyStyleEx (0, WS_EX_CONTROLPARENT); //允许用户TAB键切换到属性表 m_MyPropertySheet.ModifyStyle( 0, WS_TABSTOP ); //显示属性表 CRect rcSheet; GetDlgItem( IDC_PROPSHEET )->GetWindowRect( &rcSheet ); ScreenToClient( &rcSheet ); m_MyPropertySheet.SetWindowPos( NULL, rcSheet.left-7, rcSheet.top-7, 0, 0, SWP_NOZORDER | SWP_NOSIZE | SWP_NOACTIVATE ); 7 添加一些按钮,映射各按钮的单击消息,并为响应函数编写代码如下 void CPageSimple::OnSimplestBtn() { MessageBox("这是最最简单的消息框"); } void CPageSimple::OnSimpleBtn() { AfxMessageBox("另一个简单的消息框"); } void CPageOption::OnOkBtn() { MessageBox("仅仅一个按钮确定的消息框", "信息提示消息框", MB_OK|MB_ICONINFORMATION); m_Message = "你只是确认了一下"; UpdateData(FALSE); } void CPageOption::OnOkcancelBtn() { int Response; Response = MessageBox("在这个消息框中你可以选择确定和取消" "\n\n你也可以在此写下对行信息文本" "\n这是你的权利", "选择消息框", MB_OKCANCEL|MB_ICONASTERISK); if( Response == IDOK ) { m_Message = "你选择了确定"; UpdateData(FALSE); } else { m_Message = "你取消了"; UpdateData(FALSE); } } void CPageOption::OnYesnoBtn() { int Response; Response = MessageBox("你吃过了吗?我意思是指从昨天到现今", "信息提示", MB_YESNO|MB_ICONQUESTION); if( Response == IDYES ) { m_Message = "那么,我不需要再给你什么了"; UpdateData(FALSE); } else { m_Message = "那么走吧,正好我也没有吃,咱们一块去吃火锅!"; UpdateData(FALSE); } } void CPageOption::OnYesnocancelBtn() { int Response; Response = MessageBox("当你删除一个目录的时候,或者一个文档改动后," "\n退出程序的时候,这个消息框就出现", "文档保存提示消息框", MB_YESNOCANCEL|MB_ICONWARNING);

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧