vc++及MFC部分控件及功能实现总结
- 格式:doc
- 大小:158.00 KB
- 文档页数:22
VCMFC中的CComboBox控件使用详解VC/MFC中的CComboBox控件使用详解CComboBox控件详解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() const;(此乃函数原型,我会列在每条的后面) 下面的例子是程序中各个按钮里面的代码int i;CString str;i=m_cbox.GetCount();str.Format ("%d",i);m_end="一共有"+str+"个数据";UpdateData(FALSE);2.GetCurSel() 函数:用以得到用户选中下拉列表框中数据的索引值.返回的值是重0开始的,如果没有选择任何选项将会返回-1 Int GetCurSel() constint 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(),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.GetLBT ext (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() 四个函数放在一起,他们都是针对下拉列表框的处理函数, 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组合框中,条目的对齐方式是左对齐,能设置为对中或者右对齐吗?答: 没有直接的方法,你必须自己对齐, 比如最大长度是10int i;String.Format("%10d", i);CComboBox->AddStringVC combobox 使用大全 ---------------------------------------------------一、如何添加/删除Combo Box内容1. 在Combo Box控件属性的Data标签里面添加,一行表示Combo Box下拉列表中的一行。
VC学习笔记1:按钮的使能与禁止用ClassWizard的Member Variables为按钮定义变量,如:m_Button1;则m_Button1.EnableWindow(true); 使按钮处于允许状态m_Button1.EnableWindow(false); 使按钮被禁止,并变灰显示VC学习笔记2:控件的隐藏与显示用CWnd类的函数BOOL ShowWindow(int nCmdShow)可以隐藏或显示一个控件。
例1:CWnd *pWnd;pWnd = GetDlgItem( IDC_EDIT1 ); //获取控件指针,IDC_EDIT为控件ID号pWnd->ShowWindow( SW_HIDE ); //隐藏控件例2:CWnd *pWnd;pWnd = GetDlgItem( IDC_EDIT1 ); //获取控件指针,IDC_EDIT为控件ID号pWnd->ShowWindow( SW_SHOW ); //显示控件以上方法常用于动态生成控件,虽说用控件的Create函数可以动态生成控件,但这种控件很不好控制,所以用隐藏、显示方法不失为一种替代手段。
VC学习笔记3:改变控件的大小和位置用CWnd类的函数MoveWindow()或SetWindowPos()可以改变控件的大小和位置。
void MoveWindow(int x,int y,int nWidth,int nHeight);void MoveWindow(LPCRECT lpRect);第一种用法需给出控件新的坐标和宽度、高度;第二种用法给出存放位置的CRect对象;例:CWnd *pWnd;pWnd = GetDlgItem( IDC_EDIT1 ); //获取控件指针,IDC_EDIT1为控件ID号pWnd->MoveWindow( CRect(0,0,100,100) ); //在窗口左上角显示一个宽100、高100的编辑控件SetWindowPos()函数使用更灵活,多用于只修改控件位置而大小不变或只修改大小而位置不变的情况:BOOL SetWindowPos(const CWnd* pWndInsertAfter,int x,int y,intcx,int cy,UINT nFlags);第一个参数我不会用,一般设为NULL;x、y控件位置;cx、cy控件宽度和高度;nFlags常用取值:SWP_NOZORDER:忽略第一个参数;SWP_NOMOVE:忽略x、y,维持位置不变;SWP_NOSIZE:忽略cx、cy,维持大小不变;例:CWnd *pWnd;pWnd = GetDlgItem( IDC_BUTTON1 ); //获取控件指针,IDC_BUTTON1为控件ID号pWnd->SetWindowPos( NULL,50,80,0,0,SWP_NOZORDER |SWP_NOSIZE ); //把按钮移到窗口的(50,80)处pWnd = GetDlgItem( IDC_EDIT1 );pWnd->SetWindowPos( NULL,0,0,100,80,SWP_NOZORDER |SWP_NOMOVE ); //把编辑控件的大小设为(100,80),位置不变pWnd = GetDlgItem( IDC_EDIT1 );pWnd->SetWindowPos( NULL,0,0,100,80,SWP_NOZORDER ); //编辑控件的大小和位置都改变以上方法也适用于各种窗口。
VC++MFC 常用控件使用方法4.1 Button按钮窗口(控件)在MFC中使用CButton表示,CButton包含了三种样式的按钮,Push Button,Check Box,Radio Box。
所以在利用CButton对象生成按钮窗口时需要指明按钮的风格。
创建按钮:BOOL CButton::Create( LPCTSTR lpszCaption, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );其中lpszCaption是按钮上显示的文字,dwStyle为按钮风格,除了Windows风格可以使用外(如WS_CHILD|WS_VISUBLE|WS_BORDER)还有按钮专用的一些风格。
BS_AUTOCHECKBOX 检查框,按钮的状态会自动改变 Same as a check box, except thata check mark appears in the check box when the user selects the box; the checkmark disappears the next time the user selects the box.BS_AUTORADIOBUTTON 圆形选择按钮,按钮的状态会自动改变 Same as a radio button, except that when the user selects it, the button automatically highlights itself andremoves the selection from any other radio buttons with the same style in the same group.BS_AUTO3STATE 允许按钮有三种状态即:选中,未选中,未定 Same as a three-state check box, except that the box changes its state when the user selects it.BS_CHECKBOX 检查框 Creates a small square that has text displayed to its right (unless this style is combined with the BS_LEFTTEXT style).BS_DEFPUSHBUTTON 默认普通按钮 Creates a button that has a heavy black border.The user can select this button by pressing the ENTER key. This style enables theuser to quickly select the most likely option (the default option).BS_LEFTTEXT 左对齐文字 When combined with a radio-button or check-box style, the text appears on the left side of the radio button or check box.BS_OWNERDRAW 自绘按钮 Creates an owner-drawn button. The framework calls the DrawItem member function when a visual aspect of the button has changed. Thisstyle must be set when using the CBitmapButton class.BS_PUSHBUTTON 普通按钮 Creates a pushbutton that posts a WM_COMMAND message to the owner window when the user selects the button.BS_RADIOBUTTON 圆形选择按钮 Creates a small circle that has text displayed to its right (unless this style is combined with the BS_LEFTTEXT style). Radio buttons are usually used in groups of related but mutually exclusive choices.BS_3STATE 允许按钮有三种状态即:选中,未选中,未定 Same as a check box, except that the box can be dimmed as well as checked. The dimmed state typically is used toshow that a check box has been disabled.rect为窗口所占据的矩形区域,pParentWnd为父窗口指针,nID为该窗口的ID值。
MFC_基本控件使用MFC(Microsoft Foundation Class)是一种用于开发Windows应用程序的编程框架,它提供了一系列的类和函数,方便开发者快速地创建Windows界面和处理事件。
在MFC中,基本控件是开发应用程序的重要组成部分,它们用于显示和交互用户界面。
本文将介绍MFC中几种常用的基本控件以及它们的使用方法。
1. 按钮控件(CButton):按钮控件用于接收用户的点击操作,通常用于触发相应的事件处理函数。
创建按钮控件的方法如下:1)在资源视图中右击对应的对话框,选择“添加控件”;2)选择“按钮”并将其拖动到对话框上;3)设置按钮的属性,如ID、文本、尺寸等。
1)在资源视图中右击对应的对话框,选择“添加控件”;组合框控件允许用户从预定义的选项中进行选择,类似于下拉列表。
创建组合框控件的方法如下:1)在资源视图中右击对应的对话框,选择“添加控件”;2)选择“组合框”并将其拖动到对话框上;3)设置组合框的属性,如ID、选项列表、尺寸等。
4. 列表框控件(CListBox):列表框控件用于显示一个选项列表,并且可以支持多选。
创建列表框控件的方法如下:1)在资源视图中右击对应的对话框,选择“添加控件”;2)选择“列表框”并将其拖动到对话框上;3)设置列表框的属性,如ID、选项列表、尺寸等。
5. 树形视图控件(CTreeCtrl):树形视图控件用于显示一个层级结构的数据,类似于文件夹结构或者程序的菜单栏。
创建树形视图控件的方法如下:1)在资源视图中右击对应的对话框,选择“添加控件”;2)选择“树形视图”并将其拖动到对话框上;3)设置树形视图的属性,如ID、尺寸等;4)使用CTreeCtrl的成员函数添加、删除、修改树节点。
6. List控件(CListCtrl):1)在资源视图中右击对应的对话框,选择“添加控件”;2)选择“List控件”并将其拖动到对话框上;3)设置List控件的属性,如ID、列数、尺寸等;以上是几种常用的MFC基本控件的使用方法,通过使用这些控件,可以轻松地创建出一个功能完善、交互友好的Windows应用程序。
MFC通用控件使用详解首先,我们需要在MFC应用程序中包含要使用的控件的头文件。
例如,要使用按钮控件,我们需要包含afxwin.h文件。
然后,在对话框资源中添加一个按钮控件,并给它一个唯一的ID值。
在OnInitDialog(函数中,我们可以使用以下代码获取按钮控件的指针并对其进行操作:```cppCButton* pButton = (CButton*)GetDlgItem(IDC_BUTTON1);``````cpppButton->SetWindowText(_T("Click Me"));```我们还可以使用以下代码来设置按钮的样式:```cpppButton->SetButtonStyle(BS_DEFPUSHBUTTON);```这将使按钮默认显示为按下按钮。
```cppCEdit* pEdit = (CEdit*)GetDlgItem(IDC_EDIT1);``````cppCString strText;pEdit->GetWindowText(strText);``````cpppEdit->SetWindowText(_T("Hello World"));```对于列表框控件,我们可以使用以下代码获取列表框的指针:```cppCListBox* pListBox = (CListBox*)GetDlgItem(IDC_LIST1); ```然后,我们可以使用以下代码向列表框中添加项:```cpppListBox->AddString(_T("Item 1"));pListBox->AddString(_T("Item 2"));```我们还可以使用以下代码来获取列表框中选定项的索引:```cppint nIndex = pListBox->GetCurSel(;```此外,MFC通用控件还提供了进度条控件和组合框控件等功能。
MFCCListCtrl控件使用总结整理一、基本操作:1. 创建CListCtrl实例,可以通过对话框资源添加控件或代码创建:```cppCListCtrl m_listCtrl;```2.设置列表样式,例如设置为报表样式:```cppm_listCtrl.Create(WS_VISIBLE , WS_CHILD , LVS_REPORT, CRect(10, 10, 500, 300), this, IDC_LIST_CTRL);```3.设置列表列头:```cppm_listCtrl.InsertColumn(0, _T("序号"), LVCFMT_LEFT, 50);m_listCtrl.InsertColumn(1, _T("姓名"), LVCFMT_LEFT, 100);m_listCtrl.InsertColumn(2, _T("年龄"), LVCFMT_LEFT, 50);```4.添加行数据:```cppint nItemIndex = m_listCtrl.InsertItem(0, _T("1"));m_listCtrl.SetItemText(nItemIndex, 1, _T("张三"));m_listCtrl.SetItemText(nItemIndex, 2, _T("20"));``````cppm_listCtrl.DeleteItem(nItemIndex); // 删除```二、高级操作:1.设置列宽:```cppm_listCtrl.SetColumnWidth(0, LVSCW_AUTOSIZE_USEHEADER);m_listCtrl.SetColumnWidth(1, LVSCW_AUTOSIZE);m_listCtrl.SetColumnWidth(2, LVSCW_AUTOSIZE);```2.设置行高:```cppm_listCtrl.SetItemHeight(0, 50);```3.设置行选中状态:```cppm_listCtrl.SetItemState(0, LVIS_SELECTED, LVIS_SELECTED);```4.设置行背景色:```cppm_listCtrl.SetItemState(0, LVIS_SELECTED , LVIS_FOCUSED, LVIS_SELECTED , LVIS_FOCUSED);m_listCtrl.SetSelectionMark(0);m_listCtrl.SetItemState(0, LVIS_SELECTED, LVIS_SELECTED);```5.设置行图标:```cppm_listCtrl.SetItemImage(nItemIndex, nImageIndex);```6.获取行数和列数:```cppint nItemCount = m_listCtrl.GetItemCount(;int nColumnCount = m_listCtrl.GetHeaderCtrl(->GetItemCount(;```7.获取行数据:```cppCString strItemText = m_listCtrl.GetItemText(nItemIndex, nSubItemIndex);```三、自定义操作:1.列排序:```cpp```2.行拖拽排序:```cppm_listCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT ,LVS_EX_GRIDLINES , LVS_EX_HEADERDRAGDROP);``````cppm_listCtrl.ModifyStyle(0, LVS_EDITLABELS);```4.行点击事件:```cppON_NOTIFY(NM_CLICK, IDC_LIST_CTRL, OnLButtonDown)```5.自定义绘制:```cppON_WM_DRAWITEM```四、注意事项和优化建议:1. 大量数据时,慎用SetRedraw方法来控制刷新。
1按钮控件1.1如何使用按钮控件方法是双击编辑对话框按钮图标,之后就进入了这个按钮单击的处理函数,在这里,你可以添加按钮单击后要做的事是什么.1.2如何让按钮显示图标样式首先进入ResourceView里,然后右击Icon选择插入,之后选择你要的图标,假设这个图标的ID名为IDI_ICON2,那么下一步,就是进入对话类中的OnPaint()函数,并在else里面添加如下语句:m_Quit.SetIcon(LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE(IDI_ICON2)));注:m_Quit为要显示图标按钮的关联类;还要说明的是,必须把按钮属性样式里把图标的构给打上才行,要不然是无法显示图标的。
1.3如何让按钮显示文本信息先要在对话框添加一个CToolTipCtrl类的对象,如:CToolTipCtrl m_ToolTip;然后在OnInitDialog添加以下语句:m_ToolTip.Create(this);m_ToolTip.AddTool(&m_Confirm,”文本信息”);//m_Confirm为要显示文本按钮关联的类对象然后在类视图窗口中右击对话框类,在弹出的菜单中选择Add Virtual Funtion,然后再双击PreTranslateMessage;添加右边窗口中去,这样便增加了一个方法,在此方法中添加以下语句m_ToolTip.RelayEvent(pMsg);既可;2.1如何使用复选框控件复选框控件是有一个X的图标,比如是三个复选框吧,首先各为三个复选框关联一个控件类,比如是m_Vip,m_Manager,m_Commoner;那么调用m_Vip.GetCheck();返回的是一个整数,如果返回值等于BST_CHECKED;那么此类关联的复选框控件就被选中了。
如果要获取此类关联控件的文本信息就用m_Vip.GetWindowText(Modal);其中Modal是一个CString类的对象,跟Edit是差不多的,存储有信息。
VC MFC工具栏(CToolBar)控件工具栏工具栏控件在控件面板里没有对应的选项(图标),但有一个工具栏控件类CToolBar,所以我们如果要创建一个工具栏控件并显示在窗口里的话,只能用代码来完成,事实上任何一种控件,都可以用代码创建,如CButton按钮类,现举一个用代码创建按钮控件并显示在窗口里的例子。
CButton类的Create成员函数可以创建一个按钮控件,这个函数的格式如下:BOOL CButton::Create(LPCTSTR lpszCaption,//按钮显示的文本DWORD dwStyle,//按钮样式const RECT& rect,//按钮控件显示的区域(大小)相对于父窗口CWnd* pParentWnd,//按钮的父窗口(按钮属于哪个窗口)UINT nID//指明按钮控件ID号);这个函数的第二个参数dwStyle是按钮控件的样式,也就是在可视化添加按钮控件时,右击按钮控件,选择属性,之后会弹出一个对话框,这个对话框有一个样式的选项,该参数即对应这个样式。
好了,了解了上面这些我们就来动态创建一个按钮吧,首先在对应话类里添加一个按钮类成员变量CButtonm_Button;然后在对话框编辑区里给对话框添加一个按钮控件(单击这个按钮创建按钮控件),然后添加这个按钮控件单击消息处理函数,并在函数添加以下语句:RECT ButtonRect;//按钮控件显示的区域(大小)相对于父窗口ButtonRect.left=10;ButtonRect.top=10;ButtonRect.right=80;ButtonRect.bottom=30;m_Button.Create("动态创建",WS_CHILD,ButtonRect,this,1115);m_Button.ShowWindow(SW_SHOW);//显示按钮控件知道了怎样动态创建按钮控件,我们就来创建工具栏控件。
VCMFC之ListCtrl控件使用经验总结(转)以下未经说明,listctrl默认view 风格为report相关类及处理函数MFC:CListCtrl类SDK:以“ListView_”开头的一些宏。
如ListView_InsertColumn--------------------------------------------------------------------------------1. CListCtrl 风格LVS_ICON: 为每个item显示大图标LVS_SMALLICON: 为每个item显示小图标LVS_LIST: 显示一列带有小图标的itemLVS_REPORT: 显示item详细资料直观的理解:windows资源管理器,“查看”标签下的“大图标,小图标,列表,详细资料”--------------------------------------------------------------------------------2. 设置listctrl 风格及扩展风格LONG lStyle;lStyle = GetWindowLong(m_list.m_hWnd, GWL_STYLE);//获取当前窗口stylelStyle &= ~LVS_TYPEMASK; //清除显示方式位lStyle |= LVS_REPORT; //设置styleSetWindowLong(m_list.m_hWnd, GWL_STYLE, lStyle);//设置styleDWORD 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); //设置扩展风格注:listview的style请查阅msdn/library/default.asp?url=/library/ en-us/wceshellui5/html/wce50lrflistviewstyles.asp--------------------------------------------------------------------------------3. 插入数据m_list.InsertColumn( 0, "ID", LVCFMT_LEFT, 40 );//插入列m_list.InsertColumn( 1, "NAME", LVCFMT_LEFT, 50 );int nRow = m_list.InsertItem(0, “11”);//插入行m_list.SetItemText(nRow, 1, “jacky”);//设置数据--------------------------------------------------------------------------------4. 一直选中item选中style中的Show selection always,或者在上面第2点中设置LVS_SHOWSELALWAYS--------------------------------------------------------------------------------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);CString str;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中所有选中行的序号方法一:CString str;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;lvi.iItem = nItemIndex;lvi.iSubItem = 0;lvi.mask = LVIF_TEXT;lvi.pszText = szBuf;hTextMax = 1024;m_list.GetItem(&lvi);关于得到设置item的状态,还可以参考msdn文章Q173242: Use Masks to Set/Get Item States in CListCtrl/kb/173242/en-us--------------------------------------------------------------------------------9. 得到listctrl的所有列的header字符串内容LVCOLUMN lvcol;char str[256];int nColNum;CString strColumnName[4];//假如有4列nColNum = 0;lvcol.mask = LVCF_TEXT;lvcol.pszText = str;hTextMax = 256;while(m_list.GetColumn(nColNum, &lvcol)){strColumnName[nColNum] = lvcol.pszText;nColNum++;}--------------------------------------------------------------------------------10. 使listctrl中一项可见,即滚动滚动条m_list.EnsureVisible(i, FALSE);--------------------------------------------------------------------------------11. 得到listctrl列数int nHeadNum = m_list.GetHeaderCtrl()->GetItemCount();--------------------------------------------------------------------------------12. 删除所有列方法一:while ( m_list.DeleteColumn (0))因为你删除了第一列后,后面的列会依次向上移动。
目录1、表格控件的使用CListCtrl (1)2、CString转Char数组和指针、Int等数据类型 (1)3、消息窗口的使用MessageBox()AfxMessageBox() (2)4 、编辑框CEdit使用 (2)5、按钮的使用 (3)6、Flash控件的使用 (5)7、为VC界面加载ssk皮肤 (5)8、窗口菜单的使用 (5)9、窗口添加右击菜单 (5)10、为静态文本添加动态显示时间 (6)11、状态栏的使用 (6)12、改变VC对话框的颜色实现 (7)13、为MFC对话框添加背景图片 (9)14、进度条的使用 (9)15、下拉列表框CComboBox的使用 (10)16、使用Vc读取数据库中的数据实现 (11)17、VC下删除、复制和移动文件实现 (12)18、VC与MFC组合键的使用 (15)19、VC中线程的使用 (16)20、 MFC实现打开和连接一个文件、一个程序、一个网页 (17)21、VC中常用文件操作 (17)22、MFC中画直线和曲线 (18)23、将十进制数转化为指定长度的二进制数 (20)24、实现VC程序打包 (20)1、表格控件的使用CListCtrl将表格控件托到窗口后,将properies中style中的view改为report,在classwizard中的menber variables 添加对应的controll变量m_list,在OnInitDialog()中初始化表格://初始化Listctrl表头m_list.SetBkColor(RGB(255, 255, 255));//设置背景颜色m_list.SetTextColor(RGB(0,0,0));//设置文本颜色m_list.SetTextBkColor(RGB(255, 151, 240)); //设置文本背景颜色m_list.SetExtendedStyle(LVS_EX_FLATSB|LVS_EX_FULLROWSELECT|LVS_EX_HEADERDRAGDR OP|LVS_EX_ONECLICKACTIV ATE|LVS_EX_GRIDLINES);//设置表格风格m_list.InsertColumn(0,_T("序号"),LVCFMT_IMAGE|LVCFMT_LEFT);//设置列名m_list.InsertColumn(1,_T("信源符号"));//设置列名m_list.InsertColumn(2,_T("概率"));m_list.SetColumnWidth(0,60); //设置列宽m_list.SetColumnWidth(1,120);往表格中插入数据:for(i=0;i<cnt;i++)//将编码信息存入表格{m_list.InsertItem(i,"");//初始化行si.Format("%d",i+1);m_list.SetItemText(i,0,si); //插入字符str1.Format("%c",zifu[i]);m_list.SetItemText(i,1,str1);str2.Format("%.3f",weigh[i]);m_list.SetItemText(i,2,str2);}删除表格所有数据:m_list.DeleteAllItems();//删除表格中所有数据2、CString转Char数组和指针、Int等数据类型CString cstr;Char s[100];char *p = (LPSTR)(LPCTSTR)cstr;strcpy(s,p);string 转CStringCString.format(”%s”, string.c_str());char 转CStringCString.format(”%s”, char*);char 转stringstring s(char *);string 转char *char *p = string.c_str();CString 转stringstring s(CString.GetBuffer());3、消息窗口的使用MessageBox()AfxMessageBox()函数原型:int MessageBox(HWND hWnd,LPCTSTRlpText,LPCTSTR lpCaption,UINT UType);参数:hWnd:标识将被创建的消息框的拥有窗口。
如果此参数为NULL,则消息框没有拥有窗口。
及为显示内容lpText:指向一个以NULL结尾的、含有将被显示的消息的字符串的指针。
lpCaption:指向一个以NULL结尾的、用于对话框标题的字符串的指针。
uType:指定一个决定对话框的内容和行为的位标志集。
此参数可以为下列标志组中标志的组合。
指定下列标志中的一个来显示消息框中的按钮,标志的含义如下。
MB_ABORTRETRYIGNORE:消息框含有三个按钮:Abort,Retry和Ignore。
MB_OK:消息框含有一个按钮:OK。
这是缺省值。
MB_OKCANCEL:消息框含有两个按钮:OK和Cancel。
MB_RETRYCANCEL:消息框含有两个按钮:Retry和Cancel。
MB_YESNO:消息框含有两个按钮:Yes和No。
MB_YESNOCANCEL:消息框含有三个按钮:Yes,No和Cancel。
指定下列标志中的一个来显示消息框中的图标:标志的含义如下。
MB_ICONEXCLAMATION:MB_ICONWARNING:一个惊叹号出现在消息框。
MB_ICONINFORMATION:MB_ICONASTERISK:一个圆圈中小写字母i组成的图标出现在消息框。
MB_ICONQUESTION:一个问题标记图标出现在消息框。
MB_ICONSTOP:MB_ICONERROR:MB_ICONHAND:一个停止消息图标出现在消息框。
指定下列标志中的一个来显不缺省的按钮:标志的含义如下。
MB_DEFBUTTON1:第一个按钮为缺省按钮。
如果MB_DEFBUTTON2,MB_DEFBUTTON3,MB_DEFBUTTON4没有被指定,则MB_DEFBUTTON1为缺省值。
MB_DEFSUTTON2;第二个按钮为缺省按钮。
MB_DEFBUTTON3:第三个按钮为缺省按钮。
MB_DEFBUTTON4:第四个按钮为缺省按钮。
使用举例:MessageBox("字符串为空!请输入字符串!","警告",MB_ICONEXCLAMATION);AfxMessageBox("字符串为空!请输入字符串!");4 、编辑框CEdit使用添加滚动条使其自动换行,选择properties中style,选上multiline、vertical scroll 和Auto Vscroll属性;设置编辑框字体颜色:在窗口中添加函数OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor):在其中加入代码:if(pWnd->GetDlgCtrlID()==IDC_EDIT1){pDC->SetTextColor(RGB(255,125,0));// 设置字体颜色}设置编辑框和静态框为透明效果:HBRUSH CloginDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor){HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);if(nCtlColor==CTLCOLOR_STATIC)//对所有的STATIC控件的属性进行设定{pDC->SetBkMode(TRANSPARENT);return (HBRUSH)::GetStockObject(NULL_BRUSH);}if(nCtlColor==CTLCOLOR_EDIT)//对所有的STATIC控件的属性进行设定{pDC->SetBkMode(TRANSPARENT);return (HBRUSH)::GetStockObject(NULL_BRUSH);}return hbr;}将文件内容读入到编辑框:在打开文件按钮添加代码CFileDialog dlg(true,NULL,"*.txt",OFN_FILEMUSTEXIST|OFN_HIDEREADONLY,"Text Files (*.txt;*.doc;*.docx)|*.txt;*.doc;*.docx|All CompressFiles (*.*)|*.*||",this); //构造文件打开对话框CString strPath,strText="",s;if(dlg.DoModal() == IDOK){strPath = dlg.GetPathName();//获得文件路径CStdioFile file2;if(!file2.Open( strPath,CFile::modeRead)) //打开文件return;while(true)//按行循环读取文件内容存入s{if(!file2.ReadString(s))break;strText=strText+s;}}m_edit1=strText;UpdateData(false);5、按钮的使用按钮添加图片:第一种:Button属性页里Style的Bitmap点上CBitmap Bitmap;Bitmap.LoadBitmap(IDB_BITMAP1);HBITMAP hBitmap=(HBITMAP)Bitmap.Detach();CButton *pButton=(CButton*)GetDlgItem(IDCANCEL);pButton->SetBitmap(hBitmap);感觉效果不是很好。
因为图片不会自动拉伸。
第二种:可以采用CButtonST控件,挺好用的,比MFC的那些封装好用。
第三种:把button按钮属性设置为ower draw然后映射onDrawItem消息在ondraw函数内自己绘制就可以了void CUi6Dlg::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct){if(nIDCtl == IDC_HELLO_CFAN){//绘制按钮框架UINT uStyle = DFCS_BUTTONPUSH;//是否按下去了?if (lpDrawItemStruct->itemState & ODS_SELECTED)uStyle |= DFCS_PUSHED;CDC dc;dc.Attach(lpDrawItemStruct->hDC);dc.DrawFrameControl(&lpDrawItemStruct->rcItem, DFC_BUTTON, uStyle);//输出文字dc.SelectObject(&m_Font);dc.SetTextColor(RGB(0, 0, 255));dc.SetBkMode(TRANSPARENT);CString sText;m_HelloCFan.GetWindowText(sText);dc.TextOut(lpDrawItemStruct->rcItem.left + 20, lpDrawItemStruct->rcItem.top + 20, sText); //是否得到焦点if(lpDrawItemStruct->itemState & ODS_FOCUS){//画虚框CRect rtFocus = lpDrawItemStruct->rcItem;rtFocus.DeflateRect(3, 3);dc.DrawFocusRect(&rtFocus);}return;}CDialog::OnDrawItem(nIDCtl, lpDrawItemStruct);}第四种:1,按钮属性Onwer Drew选上,按钮ID: IDC_BUTTON12,定义private变量:CBitmapButton m_button;3,在初始化里边m_button.LoadBitmaps(IDB_BITMAP1, IDB_BITMAP2);//IDB_BITMAP1:平时;IDB_BITMAP2:按下m_button.SubclassDlgItem(IDC_BUTTON1, this);m_button.SizeToContent();设置按钮显示的文字代码:GetDlgItem(IDC_BUTTON2)->SetWindowText("开始编码");6、Flash控件的使用[工具(T)]--[ActiveX Control Test Container]--[弹出对话框][File]--[Register Controls]--[弹出对话框]找到C:WINDOWS\system32\Macromed\lash\Flash10e.ocx,[打开]弹出"MFC ClassWizard"框里为FLASH的ID添加映射:选择IDC_SHOCKWA VEFLASH1、FSCommand、[Add Function],弹出"Add Member Function"选[OK]在"MFC ClassWizard"框里第2页"Member Variables",为FLASH的ID添加类,弹出提示对话框选择[确定],我们定义类名字,为m_flash,基类为CShockwaveFlash"播放按钮"代码:为视图资源里的"播放"按钮消息响应函数修改代码void CTest0407Dlg::OnOK() //对应"播放"按钮{// TODO: Add extra validation here//CDialog::OnOK();m_flash.LoadMovie(0,"c:\\VC\\tu\\12.swf"); //播放FLASH文件,路径C:\VC\tu\12.swfm_flash.Play();}7、为VC界面加载ssk皮肤到网上下载这三个文件skinppwtl.dll,SkinPPWTL.h,SkinPPWTL.lib放到工程下,我的百度网盘下载连接(/netdisk/singlepublic?fid=564282_898919684)在界面的.cpp中添加头文件SkinPPWTL.h,在InitInstance()中添加skinppLoadSkin("skin\\xp_corona.ssk");//初始化皮肤xp_corona.ssk,按Alt+F7,选择连接,添加SkinPPWTL.lib确认即可。