首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 关于Combo Box的两个问题(光标&响应) [已结贴,结贴人:RedskyDeng]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-08 08:37:20 楼主
    1.Combo Box中的输入框中每输入一个字符后光标自动跳到输入栏的第一个字符前边,并且再输入的话会追加到第一个字符前边,导致实际输入字符顺序和按键顺序相反。如在键盘上先后敲击ABCDE,实际输入为EDCBA,有没有什么方法解决这个问题?
    2.Combo Box中点击下拉按钮新选择一个选项,并且下拉框自动收上后,按理Combo Box中的内容是改变了,但是却并没有触发CBN_EDITCHANGE消息,没有执行相应的函数。响应CBN_CLOSEUP消息也不行。怎么才能让其内容改变时执行一些操作,如让其值赋给另外一个控件。直接改,不用下拉选是可以的,如下:
    void CTestProgrameView::OnEditchangeComboPn()
    {
    // TODO: Add your control notification handler code here
    UpdateData();
    int pos=testCtrl.strFullFileName.ReverseFind('\\');
    CString resultPath=testCtrl.strFullFileName.Mid(0,pos);
    CString resultName=m_PN+".csv";
            testCtrl.strFullFileName=resultPath+"\\"+resultName;
            m_saveFilePath=testCtrl.strFullFileName;
    UpdateData(FALSE);
    }
    120  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-08 08:44:121楼 得分:5
    1 CBN_EDITUPDATE
    2 CBN_SELCHANGE
    试试看!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-08 09:16:262楼 得分:0
    引用 1 楼 VisualEleven 的回复:
    1 CBN_EDITUPDATE
    2 CBN_SELCHANGE
    试试看!


    CBN_EDITUPDATE不行,和CBN_EDITCHANGE差不多;
    CBN_SELCHANGE也不行,第一次选没反应,在选一次到改变了,不过是第一次选的值,并且在选也不会变了:
    void CTestProgrameView::OnSelchangeComboPn()
    {
    // TODO: Add your control notification handler code here
    UpdateData();
    int pos=testCtrl.strFullFileName.ReverseFind('\\');
    CString resultPath=testCtrl.strFullFileName.Mid(0,pos);
    CString resultName=m_PN+".csv";
            testCtrl.strFullFileName=resultPath+"\\"+resultName;
            m_saveFilePath=testCtrl.strFullFileName;
    UpdateData(FALSE);
    }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-08 09:17:033楼 得分:0
    引用 1 楼 VisualEleven 的回复:
    1 CBN_EDITUPDATE
    2 CBN_SELCHANGE
    试试看!


    CBN_EDITUPDATE不行,和CBN_EDITCHANGE差不多;
    CBN_SELCHANGE也不行,第一次选没反应,在选一次到改变了,不过是第一次选的值,并且再选也不会变了:
    void CTestProgrameView::OnSelchangeComboPn()
    {
    // TODO: Add your control notification handler code here
    UpdateData();
    int pos=testCtrl.strFullFileName.ReverseFind('\\');
    CString resultPath=testCtrl.strFullFileName.Mid(0,pos);
    CString resultName=m_PN+".csv";
            testCtrl.strFullFileName=resultPath+"\\"+resultName;
            m_saveFilePath=testCtrl.strFullFileName;
    UpdateData(FALSE);
    }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-08 11:14:554楼 得分:50
    你说的光标问题,是由于UpdateData引起的,不要在OnEditchangeComboPn中调用UpdateData,直接用对编辑框调用GetWindowText。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-08 15:09:405楼 得分:0
    引用 4 楼 Mackz 的回复:
    你说的光标问题,是由于UpdateData引起的,不要在OnEditchangeComboPn中调用UpdateData,直接用对编辑框调用GetWindowText。


    第一个问题已经解决,可是不明白UpdateData到底进行了哪些操作,会出现如此问题?

    第二个问题还未解决,期待中。。。。。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-09 08:08:236楼 得分:0
    第二个问题应该可以解决吧,还是没人知道答案?

    第一个谁可以解释一下UpdateData得问题?


    加分,20+80分!!!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-09 08:35:157楼 得分:10
    2 CBN_SELCHANGE

    你应该理解 CBN_SELCHANGE 的涵义。不要以为我想要什么就应该存在什么。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-09 17:07:088楼 得分:5
    UpdateData是在控件中的数据和与控件关联的数据进行交换。
    UpdateData(FALSE)是将关联数据的值传给控件。比如文本框关联了CString sInfo;那么,如果sInfo被修改了,你必须UpdateData(FALSE)后,该值才会传到控件从而能够显示出来。UpdateData(TRUE)正好相反,是将您在文本框中输入的内容传到sInfo变量。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-09 17:38:509楼 得分:50
    第2个问题啊(不好意思才看到),和第1个问题一样,也是UpdateData的原因,你直接用GetCurSel()/GetLBText()就看到效果了。对话框的数据交换机制,隐藏了具体的数据和控件交换的过程,在同一个控件通知消息过程中来调用对话框的UpdateData极容易造成错误的结果,最好不要这么用。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-09 19:16:0310楼 得分:0
    搂主,也许是你没把问题表达清楚吧,各楼层的高手都给你分析了,好像还达不到你的要求,能否把你的问题阐述得具体点?
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    世纪乐知(北京)网络技术有限公司 版权所有 京 ICP 证 020026 号
    Copyright © 2000-2007, CSDN.NET, All Rights Reserved