MFCMFC实现设置水平,垂直滚动轮下移到底端

近年来做了三个基于UDP的局域网内聊天软件的课程设计,当中要用到编辑框,假使只变动它原有的属性是贯彻持续垂直滚动条自动下移到底端这一个成效的。以下是自己的贯彻形式:

CComboBox控件详细明白

VC中UpdateData(卡塔尔函数的利用

自个儿用的是VC6.0汉语版,跟VS2010有一点点分歧等:

CCombo博克斯控件又称作组合框控件,其有三种形态可供选用,1.轻巧组合框(Simple卡塔尔国2.下拉组合框(Drop-down卡塔尔3.下拉列表式组合框(Drop-down
listState of Qatar.
   CComboBox控件的常用设置属性表达:
   type属性:里面一共有多少个选项.就是其三种形式,
我们常用的是后三种造型,其差异正是Dropdown的编辑区为可编写制定控件,而droplist为静态控件.
  
Data属性:当程序起首化的时候,下拉列表将呈现其属性之中的源委,内容用分号分隔.其属性只援助后第22中学格局,
   Sort
属性:对丰硕到下拉列表框中的数据自动进行排序,如若你不想她校勘您的显得类别,把他设置成False.
  控件是叁个窗口.其基类是为CWnd.所以CCombo博克斯也能够选择CWnd的一些函数,它和睦的函数有30两种.作者写了壹个演示程序,演示了有些常用的函数,你能够参见其代码见到其功效.
  注:m_cbox 为CComboBox控件的关系变量,m_end为EDIT控件的涉及变量
   1.GetCount(State of Qatar 函数:用以获得列表框中的选项数目. int GetCount(卡塔尔const;(此乃函数原型,小编会列在每条的末端卡塔尔国下边包车型大巴事例是程序中各种开关里面包车型地铁代码
  int i;
   CString str;
   i=m_cbox.GetCount();
   str.Format (“%d”,i);
   m_end=”一共有”+str+”个数据”;
  UpdateData(FALSE);
   2.GetCurSel()函数:用以获得客商选中下拉列表框中数据的目录值.重临的值是重0开头的,若无选取其余取舍将会回来-1
Int GetCurSel(State of Qatar const
  int i;
   CString str;
   i=m_cbox.GetCurSel ();
   str.Format (“%d”,i+1);
   if (i==-1) m_end=”你怎么都未有选”;
   else m_end=”你选的是第”+str+”项”;
  UpdateData(FALSE);
  
3.SetCurSel函数:选拔列表框中的三个选项,索引从0开端,-1为啥都不选.当你须要把列表框中已经采取的剧情清空时就能够利用那些函数;
  if(m_i<3) m_cbox.SetCurSel (m_i++);//m_i为int型变量用以计数
  else {
   m_cbox.SetCurSel (-1);
   m_i=0;
   }
   4.SetEditSel函数:设置编辑区紫灰色选中字段的长短, BOOL SetEditSel(
intnStartChar,
   int nEndChar 卡塔尔;
nStartChar是开局的地点,当设置为-1时为不接纳别的字段,nEndChar是终止地方.还应该有三个对应的函数GetEditSel是赢得其地点,在这里不精解.
  m_cbox.SetEditSel
(3,5卡塔尔;//在编辑框中打入一串数字在按此开关就会来看功用
   //其功用正是选中第3到第5个字符作为火爆
   5.Clear(卡塔尔(قطر‎ Cut(卡塔尔 Paste(卡塔尔(قطر‎ Copy(卡塔尔那八个函数笔者放在一块儿说,因为她俩都是本着编辑框中选定的文字举办编辑的函数,非常多初学者特不明了那4个函数,使用这几个函数未有效应,其实不然,这么些函数对于在编辑框中的内容不开展管理,他真的管理的是你用鼠标选中的原委,对于Clear(卡塔尔(قطر‎函数超级多书中表达都是有误的,超多书中对她的解说是割除当前相中的公文,笔者觉着那样的演说是有异样的,真正的解说是把您刚当选的文本释放掉,也正是不选,并不是把选中的去除,真正的去除选中的公文的函数是Cut(State of Qatar,Copy(卡塔尔国是复制选中的文件,Paste(State of Qatar是贴边到光标处.其率马以骥就不写在前后相继中,有意思味的冤家能够团结试试.
   6.LimitText(卡塔尔国函数.其功用是节制在编辑框中键入的公文长度,BOOL
LimitText(int nMaxChars卡塔尔国;
当nMaxChars为0时,不是不可能输入,而是长度最大化为65535字节
   7.GetLBText(卡塔尔国函数.其原型为void GetLBText( int nIndex,
CString&rString State of Qatar.nIndex为列表框中数量的索引值,rString
为字符串,其职能就是把索引号为nIndex的数据放到rString变量中.与其相应的GetLBTextLen(intnIndexState of Qatar函数正是赢得索引号为nIndex中数量的尺寸
   m_cbox.GetLBText (2,m_end); // GetLBText按钮
   UpdateData(0);
   CString str; //GetLBTextLen按钮
   int i=m_cbox.GetLBTextLen (2);
   str.Format (“%d”,i);
   m_end=str;
   UpdateData(FALSE);
   8.AddString(卡塔尔 DeleteString(卡塔尔 InsertString(卡塔尔(قطر‎ ResetContent(State of Qatar多个函数放在一块儿,他们都是指向下拉列表框的管理函数, AddString(LPCTST帕杰罗lpszString卡塔尔(قطر‎ 是在列表框的尾巴增添一条数据,参数为字符串. DeleteString(UINT
nIndexState of Qatar为除去钦点索引为nIndex的数据. InsertString(int nIndex, LPCTSTRubiconlpszString卡塔尔国在索引nIndex处插入IpszString的内容.
ResetContent(卡塔尔是消逝列表框中全体的内容.
   9.SetDroppedWidth(UINT nWidthState of Qatar函数.用于设定下拉列表框的眇小宽度,当下拉列表框中的数据十分长不能够一心浮现时,我们得以应用那些函数把列表框的幅度设置的大些.相通GetDroppedWidth(卡塔尔国是回到列表框的宽度.
  以下为计算了各大论坛中对CCombBox控件使用的问题.并提交了正解.
  1.有关CComboBox在对话框中从未下拉类型的题目
  答:
财富编辑器中对话框中CComboBox组件的垂直范围拉大了下,就映珍视帘字体了,见到那一个向下的黑箭头了吧,点他下拉,嘿嘿就像是此轻便.
  2.请问怎么可以让CCombobox记住客户的输入.后一次使用时还会有
  答:
要记住用户的输入必须用到文件读写,可能把内容增加到注册表中,我会在其后给出化解办法.
  3. CCOMBOBOX怎么使它只读,不能编辑
  答: 看了本文的牵线恐怕你现在了解了,
CCOMBOBOX有三体系型的,选用你必要的呢!
  4. 作者要让分界面一彰显,就能够在Combo框中展现私下认可的多少
  答: 你要在OnInitDialog里面增添本身上边所涉及的SetCurSel(卡塔尔国函数就能够了.
  5. 如何把选好的剧情赋给变量
  答: 先给CCOMBOBOX设置贰个CString关联变量,再增多事件管理函数CBN_
Selchange.使用UpdateData(FALSE)就行了.
  6.
在CComboBox组合框中,条约标对齐形式是左对齐,能安装为对中依然右对齐吗?
  答: 未有直接的法子,你必须要自身对齐, 比方最大尺寸是10
   int i;
   String.Format(“%10d”, i);
   CComboBox->AddString

UpdateData(FALSE卡塔尔国与UpdateData(TRUE卡塔尔国是倒转的进程     
UpdateData(FALSEState of Qatar是把程序中改换的值更新到控件中去 
UpdateData(TRUE卡塔尔是把在控件中输入的值更新到您的变量中去

1.新建叁个编写制定框控件,将其多行后边打勾,Auto
HScroll前边的勾去掉,那样就能够达成每一行填满后自行换行了。

VC combobox

TRUE    ===> 控件    -〉数据成员 
FALSE ===>   数据成员 -〉 控件     
比如您的二个编纂框控件c_Edit与变量s_Edit相关联 
在前后相继中你用了     
s_Edit=”CSDN” 
而是你在编辑框中输入”NDSC” 
即使您用的是UpdateData(FALSEState of Qatar的话你的编辑框内容将是“CSDN” 
若是您用的是UpdateData(TRUE卡塔尔(قطر‎的话 s_Edit将变成“NDSC”

2.再将垂直滚动条前面打勾,当输入或出示当先编辑框的大大小小后就能够产出垂直滚动条。

利用大全 

一、怎么着增添/删除Combo Box内容

  1. 在Combo
    Box控件属性的Data标签里面增加,一行表示Combo
    Box下拉列表中的一行。换行用ctrl+回车。
  2. 在程序开首化时动态增加
        如: //控件内容先导化
       CString strTemp;
      
    ((CComboBox*)GetDlgItem(IDC_COMBO_CFState of Qatar卡塔尔->ResetContent(卡塔尔;//清除现成全体内容
        for(int i=1;i<=100;i++)
       {
           strTemp.Format(“%d”,i);
          
    ((CComboBox*)GetDlgItem(IDC_COMBO_CF))->AddString(strTemp);
       }
  3. 下拉的时候增加
        如: CString strTemp;
        int
    iCount=((CComboBox*)GetDlgItem(IDC_COMBO_CF卡塔尔国卡塔尔->GetCount(卡塔尔(قطر‎;//得到近些日子早就部分行数
        if(iCount<1卡塔尔国//幸免重复多次丰盛
       {
           ((CComboBox*)GetDlgItem(IDC_COMBO_CF))->ResetContent();
           for(int i=1;i<=100;i++)
          {
              strTemp.Format(“%d”,i);
             
    ((CComboBox*)GetDlgItem(IDC_COMBO_CF))->AddString(strTemp);
           }
        }
  4. 删除
       DeleteString( UINT nIndex 卡塔尔国//删除钦命行,
  5. 插入
       InsertString( int nIndex, LPCTST奇骏 lpszItem 卡塔尔//将行插入到钦赐地点
  6. 查找
       FindString( int nStartAfter, LPCTSTCRUISER lpszItem
    State of Qatar//能够在脚下具有行中查找钦点的字符传的地点,nStartAfter指明从那一行初步展开查找。
       int SelectString( int nStartAfter, LPCTST福特Explorer lpszItem
    State of Qatar//能够选中包蕴内定字符串的行

二、如何支配Combo Box的下增长程

1.
首先要精晓两点:一、那便是在统筹分界面里,点击一下Combo
Box的下拉箭头,那时候现身的调度框正是Combo Box的下拉调治框。

  1. 二、属性里有个 No integral height
    钩选项,表示最大尺寸为布署长度,借使实际内容比铺军士长度多,就涌出滚动条,少就以实际尺寸展现。

三、选择中间的某行

  1. 选中:
    int
    iPos=((CComboBox*)GetDlgItem(IDC_COMBO_CF卡塔尔卡塔尔(قطر‎->GetCurSel(State of Qatar;//当前当选的行。
  2. 设置
    ((CComboBox*)GetDlgItem(IDC_COMBO_CF卡塔尔State of Qatar->SetCurSel(nState of Qatar//设置第n行内容为彰显的从头到尾的经过。

四、取得Combo Box框内容

  1. 取当前内容
    ((CComboBox*)GetDlgItem(IDC_COMBO_CF))->GetWindowText(strTemp);

  2. 取别的行内容
    ((CComboBox*)GetDlgItem(IDC_COMBO_CF))->GetLBText(n,strTemp);

四、得到主旨

管见所及要判断控件是不是获得了规范,能够用GetFocus(卡塔尔国函数

例如:if(GetFocus()==GetDlgItem(IDC_EDIT_VALUE2卡塔尔国卡塔尔//剖断难题是不是在编辑框IDC_EDIT_VALUE2内。

然而combobox
的节骨眼分歧,因为它是由edit和listbox两有的构成的

为此得到大旨要用GetParent(卡塔尔(قطر‎:if
((GetFocus(卡塔尔国->GetParent(卡塔尔(قطر‎卡塔尔国==GetDlgItem(IDC_COMBO_CF))

如要让m_edit的内容立即生效 
UpdateData(FALSE); 
m_edit.UpdateWindow(卡塔尔;//那句无法少,不然不会应声生效

3.若是是输入,滚动条会自动移动跟随到方今输入行,不过只即使设置将多数剧情三回性让编辑框显示,滚动条就能够直接处于最顶上部分,须要手动拉到最上边本事瞥见最终一行的故事情节,在不少时候那是大家无需的,而是想要滚动条处于最下方,如下的代码将贯彻那百分之十效:

 

this-SetDlgItemText(IDC_EDIT_RECV,str卡塔尔(قطر‎;//将字符串str中剧情呈现到ID为IDC_EDIT_RECV的编排框m_recvshw.LineScroll(m_recvshw.GetLineCount());//m_recvshw为该编辑框的积极分子变量//使用控件变量的一部分分子函数设置滚动条的地点

修正:

如要让m_edit的从头到尾的经过立时生效
UpdateData(FALSE);
UpdateWindow(State of Qatar;//那句无法少,不然不会登时生效
EDIT控件未有UpdateWindow这一个成员函数,所以一向利用
例如:
m_name=””;
m_mima=””;
UpdateData(FALSE);
UpdateWindow();

============================

UpdateData(true卡塔尔;//用于将显示器上控件中的数据沟通到变量中。

UpdateData(false卡塔尔;//用于将数据在显示器中对应控件中显示出来。

     
当你选择了ClassWizard创建了控件和变量之间的沟通后:当您改改了变量的值,而期望对话框控件更新呈现,就相应在改换变量后调用UpdateData(FALSE卡塔尔(قطر‎;如若你希望知道客商在对话框中到底输入了何等,就应该在访谈变量前调用UpdateData(TRUE卡塔尔。

二、关于编辑框的赋值和取值

向编辑框中赋值和取值时:

1、建一个 调节型的变量,如m_edit1,用CWnd的SetWindowText(卡塔尔和GetWindowText(State of Qatar来赋值和取值。

m_Edit1.SetWindowText(“Hello”);  

或者GetDlgItem(IDC_EDIT1)->SetWindowText(str);

2、构建一个调控型的变量,如m_edit1,用SetDlgItemText()和GetDlgItemText()来赋值和取值

CString Str=”Hello”:

m_edit1.SetDlgItemText(IDC_EDIT1,str);

2、间接建三个 数值形的变量 如m_strEdit;    用
UpdateData()来决定获得变量,如故更新变量。

//取值 
UpdateData(TRUE); 
CString buf = m_Edit1;   
  
//赋值 
m_Edit1=”ok!”; 
UpdateData(FALSE);

发表评论

电子邮件地址不会被公开。 必填项已用*标注