简单的说是我已经有了一个EditBox,想通过代码把它“变成”DropDown ComboBox找了点资料,关与dropdown comboBox和droplist comboBox间是否能代码转化,有人提出说本质上dropdown是2个dlg,1个droplist和1个edit,我现在需要的已经有个了个edit能否变成dropdown comboBox;起因是由于,在原有的一个通用对话框类上,对对话框上个别的editbox需要时改成comboBox,有人知道怎么实现比较好么,是否能通过代码将Edit真正变成combobox;
我现在简单的想法是,新创建一个combobox,将原来的editbox“覆盖”

解决方案 »

  1.   

    感觉好像不行,这两个在窗口类上来说就不同,所以将EDIT真正变成combobox的可能性不大。
      

  2.   

    按你的想法就可以,创建ComboBox后把EditBox隐藏或者销毁。
      

  3.   

    新创建一个combobox,与原来的editbox重叠,根据需要隐藏一个显示另一个。
      

  4.   

    嗯?编程combobox么?如果只是实现功能类似 那就重载自绘好了 在当前窗体上动态创建一个按钮 响应lbuttondown 单击后弹出菜单或者listbox  
    在将其重载与Edit内容变更相关联,不过有一个细节 就是按钮的位置问题 如果在edit中创建  那么文字如果超出会显示在按钮的下方.所以我建议用Cstatic多加一层窗口做为Edit和Button的父窗口 Button在Edit右侧边缘即可.
      

  5.   

    - - 我没好好申题 我以为你是要自绘成combobox~~``楼上宣布作废edit和combobox 进行同位置show和hide就可以了.
      

  6.   

    直接使用combobox,添加一个继承于CComboBox的类,通过消息,将ComboBox中的下按按钮隐藏,这样,它就和EditBox一样了,
    当需要用到Combobox的下拉按钮时,再把它显示出来。
      

  7.   

    早上写了一会,用VC新生成的对话框框架的 实现了,但发现我实际用到的通用对话框类中使用出现了问题我找到了原有对话框上的 editbox 位置,也新生成了combobox ,位置上基本覆盖了原editbox,
    并设置showwindow(SW_HIDE),但在使用时,发现可以看到新生成的 combobox ,但无法编辑,下拉钮也点不了,鼠标上去完全像是下面没控件,仔细观察了原editbox位置,发现在一个frame或者不可编辑的 editbox上(附近有一圈边界线),将新生成combobox移到边界线外发现可以正常使用,感觉是叠加问题,但是combobox是可见的,如果是完全被盖住,应该是不可见,现在困惑了,由于通用类是 封装的,不知道原来是怎么实现editbox
    大家有什么 解决法么 
      

  8.   

    楼上具体指什么,通用类是先全部生成好后,我才改editbox,新生成COMBOBOX
    关键是combobox可见但不可编辑,被什么挡住了?
      

  9.   

    SetWindowPos设成顶层窗口?
    或者把Editbox的visible设为false?
      

  10.   

    新创建一个combobox,与原来的editbox重叠,根据需要隐藏一个显示另一个。这个方法就不错
      

  11.   

    基本解决,后来发现边界区是个Picturebox,被挡住了
    用SetWindowPos置顶,但发现还要设置成transparent但发现个新问题,怎么保证原edit和combo的数据同步,在每个修改edit内容的地方做修改?
    这样如果使用edit的地方少,还觉得简单可行,但如果过多,并且原来的通用类完全封装了怎么办?
    想到派生通用类的DoDataExchange(),有办法么
    我现在使用的功能上基本做到了,因为原来的通用对话框类,刚好有类似的虚函数,但还是想知道有什么其他方法
      

  12.   

    你可以写一个类,用一个Edit和一个ComboBox组成一个复合控件。
      

  13.   

    你可以将你的Edit的m_hWnd传递给一个CComboBoxXXX类,然后维护并控制它