CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

模拟改变另外程序的ComboBox选项的问题。。。。

楼主springland()2004-12-03 03:11:46 在 VC/MFC / 基础类 提问

我在自己的程序里,获得另外一个运行的exe的窗口控件combox的句柄,变量名为hwnd   ,  
  然后动态更改它的当前选项:  
   
  CComboBox   ComboBox   ;  
  ComboBox.Attach   (   hwnd   )   ;  
  ComboBox.SetCurSel   (   6   )   ;  
  ComboBox.Detach   ();  
   
  这时combox控件显示为我指定的选项,但是当程序继续运行时,我发现combox控件真实的当前选项仍然是从前的!  
  我做的代码的效果只是让comboBox的当先选项“看起来”像是更新了。但实际上并没有更新。  
   
  另外,我用如下方法:  
  int   index   =   6;  
  PostMessage   (   hwnd   ,   CB_SETCURSEL   ,   (WPARAM)   index,(LPARAM)   0)   ;  
  效果同上,都没有真正更改comboBox真实的当前选项。  
   
  不知道问题出在哪里?请高人不吝指教,不胜感激!  
   
  问题点数:100、回复次数:8Top

1 楼lg2001(万人迷)回复于 2004-12-03 08:35:08 得分 30

最后一个参数应该有吧,这是我加一条选项的代码  
  pWnd->SendMessage(CB_ADDSTRING,0,(LPARAM)(LPCSTR)m_fval);Top

2 楼lg2001(万人迷)回复于 2004-12-03 08:38:26 得分 0

嗯,又看了一下MSDN,最后一个参数是没有,试试用SendMessage发送吧Top

3 楼changpei(我的博客:http:\\changpei.tianyablog.com)回复于 2004-12-03 08:54:33 得分 40

应该不是SendMessage或者PostMessage的原因。楼主,可以试试ComboBox.UpdataDate(true)吗?  
  然后用MessageBox()吧当前选项的CString值弄出来看看。Top

4 楼changpei(我的博客:http:\\changpei.tianyablog.com)回复于 2004-12-03 09:00:45 得分 0

还有,你的(WPARAM)   index中,index值不能超出最大的值。Top

5 楼changpei(我的博客:http:\\changpei.tianyablog.com)回复于 2004-12-03 09:10:53 得分 0

CString   str;  
  GetLbText(GetCurSel(),   str);  
  MessageBox(str);Top

6 楼springland()回复于 2004-12-03 13:57:48 得分 0

先感谢     lg2001(万人迷)   和   changpei(作最有气魄的诗人。))    
   
  经过  
  CString   str;  
  ComboBox.GetLBText(ComboBox.GetCurSel(),   str)  
  之后,str里面的确是改变后的字串。  
   
  但在响应那个对话框IDOK之后,对话框里取得的   combobox变量却仍然是以前的,没有改变过来!  
   
  我依次试过  
  ComboBox.UpdateData(true)  
  PostMessage   (   hwnd,CBN_CLOSEUP   ,0,0   )   ;   //hwnd是comboBox窗口句柄。  
  PostMessage   (   hwnd,CBN_SELCHANGE   ,0,0   )   ;  
  PostMessage   (   hwnd,CBN_SELENDOK   ,0,0   )   ;  
  都不行!  
   
  希望高人继续指点迷津。  
   
  Top

7 楼springland()回复于 2004-12-03 14:13:46 得分 0

上面写错了。  
  应该是:  
  ComboBox.PostMessage   (   WM_COMMAND   ,   MAKELONG(ComboBox.GetDlgCtrlID(),   CBN_CLOSEUP),(LPARAM)ComboBox.m_hWnd   )   ;  
  ComboBox.PostMessage   (   WM_COMMAND   ,   MAKELONG(ComboBox.GetDlgCtrlID(),   CBN_SELCHANGE),(LPARAM)ComboBox.m_hWnd   )   ;  
  ComboBox.PostMessage   (   WM_COMMAND   ,   MAKELONG(ComboBox.GetDlgCtrlID(),   CBN_SELENDOK),(LPARAM)ComboBox.m_hWnd   )   ;  
  Top

8 楼ncucf(ncu晨风)回复于 2004-12-03 14:21:14 得分 30

呵呵,这个问题,你可以从另一个角度想想!  
   
    看对方是靠什么捕捉combobox变化的,我猜想它90%不是用GetLbText来获得更新的,也许是用edit的anchange响应处理呢!  
   
    就像你sendmessage一个WM_SETTEXT给记事本,它也不知道内容发生了变化,要提示保存一样!  
  首先你要知道远程程序是如何获知变化,已经如何处理的!Top

相关问题

  • 想把ComboBox组件里的(性别)选项保存到数据库中,为何下面的程序不对呢?
  • 如何做带有选项的程序
  • 怎样在COMBOBOX中加入可选项?
  • 怎样在COMBOBOX中加入可选项?
  • 如何取得ComboBox中的选项值
  • 有关ComboBox选项的问题
  • 怎样向ComboBox中输入选项?
  • ComboBox如何自动弹出选项啊?
  • 根据ComboBox选项,列出数据
  • 求C++模拟DOS程序

关键词

  • 选项
  • 控件
  • combobox
  • postmessage
  • cbn
  • getlbtext
  • 程序
  • combox
  • getdlgctrlid
  • makelong

得分解答快速导航

  • 帖主:springland
  • lg2001
  • changpei
  • ncucf

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo