几何尺寸与公差论坛

 找回密码
 注册
查看: 3449|回复: 0

【转帖】如何用代码来修改ComboBox的属性?

[复制链接]
发表于 2008-7-4 10:51:48 | 显示全部楼层 |阅读模式
如何用代码来修改ComboBox的属性,从Drop   List到Drop   Down 问题点数:100、回复次数:13Top

1 楼vcleaner(我没当大哥很久了.......)回复于 2005-01-17 11:44:48 得分 0
  
  #define   CBS_SIMPLE                         0x0001L   
  #define   CBS_DROPDOWN                     0x0002L   
  #define   CBS_DROPDOWNLIST             0x0003L   
   
  ModifySytle(O,CBS_DROPDOWN);Top


2 楼vcleaner(我没当大哥很久了.......)回复于 2005-01-17 11:55:32 得分 0

考!测试了一下竟然不管用!Top

3 楼hjcy_2002(hjcy)回复于 2005-01-17 11:57:25 得分 0

有没有好的方法啊?Top

4 楼qrlvls( 空 气 )回复于 2005-01-17 12:48:48 得分 0

ModifyStyle(CBS_DROPDOWNLIST,   CBS_DROPDOWN);Top

5 楼oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣)回复于 2005-01-17 12:50:46 得分 100

DWORD   theStyle;   
  HWND   theChild;   
  theChild   =   ::GetWindow(   m_combo.m_hWnd   ,   GW_CHILD   );   
  theStyle   =   ::GetWindowLong(   m_combo.m_hwnd   ,   GWL_STYLE   );   
  :estroyWindow(   theChild   );   
  ::SetWindowLong(   m_combo.m_hWnd   ,   GWL_STYLE   ,   theStyle   );   
  Top


6 楼hjcy_2002(hjcy)回复于 2005-01-17 13:16:02 得分 0

反过来应该怎么修改呢啊?   
  Top


7 楼vcleaner(我没当大哥很久了.......)回复于 2005-01-17 13:46:03 得分 0

测试了一上午好像都不行!使用SPY++看到了,如果是Drop   List风格那么它的基类就是CComboBox,如果是Drop   Down风格就是一个CEdit和一个叫做CComboLBox类的对象。也许唯一的办法就是使用动态创建。定义一个CComboBox的指针或者变量,然后在Create之,如果是想改变风格先删除之,然后再Create。参考代码:   
  //动态创建   
  CRect   rect;   
  rect.SetRect(140,60,240,1680);   
  m_ComboBox.Create(CBS_DROPDOWN|CBS_AUTOHSCROLL|WS_VISIBLE|WS_CHILD|WS_TABSTOP,rect,this,IDC_MYCOMBOBOX);   
          m_ComboBox.InsertString(-1,"ITEM1");   
          m_ComboBox.InsertString(-1,"Combo的ITEM2");   
          m_ComboBox.InsertString(-1,"Combo的ITEM3");   
          m_ComboBox.SetWindowText("我的组合框");//注意此句必须放在Create调用的后面。   
   
  //删除   
  m_ComboBox.DestroyWindow();   
  Invalidate();   
   
  //动态创建   
  CRect   rect;   
  rect.SetRect(140,60,240,1680);   
  m_ComboBox.Create(CBS_DROPDOWNLIST|CBS_AUTOHSCROLL|WS_VISIBLE|WS_CHILD|WS_TABSTOP,rect,this,IDC_MYCOMBOBOX);   
          m_ComboBox.InsertString(-1,"ITEM1");   
          m_ComboBox.InsertString(-1,"Combo的ITEM2");   
          m_ComboBox.InsertString(-1,"Combo的ITEM3");   
          m_ComboBox.SetWindowText("我的组合框");//注意此句必须放在Create调用的后面。Top


8 楼vcleaner(我没当大哥很久了.......)回复于 2005-01-17 13:46:35 得分 0

上面的代码经过测试成功。并且效果很好!Top

9 楼chuanke((C ) 2005【空间代数】. All rights reserved .)回复于 2005-01-17 14:12:53 得分 0

我觉得:   
    qrlvls(≌AIR⌒LIKE)   (≤和空气一样帅≥√)     
    =================================   
      
        ModifyStyle(CBS_DROPDOWNLIST,   CBS_DROPDOWN);   
  中所用的ModifyStyle好些,原来我也是这样用的,   
  ===============   
    vcleaner   
  固然能解决但繁琐,不明智   
        
      
  Top


10 楼vcleaner(我没当大哥很久了.......)回复于 2005-01-17 14:15:26 得分 0

呵呵,兄弟们我也不想繁琐啊,但是上面各位包括我第一次的方法都不能见效,呵呵,不信你们也试试。我后来的办法是没有办法的办法了,呵呵。Top

11 楼koko1998(高价购买火车票)回复于 2005-01-17 14:30:29 得分 0

那还不如就使用两种ComboBox,一种Drop   List,一种Drop   Down   
  定义两个帮定对象m_combo_list,一个m_combo_down;   
  然后定义一个指针对象,指向其中之一。   
  工作的时候,只要使用该指针对象不就可以了嘛。   
  当然,两个对象总是一个显示,一个隐藏Top


12 楼chuanke((C ) 2005【空间代数】. All rights reserved .)回复于 2005-01-17 14:58:36 得分 0

SetExtendedUI   
    Selects   either   the   default   user   interface   or   the   extended   user   interface   for   a   combo   box   that   has   the   CBS_DROPDOWN   or   CBS_DROPDOWNLIST   style.   
  选择风格为CBS_DROPDOWN或CBS_DROPDOWNLIST的组合框中的列表框的缺省用户接口或扩展用户接口     ShowDropDown     
  Shows   or   hides   the   list   box   of   a   combo   box   that   has   the   CBS_DROPDOWN   or   CBS_DROPDOWNLIST   style.   
  显示或者隐藏风格为CBS_DROPDOWN或CBS_DROPDOWNLIST的组合框的列表框      
  GetExtendedUI   
    Determines   whether   a   combo   box   has   the   default   user   interface   or   the   extended   user   interface.   
  检测组合框的用户接口是缺省的还是扩展的Top


13 楼chuanke((C ) 2005【空间代数】. All rights reserved .)回复于 2005-01-17 15:02:28 得分 0

另外:   
  ON_CBN_DROPDOWN   下拉出下拉列表(变为可见)。只对风格为CBS_DROPDOWN或CBS_DROPDOWNLIST的组合框起作用。     
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|几何尺寸与公差论坛

GMT+8, 2024-12-22 01:23 , Processed in 0.036724 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表