VS2010控件缩写
VS2010和MFC编程入门之33(常用控件:标签控件Tab Control 下)

VS2010MFC编程入门之三十三(常用控件:标签控件TabControl 下)标签控件知识的上半部分,这里开始下半部分。
标签控件的创建MFC为标签控件的操作提供了CTabCtrl类。
与之前的控件类似,创建标签控件可以在对话框模板中直接拖入Tab Control,也可以使用CTabCtrl类的Create成员函数创建。
Create函数的原型如下:virtual BOOL Create(DWORD dwStyle,const RECT&rect,CWnd* pParentWnd,UINT nID);参数dwStyle为标签控件的风格,rect为标签控件的位置和大小,pParentWnd为指向标签控件父窗口的指针,nID指定标签控件的ID。
这里还是要具体说下dwStyle,下面列出了几种主要的控件风格:TCS_BUTTONS:标签(控件上部用来选择标签页的位置)外观为按钮风格,且整个控件周围没有边框。
TCS_FIXEDWIDTH :所有标签具有相同的宽度。
TCS_MULTILINE:标签以多行显示,如果需要,可以显示所有标签。
TCS_SINGLELINE:只显示一行标签,用户可以滚动着看其他标签。
TCS_TABS:标签以普通标签样式显示,且整个控件周围有边框。
如果想了解标签控件的所有风格,可以查阅MSDN。
CTabCtrl类的主要成员函数intGetCurSel( ) const;获取标签控件中当前选择标签的索引。
如果成功则返回选择标签的索引,否则返回-1。
BOOL GetItem(intnItem,TCITEM* pTabCtrlItem) const;获取标签控件中某个标签的信息。
参数nItem为标签索引,pTabCtrlItem为指向TCITEM结构体的指针,用来接收标签信息。
若获取成功返回TRUE,否则返回FALSE。
intGetItemCount( ) const;获取标签控件中标签的数量。
可编辑的列表控件 (VS2010 修改版)

在界面上成组地显示含有多个数据项的数据集,是列表控件的主要用途。
如下图所示,Windows资源管理器中文件列表的显示就是列表控件的一个典型应用。
从数据显示的角度看,列表控件的功能已经比较强大了(支持大图标、小图标、列表、详细资料等多种显示方式;支持排序、查找、定位、增删等)。
但美中不足的是,它不支持数据项的编辑功能。
在很多的实际应用中,需要在显示数据的同时,允许用户―就地‖对某些数据项进行修改。
例如,在Windows资源管理器中,我们可以在浏览文件夹的同时修改其中任何一个文件的名字。
这主要得益于Windows资源管理器中所使用的列表控件支持字段编辑功能。
否则,简单的文件名修改也会变成一件很麻烦的事情。
因此,标准的列表控件只适合用于数据集的显示,而具有数据编辑功能的列表控件却可以在更广的范围里得到应用。
本文重点介绍其实现过程。
1.基本原理在列表控件上实现可编辑功能的原理非常简单,借助一个编辑框控件即可达到目的。
具体步骤如下:①从 CListCtrl派生一个子类,并拦截某个意味着进入编辑状态的消息,获取需要编辑的数据项的相关信息。
所拦截的消息通常选择鼠标消息(例如双击),这样更容易确定数据项在列表控件中的位置(行号、列号)及其所占的区域。
②将一个编辑框控件移动到待编辑数据项所在的区域上,装入待编辑的数据并显示出来,供用户进行修改。
③编辑结束后将修改后的数据返回给列表控件,让其在对应的子项上显示新的数据。
2.实现过程1)在VC 6.0中,新建一个基于对话框的项目,名称:Exam02。
2)编辑对话框资源,删除IDOK 按钮和静态标签;保留IDCANCEL按钮,将其标题改为―退出‖;添加一个列表控件,将其显示风格改为report。
利用类向导为列表控件添加一个关联变量m_list(Type:CListCtrl)。
在CExam02Dlg::OnInitDialog函数中添加如下代码:m_list.InsertColumn(0,_T("1"),LVCFMT_LEFT,100);m_list.InsertColumn(1,_T("2"),LVCFMT_LEFT,100);m_list.InsertColumn(2,_T("3"),LVCFMT_LEFT,100);m_list.InsertColumn(3,_T("4"),LVCFMT_LEFT,100);m_list.InsertItem(0,_T("123"));m_list.SetItemText(0,1,_T("c"));m_list.SetItemText(0,2,_T("d"));m_list.SetItemText(0,3,_T("e"));m_list.InsertItem(1,_T("456"));m_list.SetItemText(1,1,_T("f"));m_list.SetItemText(1,2,_T("g"));m_list.SetItemText(1,3,_T("h"));m_list.InsertItem(2,_T("789"));m_list.SetItemText(2,1,_T("i"));m_list.SetItemText(2,2,_T("j"));m_list.SetItemText(2,3,_T("k"));m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT );如果在此时运行程序,则显示一个普通的列表控件,不具备编辑功能(如下图所示)。
VS2010和MFC编程入门之21(常用控件:编辑框Edit Control)

VS2010/MFC编程入门之二十一(常用控件:编辑框EditControl)了解了静态文本框,这里要讲的编辑框(Edit Control)同样是一种很常用的控件,我们可以在编辑框中输入并编辑文本。
在前面加法计算器的例子中已经演示了编辑框的基本应用。
下面具体讲解编辑框的使用。
编辑框的通知消息编辑框发生某些事件时会向父窗口发送通知消息。
在对话框模板中的编辑框上点右键,选择“Add Event Handler”,为编辑框添加消息处理函数时,可以在“Message type”列表中看到这些消息。
下面简单介绍编辑框的部分通知消息。
EN_CHANGE:编辑框的内容被用户改变了,与EN_UPDATE 不同,该消息是在编辑框显示的正文被刷新后才发出的EN_ERRSPACE:编辑框控件无法申请足够的动态内存来满足需要EN_HSCROLL:用户在水平滚动条上单击鼠标EN_KILLFOCUS:编辑框失去输入焦点EN_MAXTEXT:输入的字符超过了规定的最大字符数。
在没有ES_AUTOHSCROLL 或ES_AUTOVSCROLL:的编辑框中,当正文超出了编辑框的边框时也会发出该消息 EN_SETFOCUS:编辑框获得输入焦点EN_UPDATE:在编辑框准备显示改变了的正文时发送该消息EN_VSCROLL:用户在垂直滚动条上单击鼠标编辑框的创建MFC为编辑框提供了CEdit类。
编辑框的所有操作都封装到了CEdit类中。
与静态文本框的创建类似,除了可以在对话框模板上拖进一个编辑框,然后关联一个变量或通过API函数使用,也可以在程序中动态创建编辑框,即调用CEdit类的成员函数Create。
Create成员函数的原型如下:virtual BOOL Create(DWORD dwStyle,const RECT&rect,CWnd* pParentWnd,UINT nID);参数说明:dwStyle:指定编辑框的风格。
VS2010和MFC编程入门之24(常用控件:列表框控件ListBox)

VS2010MFC编程入门之二十四(常用控件:列表框控件ListBox)了解了比较常用的按钮控件,并通过按钮控件实例说明了具体用法。
本文要讲的是列表框控件(ListBox)及其使用实例。
列表框控件简介列表框给出了一个选项清单,允许用户从中进行单项或多项选择,被选中的项会高亮显示。
列表框可分为单选列表框和多选列表框,顾名思义,单选列表框中一次只能选择一个列表项,而多选列表框可以同时选择多个列表项。
列表框也会向父窗口发送通知消息。
这些通知消息及含义如下:LBN_DBLCLK :用户用鼠标双击了一列表项,只有具有LBS_NOTIFY 的列表框才能发送该消息LBN_ERRSPACE :列表框不能申请足够的动态内存来满足需要LBN_KILLFOCUS :列表框失去输入焦点LBN_SELCANCEL:当前的选择被取消,只有具有LBS_NOTIFY 的列表框才能发送该消息LBN_SELCHANGE:单击鼠标选择了一列表项,只有具有LBS_NOTIFY 的列表框才能发送该消息LBN_SETFOCUS:列表框获得输入焦点WM_CHARTOITEM:当列表框收到WM_CHAR 消息后,向父窗口发送该消息,只有具有LBS_WANTKEYBOARDINPUT 风格的列表框才会发送该消息WM_VKEYTOITEM:当列表框收到WM_KEYDOWN 消息后,向父窗口发送该消息,只有具有LBS_WANTKEYBOARDINPUT 风格的列表框才会发送该消息列表框控件的创建MFC将列表框控件的所有操作都封装到了CListBox类中。
创建列表框控件时,可以在对话框模板中直接拖入列表框控件Listbox,然后添加控件变量使用。
但如果需要动态创建列表框,就要用到CListBox类的Create成员函数了。
Create成员函数的原型如下:virtual BOOL Create(DWORD dwStyle,const RECT&rect,CWnd* pParentWnd,UINT nID);参数rect指定了列表框的位置和尺寸,pParentWnd为父窗口的指针,nID用于指定列表框控件的ID。
VS2010中CDockablePane停靠框

VS2008中对于MFC的MDI程序界面做了增强,支持很炫的的布局效果,之前还在说不能用CDialogBar类,现在完全可以使用 CDockablePane类替代了,现在只需要新建一个继承自CDockablePane的新类,就可以在其上添加各种控件了,如组合框、对话框等,现在尝试添加一个对话框。
新建一个MFC的多文档程序,如在Wizard中选择标准的MFC MDI新建一个想放入悬浮框的对话框资源IDD_DIALOG_DOCKDLG,Style设为Child,Border设为None,建议把默认添加的OK和 Cancel去掉,因为一般情况下点击这两个按钮后,对话框会销毁,而这里是不需要销毁的(如果没去掉点击了,悬浮框中的对话框内容就不能用了),如下添加一个按钮IDC_BUTTON_TEST。
然后为对话框添加类CTestDlg,如下为按钮添加响应voidCTestDlg::OnBnClickedButtonTest(){// TODO: Add your control notification handler code here MessageBox(_T("Hello World!"));}添加继承自CDockablePane的类CMyPane,如下添加此类的WM_CREATE和WM_SIZE响应,并添加上面对话框的成员变量CTestDlgm_TestDlg;在CMyPane::OnCreate和CMyPane::OnSize函数中添加代码,如下intCMyPane::OnCreate(LPCREATESTRUCT lpCreateStruct){if (CDockablePane::OnCreate(lpCreateStruct) == -1)return -1;// TODO: Add your specialized creation code here CRectrectDummy;rectDummy.SetRectEmpty();// 创建选项卡窗口:if (!m_TestDlg.Create(IDD_DIALOG_DOCKDLG,this)){TRACE0("未能创建输出选项卡窗口/n");return -1; // 未能创建}m_TestDlg.ShowWindow(SW_SHOW);return 0;}voidCMyPane::OnSize(UINT nType, int cx, int cy){CDockablePane::OnSize(nType, cx, cy);// TODO: Add your message handler code here// 选项卡控件应覆盖整个工作区m_TestDlg.SetWindowPos (this, -1, -1, cx, cy, SWP_NOMOVE | SWP_NOACTIVATE | SWP_NOZORDER);m_TestDlg.ShowWindow(SW_SHOW);}然后在MainFrame.h代码中添加成员变量CMyPanem_MyPane;在CMainFrame::OnCreate函数中添加代码if (!m_wndStatusBar.Create(this)){TRACE0("Failed to create status bar\n");return -1; // fail to create}m_wndStatusBar.SetIndicators(indicators,sizeof(indicators)/sizeof(UINT));if (!m_MyPane.Create(_T("MyPane"), this, CRect(0, 0, 100, 100), TRUE, IDD_DIALOG_DOCKDLG,WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT | CBRS_FLOAT_MULTI)){TRACE0("未能创建输出窗口/n");return FALSE;}m_MyPane.EnableDocking(CBRS_ALIGN_ANY);// TODO: Delete these five lines if you don't want the toolbar and menubar to be dockablem_wndMenuBar.EnableDocking(CBRS_ALIGN_ANY);m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);EnableDocking(CBRS_ALIGN_ANY);DockPane(&m_wndMenuBar);DockPane(&m_wndToolBar);DockPane(&m_MyPane); // 调整m_MyPane的大小使之适合父窗口运行程序,如下点击按钮,弹出Message对话框MyPane悬浮框可以悬浮在各个位置,具体见最上面的图片。
VS2010插件之NuGet

VS2010插件之NuGet
Visual Studio(简写VS)是.net程序员开发必不可少的开发⼯具,随着VS的版本不断的升级和使⽤⽤户的扩⼤,现在针对VS开发了许多的开源免费的插件,⼤⼤的⽅便了程序员的开发,提⾼了开发效率。
今天,我将介绍⼀下VS2010下⾯⼀个免费开源的插件NuGet ,英⽂全名应该是New Get。
它是⼀个专门管理这些插件的插件,通过NuGet你可以下载安装好多功能强⼤的插件。
NuGet的安装可以通过VS2010 ⼯具⾥⾯的扩展管理器(下图),联机搜索到,直接安装。
或者通过如下的链接地址从MSDN⽹站进⾏下载,点击直接安装。
安装成功后,在VS2010 ⼯具⾥⾯的扩展管理器⾥⾯就能发现它了,如下图:
安装完了 NuGet后,怎样使⽤呢?其实使⽤起来⾮常的⽅便,只需在项⽬的引⽤处右键,弹出⼀个对话框,点击管理NuGet程序包,就可以下载和使⽤各种插件了,是不是⾮常的⽅便。
双击管理NuGet程序包,将弹出NuGet的管理界⾯,⾥⾯有最新的各种.net插件,同时也证明,免费的软件,有时候也是⾮常好⽤得。
VS2010全新操作软件说明书

VS2010崭新操作软件说明书———功能更强盛与操作简单并没有矛盾欢迎使用VS2010崭新操作软件,目前该软件支持的控制卡型号有VSA系列、VSD卡、VS-mini卡、VSC++ 卡,暂时不支持VSB卡,请勿在VSB卡上更新VS2010软件。
在VSA系列的控制卡中,也仅支持标签颜色为白底红字的控制卡,假如错误的更新了VS2010 软件将对控制卡造成不行恢复的破坏,请您慎重使用。
b5E2RGbCAP目录第一部分VS2010崭新软件简介 ...................................................................................................................................... 3p1EanqFDPw一、 VS2010 崭新软件概括 (3)二、 VS2010 崭新软件的运转环境及组件介绍 ................................................................................................. 4DXDiTa9E3d三、 VS2010 操作界面简介 (5)四、软件主要功能列表 ............................................................................................................................................................ 6RTCrpUDGiT五、菜单功能介绍 (6)1. 文件 (6)2. 编写 (7)3. 视图 (7)4. 节目 (7)5. 预览 (7)7. 控制卡 (7)8. 远程 (8)9. 工具 (8)10. 帮助 (8)六、快捷工具栏介绍 (8)七、对象工具箱介绍 (8)5PCzVD7HxA八、节目对象和属性介绍 (9)九、编写区介绍 (9)十、系统状态栏介绍 (10)总结 (10)第二章对象的使用和编写 ........................................ 10jLBHrnAILg一、名词解说 .................................. 错误!不决义书签。
VS2010,VS2005串口控件MSComm加入方法

初始化完成后就可以用m_mscomm.put_PortOpen(TRUE)来打开端口开始接收数据了。
根据我们在RThreshold中设定的参数,程序会在接收到参数中指定的字符后触发一个OnComm事件,我们就需要处理这个事件来提取接收到的数据。我们需要通过查询m_mscomm.get_CommEvent()来确定具体的事件类型,比如可能是发送也可能接收到了数据,比如在此我们要提取接收数据,事件对应的返回值应当是2。然后获得的数据就可以用m_mscomm.get_Input()来获得,这个函数返回一个VARIANT结构变量,如果我们接收的是字符串数据,那就是保存在bstrVal中,比如下面的代码就是在接收到数据时将接收到的字符串保存在str变量中。
void CMScomDlg::OnCommMscomm() { // TODO: 在此处添加消息处理程序代码 CString str; switch(m_mscomm.get_CommEvent()) { case 2: str=CString(m_mscomm.get_Input().bstrVal); break; default: break; } }
m_mscomm.put_RThreshold(1)和m_mscomm.put_SThreshold(0)分别设定接收和发送数据的时候,引发接收数据的OnComm事件时缓冲区中的字符数量,0表示不触发OnComm事件,比如put_RThreshold(1)表示每接收到一个字符就处罚OnComm事件。
m_mscomm.put_InputLen(100)设定当前接收区数据长度为0,表示全部读取。
m_mscomm.put_InputMode(0)用来设定数据接收模式,1表示二进制,0表示文本。