比如我在我想Dialog类中CListBox控件中保存了某一个结构体中关于地点的变量,点击Dialog类中CListBox控件中显示的某一行内容,控件右边的Edit Control就会显示关于此结构体关于天气的变量。请问各位高手,该如何实现呢?谢谢。

解决方案 »

  1.   

    另外建一个数组 与CListBox的值一一对应.
    选择CListBox之后GetCurSel()获取当前选择index.相应的数组index就是它的值.
    传说中的手动tag附加值.
      

  2.   

    二楼方法在执行效率上是最高的,但是我再多考虑一下CListBox中条目被增加或删减的情况(也许楼主并不需要这种处理)在这种情况下,二楼一一对应的方法就不能成立了。这种情况下用笨办法,其实也是最安全的方法:
    1 楼主获取CListBox当前选择项文字
    2 遍厉结构体数组(不可能只有一个地址吧),看哪一结构体成员的地点和前面获取文字相同
    3 得到天气情况文字比较是费时的,如想提高效率可以:
    在结构体中增加一int ID;成员 该成员的值具有唯一性,不重复。
    CListBox的条目可附加一个值 "传说中的手动tag附加值." ,不是传说,实实在在存在的。在增加CListBox条目时设定该值为结构体对象的ID1 楼主获取CListBox当前选择项附加值
    2 遍厉结构体数组(不可能只有一个地址吧),看哪一结构体成员的ID和前面获取值相同
    3 得到天气情况由于整数比较非常快,因此执行效率较二楼方法几乎没有差别,而且非常安全
      

  3.   

    大概是 1 楼的方法。
    不过这需要插入 List Box 控件的数据项与数组的下标一一对应;如果顺序没有变化可以,但有顺序的变化就会对不齐了。
    Windows 的常用方法是用 CListBox::SetItemData 函数为每个数据项绑定一个值,这个值就是用来关联其它数据的。可以用 CListBox::GetItemData 函数获取绑定的值。