VC MFC ComoBox控件只接受数字输入

来源:互联网 发布:天猫彻底抛弃php 编辑:程序博客网 时间:2024/05/16 07:00

    ComboBox能下拉选择内容,也能输入,但是怎么只让输入数字??

 

    下面我们通过下面的方法来实现ComboBox输入数字,首先在头文件中定义一个

     HWND m_hWnd;

     然后在初始化函数中加入下面的代码就可以实现了。代码如下:

     m_hWnd = ::GetWindow((CComboBox *)GetDlgItem(控件ID)->GetSafeHwnd(), GW_CHILD);

     if(IsWindow(m_hWnd)

     {   

         ModifyStyle(m_hFccSec, 0, ES_NUMBER, 0);
     }

 

     说明

    1.作用:Call this member function to modify a window's style.

    2.函数原型:

    BOOL ModifyStyle(DWORD dwRemove, DWORD dwAdd, UINT   nFlags);

    3.参数含义:

      dwRemove指定要删除的扩展属性,dwAdd指定修改时要增加的扩展属性,nFlag标志一般设置为0

 

   4.用法:

      1、修改控件的原有属性用 ModifyStyle(1, WS_DISABLED);(实际测试时只要是>0的整形数就行)

      2、改回来的话要用ModifyStyle(WS_DISABLED, 1);(实际测试时只要是>0的整形数就行)如果把参数想像成布尔值的话就使用1整形数,要除去第控件的属性就让第一个参数dwRemove为真,修改回来就让第二个参数dwAdd为真.

   5.参考代码:

    CButton* pBtn = NULL;
    pBtn = (CButton*)GetDlgItem(IDC_BTN_BROWSEFOLDER);
    pBtn->ModifyStyle(1, WS_DISABLED); 
    pBtn->Invalidate(FALSE);

  6.其他说明:

   (1).ModifyStyle中的风格参数说明:

      ES开头的是editbox ESEDIT STYLE缩写,其他类似)
      BS开头的是button
      LVS开头的是listview

     WS开头的windows控件通用风格

      如果是扩展的风格,加EX, WS_EX_CLIENTEDGE

   (2).BOOL ModifyStyleEx(DWORD dwRemove, DWORD dwAdd, UINT nFlags=0);

     dwStyle中可以使用以下一些树形控件的专用风格: 
      TVS_HASLINES 在父/子结点之间绘制连线

      TVS_LINESATROOT 在根/子结点之间绘制连线 

      TVS_HASBUTTONS 在每一个结点前添加一个按钮,用于表示当前结点是否已被展开 
      TVS_EDITLABELS 结点的显示字符可以被编辑 
      TVS_SHOWSELALWAYS 在失去焦点时也显示当前选中的结点 
      TVS_DISABLEDRAGDROP 不允许Drag/Drop 
      TVS_NOTOOLTIPS 不使用ToolTip显示结点的显示字符 
      在树形控件中每一个结点都有一个句柄(HTREEITEM),同时添加结点时必须提供的参数是该结点的父结点句柄,利用HTREEITEM InsertItem( LPCTSTR lpszItem, HTREEITEM hParent = TVI_ROOT, HTREEITEM hInsertAfter = TVI_LAST );
可以添加一个结点,pszItem为显示的字符,hParent代表父结点的句柄,当前添加的结点会排在hInsertAfter表示的结点的后面,返回值

为当前创建的结点的句柄