首页
新闻
论坛
群组
Blog
文档
下载
读书
Tag
网摘
搜索
.NET
Java
游戏
视频
人才
外包
培训
数据库
书店
程序员
欢迎您:
游客
| 退出
| 登录
注册
帮助
我的帖子
我参与的帖子
我的空间
我的网摘
CSDN
CSDN社区
VC/MFC
界面
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
生成帖子
置顶
推荐(加精)
取消推荐(加精)
锁定帖子
移动帖子
结贴去...
管理菜单
页面风格切换
标准风格
老版本论坛
关于Combo Box的两个问题(光标&响应)
[已结贴,结贴人:RedskyDeng]
加为好友
发送私信
在线聊天
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
回复次数:
10
显示所有回复
显示星级回复
显示楼主回复
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
VisualEleven
Eleven
等级:
发表于:
2008-05-08 08:44:12
1
楼 得分:
5
1 CBN_EDITUPDATE
2 CBN_SELCHANGE
试试看!
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
RedskyDeng
血色天空
等级:
发表于:
2008-05-08 09:16:26
2
楼 得分:
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);
}
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
RedskyDeng
血色天空
等级:
发表于:
2008-05-08 09:17:03
3
楼 得分:
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);
}
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
Mackz
在相互
等级:
发表于:
2008-05-08 11:14:55
4
楼 得分:
50
你说的光标问题,是由于UpdateData引起的,不要在OnEditchangeComboPn中调用UpdateData,直接用对编辑框调用GetWindowText。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
RedskyDeng
血色天空
等级:
发表于:
2008-05-08 15:09:40
5
楼 得分:
0
引用 4 楼 Mackz 的回复:
你说的光标问题,是由于UpdateData引起的,不要在OnEditchangeComboPn中调用UpdateData,直接用对编辑框调用GetWindowText。
第一个问题已经解决,可是不明白UpdateData到底进行了哪些操作,会出现如此问题?
第二个问题还未解决,期待中。。。。。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
RedskyDeng
血色天空
等级:
发表于:
2008-05-09 08:08:23
6
楼 得分:
0
第二个问题应该可以解决吧,还是没人知道答案?
第一个谁可以解释一下UpdateData得问题?
加分,20+80分!!!
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
zhoujianhei
高手.高手.高高手
等级:
发表于:
2008-05-09 08:35:15
7
楼 得分:
10
2 CBN_SELCHANGE
你应该理解 CBN_SELCHANGE 的涵义。不要以为我想要什么就应该存在什么。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
happyparrot
快乐鹦鹉
等级:
发表于:
2008-05-09 17:07:08
8
楼 得分:
5
UpdateData是在控件中的数据和与控件关联的数据进行交换。
UpdateData(FALSE)是将关联数据的值传给控件。比如文本框关联了CString sInfo;那么,如果sInfo被修改了,你必须UpdateData(FALSE)后,该值才会传到控件从而能够显示出来。UpdateData(TRUE)正好相反,是将您在文本框中输入的内容传到sInfo变量。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
Mackz
在相互
等级:
发表于:
2008-05-09 17:38:50
9
楼 得分:
50
第2个问题啊(不好意思才看到),和第1个问题一样,也是UpdateData的原因,你直接用GetCurSel()/GetLBText()就看到效果了。对话框的数据交换机制,隐藏了具体的数据和控件交换的过程,在同一个控件通知消息过程中来调用对话框的UpdateData极容易造成错误的结果,最好不要这么用。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
Fireway2008
幽幽心源
等级:
发表于:
2008-05-09 19:16:03
10
楼 得分:
0
搂主,也许是你没把问题表达清楚吧,各楼层的高手都给你分析了,好像还达不到你的要求,能否把你的问题阐述得具体点?
修改
删除
举报
引用
回复
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
结贴去...
管理菜单
页面风格切换
标准风格
老版本论坛
网站简介
-
广告服务
-
网站地图
-
帮助
-
联系方式
-
诚聘英才
-
English
-
问题报告
世纪乐知(北京)网络技术有限公司 版权所有 京 ICP 证 020026 号
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
abc推荐给好友