控制CComboBox中ListBox的DropDown & Back

2016-02-19 17:41 5 1 收藏

最近很多朋友喜欢上设计,但是大家却不知道如何去做,别担心有图老师给你解答,史上最全最棒的详细解说让你一看就懂。

【 tulaoshi.com - 编程语言 】

  问题背景

  这是UE的一个要求,是在CComboBox下拉出ListBox的时候,弹出一个选择窗口,然后选中一项,显示在CComboBox的Edit中

  同事的做法是在ComboBox的父窗口捕捉ComboBox的CBN_DROPDOWN通知消息,在消息响应函数中弹出选择窗口,然后为ComboBox设置Strings和选中项。但是不好的现象是,因为是在处理下拉的消息,故此函数结束的时候,下拉ListBox没有收回。

  开始的做法

  开始想当然的在通知消息响应函数结束的地方调用

  Combobox.SendMessage( CB_SHOWDROPDOWN, (WPARAM)FALSE, 0)

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  来将下拉框收回,但是失败,于是又尝试了

  Combobox.SendMessage( WM_KILLFOCUS)和

  Combobox.SendMessage( WM_KEYDOWN, VK_ESCAPE, 0)

  全部失败。

  有些进步了

  经过上面的失败,写了一个简单的对话框程序来测试CComboBox,发现其ListBox不是在CBN_DROPDOWN的通知消息响应函数之中/之前下拉出来的,我们准备下拉ListBox的时候就已经发出了这个通知消息,然后通知消息处理了之后才真正下拉出来。故此我们在通知消息响应函数中做的收回ListBox的函数实际上都被过早的调用了,没有起作用。

  于是在测试程序中,作如下处理

  1. 在消息响应函数结束的地方调用

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  Combobox.PostMessage( WM_KILLFOCUS),注意是PostMessage

  2. 在KillFocus的响应函数中调用

  Combobox.SendMessage( CB_SHOWDROPDOWN, (WPARAM)FALSE, 0)

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  测试项目成功通过

  但是回到原来的项目中还是不行,发现原来是弹出选择窗口时就已经发出了KillFocus消息

  最终解决方案

  很简单,在CBN_DROPDOWN通知消息的响应函数最后加入

  Combobox.PostMessage( WM_KEYDOWN, VK_ESCAPE, 0)

来源:https://www.tulaoshi.com/n/20160219/1615806.html

延伸阅读
控制结阅与过程编程清浪冲天 马敬发 QQ: 283989349 E-mail: mjf150080@tom.com 有问题时,我们可以通过http://www.hustc.mpc.cn 这个论坛, 或 通过QQ 共同学习和讨论 一、控制结构 首先了解比较运算符: == 等于 >= 大于等于 大于 了解逻辑运算符: && 逻辑AND || 逻辑OR ! 逻辑NOT 警告:执行顺序是:! && || if...else...结构: 第...
《梦游者Back to Bed》第1关攻略 《梦游者Back to Bed》第1关攻略 《梦游者Back to Bed》第1关教学关卡,本关只要按照提示操作即可过关。 《梦游者Back to Bed》第2关攻略 ...
标签: Web开发
javascript 对ListBox的增 删 假设有2个ListBox,ID分别为lbLeft,lbRight 选中lbLeft里的项添加到lbRight里:  function add()     {         var left;         var right;         left = document....
 Private Sub filllistboxwithcolors()         Me.ListBox1.DrawMode = DrawMode.OwnerDrawFixed         Me.ListBox1.ItemHeight = 24         '避免闪烁       &nbs...
标签: 办公软件
PowerPoint课件中怎样才能惟妙惟肖地使用声音呢?现在,就让我们一起来看看PowerPoint中声音操作的各种途径吧。 1 循环播放声音直至幻灯片结束 这项操作适用于图片欣赏等,不需要教师的讲解,往往是伴随着声音出现一幅幅图片。声音的操作步骤(假如共有5张幻灯片): (1)在要出现声音的第一张幻灯片中单击主菜单“插入/影片中的声音/文件中的...

经验教程

872

收藏

81
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部