vs2010 验证控件C++ 的ComboBox控件不显示下拉数据

C++ CComboBox控件详解
先总结下自己的:
1.命名,m_cb内容,如m_cbBuildLine
2.添加值,m_cb.addstring(char*)
3.设置当前选中值,m_cb.setcursel(index)
4.获取当前选中值,m_cb.getcursel()
5.设置关联值,将索引与一个指针或数据库索引关联,一般不常用m_cb.setItemData(index, DWORD)
6.选中发生变化的事件.
7.不可编辑要选为drop downlist.要可显示下拉,点IED中的小三角,再下拉即可.
8.默认下控件会把sort打勾,这个要去掉,不然会弄乱顺序的.
CComboBox控件又称作组合框控件,其有三种形态可供选择,1.简单组合框(Simple)2.下拉组合框(Drop-down)3.下拉列表式组合框(Drop-down list).
CComboBox控件的常用设置属性说明:
type属性:里面一共有三个选项.就是其三种形式, 我们常用的是后两种形态,其区别就是Dropdown的编辑区为可编辑控件,而droplist为静态控件.
Data属性:当程序初始化的时候,下拉列表将显示其属性里面的内容,内容用分号分隔.其属性只支持后2中形式,
Sort 属性:对添加到下拉列表框中的数据自动进行排序,如果你不想他改变你的显示序列,把他设置成False.
控件是一个窗口.其基类是为CWnd.所以CComboBox也可以使用CWnd的一些函数,它自己的函数有30几种.我写了一个示范程序,演示了一些常用的函数,你可以参考其代码看到其功能.
注:m_cbox 为CComboBox控件的关联变量,m_end为EDIT控件的关联变量
1.GetCount() 函数:用以获得列表框中的选项数目. int GetCount()(此乃函数原型,我会列在每条的后面) 下面的例子是程序中各个按钮里面的代码
i=m_cbox.GetCount();
str.Format (“%d”,i);
m_end=”一共有” str “个数据”;
UpdateData(FALSE);
2.GetCurSel() 函数:用以得到用户选中下拉列表框中数据的索引值.返回的值是重0开始的,如果没有选择任何选项将会返回-1 Int GetCurSel() const
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型变量 用以计数
m_cbox.SetCurSel (-1);
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(),Copy()是复制选中的文本,Paste()是粘贴到光标处.其演示就不写在程序中,有兴趣的朋友可以自己试试.
6.LimitText()函数.其作用是限制在编辑框中键入的文本长度,BOOL LimitText(int nMaxChars); 当nMaxChars为0时,不是不能输入,而是长度最大化为65535字节
7.GetLBText()函数.其原型为void GetLBText( int nIndex, CString&rString ).nIndex为列表框中数据的索引值,rString 为字符串,其作用就是把索引号为nIndex的数据放到rString变量中.与其对应的GetLBTextLen(intnIndex)函数就是得到索引号为nIndex中数据的长度
m_cbox.GetLBText (2,m_end); // GetLBText按钮
UpdateData(0);
CS //GetLBTextLen按钮
int i=m_cbox.GetLBTextLen (2);
str.Format (“%d”,i);
UpdateData(FALSE);
8.AddString() DeleteString() InsertString() ResetContent() 四个函数放在一起,他们都是针对下拉列表框的处理函数, AddString(LPCTSTR lpszString) 是在列表框的尾巴添加一条数据,参数为字符串. DeleteString(UINT nIndex)为删除指定索引为nIndex的数据. InsertString(int nIndex, LPCTSTR lpszString)在索引nIndex处插入IpszString的内容. ResetContent()是清除列表框中所有的内容.
9.SetDroppedWidth(UINT nWidth) 函数.用于设定下拉列表框的最小宽度,当下拉列表框中的数据很长不能完全显示时,我们可以使用这个函数把列表框的宽度设置的大些.同样GetDroppedWidth()是返回列表框的宽度.
以下为总结了各大论坛中对CCombBox控件使用的问题.并给出了正解.
1.关于CComboBox在对话框中没有下拉项目的问题
答: 资源编辑器中对话框中CComboBox组件的垂直范围拉大了下,就看见字体了,看到那个向下的黑箭头了吗,点他下拉,嘿嘿就这么简单.
2.请问怎样能让CCombobox记住用户的输入.下次使用时还有
答: 要记住用户的输入必须用到文件读写,或者把内容添加到注册表中,我会在以后给出解决办法.
3. CCOMBOBOX如何使它只读,不能编辑
答: 看了本文的介绍也许你现在知道了, CCOMBOBOX有三种类型的,选择你需要的吧!
4. 我要让界面一显示,就能在Combo框中显示默认的数据
答: 你要在OnInitDialog里面加上我上面所提到的SetCurSel()函数就行了.
5. 如何把选好的内容赋给变量
答: 先给CCOMBOBOX设置一个CString关联变量,再添加事件处理函数CBN_ Selchange.使用UpdateData(FALSE)就行了.
6. 在CComboBox组合框中,条目的对齐方式是左对齐,能设置为对中或者右对齐吗?
答: 没有直接的方法,你必须自己对齐, 比如最大长度是10
String.Format(“d”, i);
CComboBox-&AddString
本文引用地址:&
&电子邮箱:&
&24小时在线咨询:
&24小时业务联系:VS2010,C++,如何将TextBox中输入的数据保存到链表的节点中?
[问题点数:20分]
VS2010,C++,如何将TextBox中输入的数据保存到链表的节点中?
[问题点数:20分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关帖子推荐:
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。您所在的位置:
&Microsoft Visual C++vc2010运行库下载(vc2010下载)官方版
Microsoft Visual C++vc2010运行库下载(vc2010下载)官方版
Microsoft Visual C++VC2010下载软件介绍
点击查看大图
&&&&&&& (VC2010运行库)Microsoft Visual C++ 2010&Redistributable Package (x86) 安装 Visual C++ 2010&库的运行时组件,使用户能够在未安装 Visual C++ 2010的计算机上运行使用 Visual C++ 2010&开发的应用程序.&&&&&&& VC2010运行库本程序包为 C 运行时库 (CRT)、标准 C++、ATL、MFC、OpenMP 和 MSDIA 库安装运行时组件.对于支持并行部署模型的库(CRT、SCL、ATL、MFC、OpenMP),这些运行时组件被安装到支持并行程序集的 Windows 操作系统的本机程序集缓存(也称为 WinSxS 文件夹)中。&Microsoft Visual C++ 2010可再发行组件包64位版本下载:
Microsoft Visual C++VC2010下载下载地址
下载吧网友
安装这个 还需要安装其他运行库吗?
下载吧网友
顶你!同问!
下载吧网友
安装了& 怎么没有运行快捷方式啊????????????????
下载吧网友
网站设立这个运行库专栏很有用,谢谢
坑爹的,,,都别来,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,就显示装上了,,,,,,,,,,都找不到在哪,,,,!!!!!!!!搜索都无法找到!!!!!!!!!!!!!!!!!!!
我想问一下 为什么下啦之后打不开 我也去C:WINDOWSsystem32但是里面都没有你说的msvcp100.dll msvcr100.dll文件 而且有dll的文件都打不开的嘛 我是新手 求解
下载吧网友
安装这个 还需要安装其他运行库吗?
下载吧网友
顶你!同问!
下载吧网友
安装了& 怎么没有运行快捷方式啊????????????????
下载吧网友
网站设立这个运行库专栏很有用,谢谢
坑爹的,,,都别来,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,就显示装上了,,,,,,,,,,都找不到在哪,,,,!!!!!!!!搜索都无法找到!!!!!!!!!!!!!!!!!!!
为什么我装了这个还是玩不了极品16啊?求教。我的DX都装了的。wind7旗舰、32位的
下载吧网友
安装这个 还需要安装其他运行库吗?
下载吧网友
顶你!同问!
下载吧网友
安装了& 怎么没有运行快捷方式啊????????????????
下载吧网友
网站设立这个运行库专栏很有用,谢谢
坑爹的,,,都别来,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,就显示装上了,,,,,,,,,,都找不到在哪,,,,!!!!!!!!搜索都无法找到!!!!!!!!!!!!!!!!!!!
这是VC2010运行库,某些采用VC2010开发才程序需要此运行。安装msvcp100.dll msvcr100.dll之类的DLL文件到系统目录供软件调用。请看下面的评论了解清楚,无知就不要乱说话了。
安装这个 还需要安装其他运行库吗?
下载吧网友
顶你!同问!
下载吧网友
安装了& 怎么没有运行快捷方式啊????????????????
下载吧网友
网站设立这个运行库专栏很有用,谢谢
坑爹的,,,都别来,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,就显示装上了,,,,,,,,,,都找不到在哪,,,,!!!!!!!!搜索都无法找到!!!!!!!!!!!!!!!!!!!
不错,开始不能运行水果忍者,一安装之后就可以了
下载吧网友
安装这个 还需要安装其他运行库吗?
下载吧网友
顶你!同问!
下载吧网友
安装了& 怎么没有运行快捷方式啊????????????????
下载吧网友
网站设立这个运行库专栏很有用,谢谢
坑爹的,,,都别来,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,就显示装上了,,,,,,,,,,都找不到在哪,,,,!!!!!!!!搜索都无法找到!!!!!!!!!!!!!!!!!!!
WINDOWS7旗舰版,直接安装,解决问题。GOOD.
安装这个 还需要安装其他运行库吗?
下载吧网友
顶你!同问!
下载吧网友
安装了& 怎么没有运行快捷方式啊????????????????
下载吧网友
网站设立这个运行库专栏很有用,谢谢
坑爹的,,,都别来,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,就显示装上了,,,,,,,,,,都找不到在哪,,,,!!!!!!!!搜索都无法找到!!!!!!!!!!!!!!!!!!!
安装这个 还需要安装其他运行库吗?
下载吧网友
顶你!同问!
下载吧网友
安装了& 怎么没有运行快捷方式啊????????????????
下载吧网友
网站设立这个运行库专栏很有用,谢谢
坑爹的,,,都别来,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,就显示装上了,,,,,,,,,,都找不到在哪,,,,!!!!!!!!搜索都无法找到!!!!!!!!!!!!!!!!!!!
谢谢版主、下载安装后,极品16终于能玩了
安装这个 还需要安装其他运行库吗?
下载吧网友
顶你!同问!
下载吧网友
安装了& 怎么没有运行快捷方式啊????????????????
下载吧网友
网站设立这个运行库专栏很有用,谢谢
坑爹的,,,都别来,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,就显示装上了,,,,,,,,,,都找不到在哪,,,,!!!!!!!!搜索都无法找到!!!!!!!!!!!!!!!!!!!
很好,解决我的问题啊。。
o0↓is↑0o
安装这个 还需要安装其他运行库吗?
下载吧网友
顶你!同问!
一个包就可以了,所有C++的都能运行
安装这个 还需要安装其他运行库吗?
下载吧网友
顶你!同问!
下载吧网友
安装了& 怎么没有运行快捷方式啊????????????????
下载吧网友
网站设立这个运行库专栏很有用,谢谢
系统软件小分类
613028次下载
977421次下载
35546次下载
21878次下载
423339次下载
51159次下载
8595次下载
276744次下载
183309次下载
393683次下载
977421次下载
613028次下载
423453次下载
423339次下载
413995次下载
393683次下载
376465次下载
311562次下载
276744次下载
275800次下载
热门关键字
微信扫一扫关注下载吧公共帐号trackbacks-0
Combo Box用法:&combo box控件由两部分组成:编辑框和选择框(列表框)组成,对应的类是CComboBox
1、改变下拉框大小:先点向下的箭头,就可以调整下拉框大小
2、如果 ComboBox 的 Sorted 属性设置为 true,&& 则新添加项将按字母顺序插入到列表中。&& 否则,在列表的结尾处插入项。
3、要立即响应选择框的改变(即选择框一改变选项,就立刻将结果传递进去)!&& 响应他的哪个消息比较好?
&& 如果是只能选择的响应ON_CBN_SELCHANGE&& 如果是可以编辑的,那么要立刻响应编辑就是ON_CBN_EDITCHANGE
4、CBN_SELENDOK是什么作用?&& This notification message is sent when the user clicks a list item,&& or selects an item and then closes the list. && It indicates the user's selection is to be processed
5、介绍一下列表框几种常用的消息映射宏:
&& ON_CBN_DBLCLK 鼠标双击 && ON_CBN_DROPDOWN 列表框被弹出 && ON_CBN_KILLFOCUS / ON_CBN_SETFOCUS 在输入框失去/得到输入焦点时产生 && ON_CBN_SELCHANGE 列表框中选择的行发生改变 && ON_CBN_EDITUPDATE 输入框中内容被更新 && 使用以上几种消息映射的方法为定义原型如:afx_msg void memberFxn( );的函数,&& 并且定义形式如ON_Notification( id, memberFxn )的消息映射。&& 如果在对话框中使用组合框,Class Wizard会自动列出相关的消息,并能自动产生消息映射代码。
6、改变ComboBox的下拉列表框宽度&& 一般情况下,列表框的宽度和选择框是一样宽的,为了让列表框变的更宽,可以用&& m_Combobox.setdroppedwidth(int width); 来调整 他的宽度
7、如何使控键ComboBox不能输入只能在下拉菜单中选择?&& VC6中style属性设为csDropDownList&& //DropList?!&& VC2005中Type属性设为Drop List
8、设置当前项或得到当前是第几项&&& && m_ComboBox1.SetCurSel(N);&&& //SetCurSel函数可改变标签控件当前选定的项目&&& //这个N可以是-1,表示无选择,0表示第一项,1表示第二项。。&& m_ComboBox1.GetCurSel();&&&& //得到当前是第几项.0是第一项,1是第二项
List Control的用法:
List Control控件,是个列表,对应的类为CListCtrl。下面没有说明的,默认风格都为report
1、风格&&& LVS_ICON: 为每个item显示大图标&&& LVS_SMALLICON: 为每个item显示小图标&&& LVS_LIST: 显示一列带有小图标的item&&& LVS_REPORT: 显示item详细资料&&& 直观的理解:windows资源管理器,&查看&标签下的&大图标,小图标,列表,详细资料&
2、设置listctrl 风格及扩展风格&&&&& LONG lS&&&&& lStyle = GetWindowLong(m_list.m_hWnd, GWL_STYLE);//获取当前窗口style&&&&& lStyle &= ~LVS_TYPEMASK; //清除显示方式位&&&&& lStyle |= LVS_REPORT; //设置style&&&&& SetWindowLong(m_list.m_hWnd, GWL_STYLE, lStyle);//设置style&&&&&& DWORD dwStyle = m_list.GetExtendedStyle();&&&&& dwStyle |= LVS_EX_FULLROWSELECT;//选中某行使整行高亮(只适用与report风格的listctrl)&&&&& dwStyle |= LVS_EX_GRIDLINES;//网格线(只适用与report风格的listctrl)&&&&& dwStyle |= LVS_EX_CHECKBOXES;//item前生成checkbox控件&&&&& m_list.SetExtendedStyle(dwStyle); //设置扩展风格
3、插入数据&&& m_list.InsertColumn( 0, "姓名", LVCFMT_LEFT, 40 );//插入列&&& m_list.InsertColumn( 1, "部门", LVCFMT_LEFT, 50 );&&& int nRow = m_list.InsertItem(0, &&);//插入行&&& m_list.SetItemText(nRow, 0, &张三&);//设置数据,第1列&&& m_list.SetItemText(nRow, 1, &软件部&);//设置数据,第2列
4、已知选中item&& 选中style中的Show selection always选项,设置为true,或者在上面第2点中设置LVS_SHOWSELALWAYS&& 设置为true后,当选中某一个item,这个item就会一直被选中,知道选中下一个或者都不选。
5、选中和取消选中一行&&& int nIndex = 0;&&& //选中&&& m_list.SetItemState(nIndex, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED);&&& //取消选中&&& m_list.SetItemState(nIndex, 0, LVIS_SELECTED|LVIS_FOCUSED);
6、得到listctrl中所有行的checkbox的状态&&&&& m_list.SetExtendedStyle(LVS_EX_CHECKBOXES);&&&&& CS&&&&& for(int i=0; i&m_list.GetItemCount(); i++)&&&&& {&&&&&&&&&& if( m_list.GetItemState(i, LVIS_SELECTED) == LVIS_SELECTED || m_list.GetCheck(i))&&&&&&&&&& {&&&&&&&&&&&&&&& str.Format(_T("第%d行的checkbox为选中状态"), i);&&&&&&&&&&&&&&& AfxMessageBox(str);&&&&&&&&&& }&&&&& }
7、得到listctrl中所有选中行的序号
&&&&& 方法一:&&&&& CS&&&&& for(int i=0; i&m_list.GetItemCount(); i++)&&&&& {&&&&&&&&&& if( m_list.GetItemState(i, LVIS_SELECTED) == LVIS_SELECTED )&&&&&&&&&& {&&&&&&&&&&&&&&& str.Format(_T("选中了第%d行"), i);&&&&&&&&&&&&&&& AfxMessageBox(str);&&&&&&&&&& }&&&&& }
&&&&& 方法二:&&&&& POSITION pos = m_list.GetFirstSelectedItemPosition();&&&&& if (pos == NULL)&&&&&&&&&& TRACE0("No items were selected!\n");&&&&& else&&&&& {&&&&&&&&&& while (pos)&&&&&&&&&& {&&&&&&&&&&&&&&& int nItem = m_list.GetNextSelectedItem(pos);&&&&&&&&&&&&&&& TRACE1("Item %d was selected!\n", nItem);&&&&&&&&&&&&&&& // you could do your own processing on nItem here&&&&&&&&&& }&&&&& }
8、得到item的信息&&&&& TCHAR szBuf[1024];&&&&& LVITEM&&&&& lvi.iItem = nItemI&&&&& lvi.iSubItem = 0;&&&&& lvi.mask = LVIF_TEXT;&&&&& lvi.pszText = szB&&&&& lvi.cchTextMax = 1024;&&&&& m_list.GetItem(&lvi);
9、得到listctrl的所有列的header字符串内容&&&&& LVCOLUMN&&&&& char& str[256];&&&&& int&& nColN&&&&& CString& strColumnName[4];//假如有4列
&&&&& nColNum = 0;&&&&& lvcol.mask = LVCF_TEXT;&&&&& lvcol.pszText =&&&&& lvcol.cchTextMax = 256;&&&&& while(m_list.GetColumn(nColNum, &lvcol))&&&&& { &&&&&&&&&& strColumnName[nColNum] = lvcol.pszT&&&&&&&&&& nColNum++;&&&&& }
10、使listctrl中一项可见,即滚动滚动条&&& m_list.EnsureVisible(i, FALSE);
11、得到listctrl列数&&& int nHeadNum = m_list.GetHeaderCtrl()-&GetItemCount();
12、删除所有列&&&&& 方法一:&&&&&&&& while ( m_list.DeleteColumn (0))&&&&&& 因为删除了第一列后,后面的列会依次向上移动。
&&&&& 方法二:&&&&& int nColumns = 4;&&&&& for (int i=nColumns-1; i&=0; i--)&&&&&&&&& m_list.DeleteColumn (i);
13、得到单击的listctrl的行列号&&&&& 添加listctrl控件的NM_CLICK消息相应函数&&&&& void CTest6Dlg::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult)&&&&& {&&&&&&&&&& // 方法一:&&&&&&&&&& /*&&&&&&&&&& DWORD dwPos = GetMessagePos();&&&&&&&&&& CPoint point( LOWORD(dwPos), HIWORD(dwPos) );&&&&&&&&&& m_list.ScreenToClient(&point);&&&&&&&&&& LVHITTESTINFO&&&&&&&&&& lvinfo.pt =&&&&&&&&&& lvinfo.flags = LVHT_ABOVE;&&&&&&&&&& int nItem = m_list.SubItemHitTest(&lvinfo);&&&&&&&&&& if(nItem != -1)&&&&&&&&&& {&&&&&&&&&&&&&&& CS&&&&&&&&&&&&&&& strtemp.Format("单击的是第%d行第%d列", lvinfo.iItem, lvinfo.iSubItem);&&&&&&&&&&&&&&& AfxMessageBox(strtemp);&&&&&&&&&& }&&&&&&&&& */&& &&&&&&&&& // 方法二:&&&&&&&&& /*&&&&&&&&&& NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;&&&&&&&&&& if(pNMListView-&iItem != -1)&&&&&&&&&& {&&&&&&&&&&&&&&& CS&&&&&&&&&&&&&&& strtemp.Format("单击的是第%d行第%d列",&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& pNMListView-&iItem, pNMListView-&iSubItem);&&&&&&&&&&&&&&& AfxMessageBox(strtemp);&&&&&&&&&& }&&&&&&&&& */&&&&&&&&&& *pResult = 0;&&&&& }
14、判断是否点击在listctrl的checkbox上&&&&& 添加listctrl控件的NM_CLICK消息相应函数&&&&& void CTest6Dlg::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult)&&&&& {&&&&&&&&&& DWORD dwPos = GetMessagePos();&&&&&&&&&& CPoint point( LOWORD(dwPos), HIWORD(dwPos) );&& &&&&&&&&&& m_list.ScreenToClient(&point);&& &&&&&&&&&& LVHITTESTINFO&&&&&&&&&& lvinfo.pt =&&&&&&&&&& lvinfo.flags = LVHT_ABOVE;&&&& &&&&&&&&&& UINT nF&&&&&&&&&& int nItem = m_list.HitTest(point, &nFlag);&&&&&&&&&& //判断是否点在checkbox上&&&&&&&&&& if(nFlag == LVHT_ONITEMSTATEICON)&&&&&&&&&& {&&&&&&&&&&&&&&& AfxMessageBox("点在listctrl的checkbox上");&&&&&&&&&& } &&&&&&&&&& *pResult = 0;&&&&& }
15、右键点击listctrl的item弹出菜单&&&&& 添加listctrl控件的NM_RCLICK消息相应函数&&&&& void CTest6Dlg::OnRclickList1(NMHDR* pNMHDR, LRESULT* pResult)&&&&& {&&&&&&&&&& NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;&&&&&&&&&& if(pNMListView-&iItem != -1)&&&&&&&&&& {&&&&&& &&&&&&&&&&&&&&& m_pRClickMenu = new CMenu();&&&&&&& &ASSERT(m_pRClickMenu != NULL);&&&&&&&&&&&&&&& m_pRClickMenu-&CreatePopupMenu();&&&&&&&&&&&& &m_pRClickMenu-&AppendMenu(MF_STRING, IDC_BTN_SEND_EMAIL, "发送邮件");&&&&&&& &m_pRClickMenu-&AppendMenu(MF_STRING, IDC_BTN_COPY, "复制到剪切板");&&&&&&&&&&&&&&& // DWORD dwPos = GetMessagePos();&&&&&&&&&&&&&& // CPoint point( LOWORD(dwPos), HIWORD(dwPos) );&&&&&&&&&&&&&&& CP&&GetCursorPos(&point);&&m_pRClickMenu-&TrackPopupMenu(TPM_LEFTALIGN, point.x, point.y, this, NULL);&&&&&&&&&& } &&&&&&&&&& *pResult = 0;& }
16、item切换焦点时(包括用键盘和鼠标切换item时),状态的一些变化顺序&&&&& 添加listctrl控件的LVN_ITEMCHANGED消息相应函数&&&&& void CTest6Dlg::OnItemchangedList1(NMHDR* pNMHDR, LRESULT* pResult)&&&&& {&&&&&&&&&& NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;&&&&&&&&&& // TODO: Add your control notification handler code here&&& &&&&&&&&&& CString sT& &&&&&&&&&& if((pNMListView-&uOldState & LVIS_FOCUSED) == LVIS_FOCUSED && &&&&&&&&&&& (pNMListView-&uNewState & LVIS_FOCUSED) == 0)&&&&&&&&&& {&&&&&&&&&&&&&&& sTemp.Format("%d losted focus",pNMListView-&iItem);&&&&&&&&&& }&&&&&&&&&& else if((pNMListView-&uOldState & LVIS_FOCUSED) == 0 &&&&&&&&&&&&&&&& (pNMListView-&uNewState & LVIS_FOCUSED) == LVIS_FOCUSED)&&&&&&&&&& {&&&&&&&&&&&&&&& sTemp.Format("%d got focus",pNMListView-&iItem);&&&&&&&&&& } & &&&&&&&&&& if((pNMListView-&uOldState & LVIS_SELECTED) == LVIS_SELECTED &&&&&&&&&&&&& (pNMListView-&uNewState & LVIS_SELECTED) == 0)&&&&&&&&&& {&&&&&&&&&&&&&&& sTemp.Format("%d losted selected",pNMListView-&iItem);&&&&&&&&&& }&&&&&&&&&& else if((pNMListView-&uOldState & LVIS_SELECTED) == 0 &&&&&&&&&&&&& (pNMListView-&uNewState & LVIS_SELECTED) == LVIS_SELECTED)&&&&&&&&&& {&&&&&&&&&&&&&&& sTemp.Format("%d got selected",pNMListView-&iItem);&&&&&&&&&& }&&&&&&&&&& *pResult = 0;&&&&& }
17、listctrl内容进行大数据量更新时,避免闪烁。&&&&& m_list.SetRedraw(FALSE);&&&&& //更新内容&&&&& m_list.SetRedraw(TRUE);&&&&& // m_list.Invalidate();&&&&& // m_list.UpdateWindow();
18、listctrl第一列始终居左,解决办法&&& 把第一列当成虚列,然后插入第二列及数据,最后删除第一列,以后列还是从0开始。&&& pListCtrl-&InsertColumn(0, "", LVCFMT_CENTER, 0);&&&& pListCtrl-&InsertColumn(1, "姓名", LVCFMT_CENTER, 80);&&& pListCtrl-&InsertColumn(2, "性别", LVCFMT_CENTER, 100);&&& pListCtrl-&InsertColumn(3, "国籍", LVCFMT_CENTER, 100);&&& pListCtrl-&DeleteColumn(0);
19、使listctrl可编辑& 做法是:当单击listctrl时使整行高亮显示,双击listctrl时让编辑框移动到你双击所在列的位置上,此时编辑框获得焦点并且将listctrl的值更新到编辑框上,&&&&&&&&& 此时可以修改内容,当鼠标点击其他位置时,编辑框失去焦点,同时将编辑框的内容更新到listctrl中,从而完成对listctrl子项的修改。&& 1) 首先在对话框中添加一个CEdit控件,并定义CEdit变量m_edit。当对话框初始化函数中隐藏该控件。&&&&& m_edit.ShowWindow(SW_HIDE);
&& 2) 然后对CListCtrl添加消息NM_DBLCLK(双击事件),在消息中添加代码&&&& NM_LISTVIEW* pNMListView=(NM_LISTVIEW*)pNMHDR;&&&& CR&&&& if(pNMListView-&iItem!=-1)&&&& {&&&&&&& m_row=pNMListView-&iI//m_row为被选中行的行序号(int类型成员变量)&&&&&&& m_column=pNMListView-&iSubI//m_column为被选中行的列序号(int类型成员变量)&&&&&&& m_list.GetSubItemRect(pNMListView-&iItem, pNMListView-&iSubItem,LVIR_LABEL,rc);//取得子项的矩形&&&&&&& rc.left+=3;&&&&&&& rc.top+=2;&& &rc.right+=3;&&& &rc.bottom+=2;&& &char * ch=new char [128];&& &m_list.GetItemText(pNMListView-&iItem, pNMListView-&iSubItem,ch,128);//取得子项的内容&& &m_edit.SetWindowText(ch);//将子项的内容显示到编辑框中&& &m_edit.ShowWindow(SW_SHOW);//显示编辑框&& &m_edit.MoveWindow(&rc);//将编辑框移动到子项上面,覆盖在子项上&& &m_edit.SetFocus();//使编辑框取得焦点&& &m_edit.CreateSolidCaret(1,rc.Height()-5);//创建一个光标& &m_edit.ShowCaret();//显示光标&& &m_edit.SetSel(-1);//使光标移到最后面&&&&& }&&&&& *pResult = 0;
&& 3) 然后,添加CEdit失去焦点时的消息EN_KILLFOCUS。在该消息中添加代码使编辑框中的内容更新到CListCtrl中。&CS&m_edit.GetWindowText(str);//取得编辑框的内容&m_list.SetItemText(m_row,m_column,str);//将该内容更新到CListCtrl中&m_edit.ShowWindow(SW_HIDE);//隐藏编辑框
阅读(...) 评论()}

我要回帖

更多关于 vs2010 验证控件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信