mfc groupbox的用法,mfc checkbox

  mfc groupbox的用法,mfc checkbox

  组合框控件简单,可以节省空间。从用户的角度来看,这个控件由一个文本输入控件和一个下拉菜单组成。用户可以从预定义的列表中选择一个选项,同时可以直接在文本框中输入文本。下面的示例简要说明了如何使用MFC CComboBox类来操作字符串列表。

  1.定义控件的相应变量。

  假设已经创建了一个对话框,并将组合框控件从控件工具箱拖放到该对话框上。打开类向导,添加控件对应的变量,如CComboBox m _ cbExamble

  这个变量将在下面的代码中连续使用。

  2.向控件添加项

  1)添加到组合框控件属性的数据标签中,一行代表组合框下拉列表中的一行。使用ctrl键输入。

  2)使用函数AddString()向组合框控件添加项目,例如:

  m_cbExample。AddString(" string data 1 ");

  m_cbExample。AddString(" string data 2 ");

  m_cbExample。AddString(" string data 3 ");

  3)还可以调用函数InsertString()将项目插入到指定位置nIndex,例如:

  m_cbExample。InsertString( nIndex,“string data”);

  3.从控件中获取选定的项。

  假设在控件列表中选择了一个项目,现在要获取所选项目的内容,首先获取该项目的位置,然后获取相应位置的内容。这里将使用两个函数,例如:

  int nIndex=m_cbExample。GetCurSel();

  CString strCBText

  m_cbExample。GetLBText( nIndex,strCBText);

  这样,获得的内容保存在strCBText中。

  要选择当前内容,可以调用函数GetWindowText(strCBText)。

  4.在控件中查找给定的项。

  这种操作一般用于在程序中动态修改控件中该项的值,可以和函数FindStringExact()精确匹配,比如:

  int nIndex=m_cbExample。FindStringExact( nStartAfter,“要查找的值”);

  指示从哪一行开始搜索。如果搜索成功,则返回项目的位置;否则,返回CB_ERR。

  您也可以选择包含指定字符串的项目,例如:

  int nIndex=m_cbExample。SelectString( nStartAfter,“要选择的值”);

  5.删除控件中的项。

  这个操作可以使用函数DeleteString(),需要指定被删除项的位置,比如:

  m_cbExample。delete string(nIndex);

  还可以使用ResetContent()函数清除所有当前项目,例如:

  m_cbExample。reset content();

  6.在控件中显示一项。

  int nIndex=m_cbExample。GetCurSel();//当前选定的项目

  m_cbExample。SetCurSel(nIndex);//将nIndex项设置为显示内容。

  7.获取或设置输入框中所选字符的位置。

  DWORD GetEditSel()/BOOL SetEditSel(int nstart char,int nEndChar);

  BOOL limit text(int nmax chars);设置可在输入框中输入的最大字符数。

  8.列表框的通用消息映射宏

  ON_CBN_DBLCLK鼠标双击

  弹出ON_CBN_DROPDOWN列表框。

  当输入框失去/获得输入焦点时,生成on _ CBN _ kill focus/on _ CBN _ setfocus。

  在ON_CBN_SELCHANGE列表框中选择的行发生变化。

  ON_CBN_EDITUPDATE输入框被更新。

  补充:

  I .如何添加/删除组合框内容

  1.添加到组合框控件属性的数据标签中,一行代表组合框下拉列表中的一行。使用ctrl键输入。

  2.程序初始化时动态添加。

  如://控制内容初始化

  CString strTemp

  ((ccombox *)GetDlgItem(IDC _ COMBO _ CF))-reset content();//消除所有现有内容

  for(int I=1;i=100我)

  {

  strTemp。格式( %d ,I);

  ((ccombox *)GetDlgItem(IDC _ COMBO _ CF))-AddString(strTemp);

  }

  3.放下来就加。

  如:CString strTemp

  int iCount=((ccombox *)GetDlgItem(IDC _ COMBO _ CF))-GetCount();//获取当前已有线数。

  If(iCount 1)//防止重复多次加法

  {

  ((ccombox *)GetDlgItem(IDC _ COMBO _ CF))-reset content();

  for(int I=1;i=100我)

  {

  strTemp。格式( %d ,I);

  ((ccombox *)GetDlgItem(IDC _ COMBO _ CF))-AddString(strTemp);

  }

  }

  4.删除

  delering(uint index)//删除指定的行,

  5、插入

  InsertString (int nindex,lpctstr lpszitem)//在指定位置插入一行。

  6、寻找

  Find string (int nStartAfter,lpctstr lpszitem)//可以在当前所有行中查找指定字符传输的位置,nStartAfter表示从哪一行开始搜索。

  Select string (int start after,lpctstr lpszitem)//可以选择包含指定字符串的行。

  二、如何控制组合框的下拉长度

  1.首先你要知道两件事:第一,在设计界面中,点击组合框的下拉箭头,此时出现的调整框就是组合框的下拉调整框。

  2,2,属性中有一个非整数高度挂钩选项,表示最大长度为设计长度。如果实际内容超过设计长度,会出现滚动条,如果少于设计长度,会以实际长度显示。

  3.选择其中一行。

  1、选择:

  int iPos=((ccombox *)GetDlgItem(IDC _ COMBO _ CF))-GetCurSel();//当前选定的行。

  2、设置

  ((ccombox *)GetDLGitem(IDC _ Combo _ CF))-SetCursel(n)//将第n行内容设置为显示内容。

  四。获取组合框的内容

  1取当前内容

  ((ccombox *)GetDlgItem(IDC _ COMBO _ CF))-GetWindowText(strTemp);

  2取其他行的内容。

  ((ccombox *)GetDlgItem(IDC _ COMBO _ CF))-GetLBText(n,strTemp);

  第四,获得焦点

  通常,要确定控件是否有焦点,可以使用GetFocus()函数

  示例:if(get focus()==getdlgitem(IDC_EDIT_VALUE2))//确定焦点是否在编辑框IDC _ EDIT _ value 2中。

  但是combobox的侧重点不一样,因为它由编辑和列表框组成。

  所以用getparent()获得焦点:if((get focus()-get parent())==getdlgitem(IDC _ combo _ cf))

  控制组合框的下拉长度。

  1.首先你要知道两件事:第一,在设计界面中,点击组合框的下拉箭头,此时出现的调整框就是组合框的下拉调整框。

  第二,属性中有一个非整数高度挂钩选项,表示最大长度为设计长度。如果实际内容超过设计长度,就会出现滚动条,如果少于设计长度,就会显示实际长度。

  VC组合框/Ex控件组合框

  组合窗口由输入框和列表框组成。您可以使用成员函数来创建复合窗口:

  BOOL clist box:Create(LPCTSTR lpszText,DWORD dwStyle,const RECT rect,CWnd* pParentWnd,UINT nID=0x ffff);

  其中,dwStyle会指明窗口的样式。除了子窗口的常见样式WS _ Child和WS _ Visible之外,您还可以为列表控件指定一种特殊的样式。

  CBS_DROPDOWN下拉组合框

  CBS_DROPDOWNLIST下拉组合框,但不能在输入框中进行任何输入。

  CBS_SIMPLE输入框和列表框同时显示。

  LBS_SORT的所有行都是按字母顺序排序的。

  因为组合框包含列表框,所以可以使用列表框的所有功能,例如:

  Addstring (lpctstr lpszitem)添加一行,

  删除指定的行,

  IntinsertString (intnindex,lpctstr lpszitem)在指定位置插入一行。

  Void ResetContent()可以删除列表框中的所有行。

  调用int GetCount()获取当前列表框中的行数。

  如果需要获取/设置当前选中行的位置,可以调用intgetcursel()/intsetcursel(intindex)。通过调用int getlbtext (int nindex,lptstr lpsztext)获取列表框中指定行的字符串。

  另外,通过调用intfindstring (intnStartAfter,lpctstr lpszitem),可以在当前所有行中找到指定字符传输的位置,nStartAfter表示从哪一行开始搜索。

  Select string (int start after,lpctstr lpszitem)可以选择包含指定字符串的行。

  此外,可以使用输入框的功能,例如:

  ordgeteditsel()/bool seteditsel(intnstartchar,intnendchar)获取或设置输入框中选定字符的位置。

  Boolimittext (int n maxchars)设置可以在输入框中输入的最大字符数。

  可以使用输入框的剪贴板功能复制、清除、剪切和粘贴。

  最后,介绍一些常见的列表框消息映射宏:

  ON_CBN_DBLCLK鼠标双击

  弹出ON_CBN_DROPDOWN列表框。

  当输入框失去/获得输入焦点时,生成on _ CBN _ kill focus/on _ CBN _ setfocus。

  在ON_CBN_SELCHANGE列表框中选择的行发生变化。

  ON_CBN_EDITUPDATE输入框被更新。

  使用以上几种消息映射的方法为定义原型如:afx_msg查看成员fxn();的函数,并且定义形式如ON_Notification( id,memberFxn)的消息映射。如果在对话框中使用组合框,类向导会自动列出相关的消息,并能自动产生消息映射代码。

  在MFC 4.2中对组合框进行了增强,你可以在组合框中使用ImageList(图像列表),有一个新的类ccomboboxex(由组合框控件派生)来实现这一功能。在ccomboboxex(消歧义)类中添加了一些新的成员函数来实现新的功能:首先你需要调用cimagelist * set magelist(cimagelist * piment list);来设置ImageList(图像列表),然后调用

  int insert tem(const combobomxexiem * pcbitem);来添加行,其中康柏西汀定义如下:

  typedef结构{ UINT掩码:内部iitemlptstr psztextint qtext x;内部iimageint是selectedimage内瓦索莱;内部;内部:LPARLPAR}复方新诺明,* pcomboboxexitem

  你需要设置mask=CBEIF_IMAGE CBEIF_TEXT,并设置-是啊为插入位置,设置psztext文字为显示字符串,设置太糟了为显示的图标索引。下面的代码演示了如何进行插入:

  页:1为已经创建的组合框控件对象

  m_list(消歧义)为CImageList(图像列表)对象IMG国际开发银行为16*(16*4)的位图,每个图片为十六*十六共四个图标*/

  m _列表参数。创建(IDB_IMG,16,4,RGB(0,0,0));

  -伊甸园字幕组=-翻译:setmagelist(m _ list):

  连翘曲酶坚持的;连翘曲;连翘曲;连翘曲;连翘曲;连翘曲;连翘曲;连翘曲;连翘曲;连翘曲;连翘曲;连翘曲;连翘曲;连翘曲。输入。mask=CBEIF_IMAGE CBEIF_TEXT:输入。iitem=0:坚持iimage=0插入。psztext=第1行-伊甸园字幕组=-翻译:insertitem(坚持);输入。iitem=1:坚持iimage=1插入。psztext=第2行-伊甸园字幕组=-翻译:insertitem(坚持);

  通过调用int delete item(int iiindex):来删除行,并指明行的位置。

  通过调用bool getitem(combobomxexitem * pcbite)/bool setitem(const combobomxexitem * pcbite);来得到/设置行数据。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: