mfc

Visual studio C++ MFC之树形控件Tree Control

我的梦境 提交于 2020-02-27 04:36:13
背景 本篇旨在MSDN帮助文档下总结树形控件Tree Control的使用,并列出碰到的具体问题。 正文 树形控件Tree Control的类则是 CTreeCtrl ,具体成员对象详见链接,以下则描述一些典型应用。 树形控件的创建 当然,所有控件均有两种实现方式,一是在对话框模版中直接将控件 Tree Control 拖入对应的窗口上,另一种则是通过 CtreeCtrl 内的成员函数 Creat(..) 来创建。本文章不想过于繁琐,因此只记录前者。当然也可以根据 Creat(...) 函数的参数来创建,详见第三部分的关于 鸡啄米博客 的参考链接。 为了能对添加的树形控件进行操作,因此需要在对应的属性控件添加变量——在对应的窗口的树形控件右击选择 添加变量 ,取一个变量名,此处为 m_DevlistTree ,至此则由VS自动创建了该控件的控制变量 m_DevlistTree 。 在树形控件上添加元素 调用函数 CTreeCtrl::InsertItem(...) ,此函数有如下几个函数原型; HTREEITEM InsertItem(LPTVINSERTSTRUCT lpInsertStruct); 此函数根据结构体 LPTVINSERTSTRUCT 来添加属性控件元素,结构体如下: typedef struct { //插入对应节点下,为TVI_ROOT value 或者

MFC ListBox控件使用方法总结

爱⌒轻易说出口 提交于 2020-02-27 04:05:17
MFC中listbox控件是为了显示一系列的文本,每个文本占一行。 Listbox控件可以设置属性为: LBS_CHILD :(默认)子窗口 LBS_Visible :(默认)可视 LBS_Multiplesel :可选择多行 LBS_Extendedsel :可以使用shift或ctrl选择多行 LBS_SORT:所有行按字母顺序进行排序 对Listbox进行操作: Intlistbox.AddString ( LPCTSTR Str) :对listbox的首行添加一个str的文本行,即此时nIndex为0; Intlistbox.DeleteString (uint nIndex) :删除listbox中第nIndex行的文本行,注意nIndex是从0起始的; intlistbox.InsertString (uint xIndex, LPCTSTR Str):在listbox中第nIndex行插入一个str的文本行; Int listbox.GetCount ( ):获取listbox的行的总数目; Int listbox.GetCurSel ( ):得到listbox选中的文本行的行数。 Void listbox.ResetContent ( ):清除listbox中的所有数据; Intlistbox.GetCurCount ( ):获取listbox被选中的行的数目;

MFC之TreeCtrl控件使用经验总结

心不动则不痛 提交于 2020-02-27 03:56:37
树形控件可以用于树形的结构,其中有一个根接点(Root)然后下面有许多子结点,而每个子结点上有允许有一个或多个或没有子结点。MFC中使用CTreeCtrl类来封装树形控件的各种操作。通过调用 BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );创建一个窗口,dwStyle中可以使用以下一些树形控件的专用风格: TVS_HASLINES 在父/子结点之间绘制连线 TVS_LINESATROOT 在根/子结点之间绘制连线 TVS_HASBUTTONS 在每一个结点前添加一个按钮,用于表示当前结点是否已被展开 TVS_EDITLABELS 结点的显示字符可以被编辑 TVS_SHOWSELALWAYS 在失去焦点时也显示当前选中的结点 TVS_DISABLEDRAGDROP 不允许Drag/Drop TVS_NOTOOLTIPS 不使用ToolTip显示结点的显示字符 在树形控件中每一个结点都有一个句柄(HTREEITEM),同时添加结点时必须提供的参数是该结点的父结点句柄,(其中根Root结点只有一个,既不可以添加也不可以删除)利用 HTREEITEM InsertItem( LPCTSTR lpszItem, HTREEITEM hParent = TVI_ROOT, HTREEITEM

推荐一套MFC界面控件(BCGControlBar Library v6.50)

被刻印的时光 ゝ 提交于 2020-02-27 03:14:10
上个月,老友 马维峰 给大家 推荐一套界面控件(Codejock Xtreme Suite Pro 9.51) ,很是好用。与之相应的MFC版本Xtreme Toolkit 9.51 Professional Edition (Codejock),在第15届Jolt奖获奖, 获得 Libraries, Frameworks and Components类的 Productivity Winners大奖,很是风光,可一直没见到网上有下载,遗憾! 今日看到网上有另一著名MFC界面类库最新版本下载BCGControlBar Library v6.50,效果很不错,支持office 2003,OUTLOOK,Visual Studio的效果,虽说没有Jolt大奖的风光,但在这之前因其前卫的效果和良好的稳定性,口碑一直是盖过Cj60的。国内著名GIS软件SuperMap5即使用了该类库。 以下是BCGControl的应用示例 BCGOutlookDemo BCGDevStudio BCGSkins WordPad 最新特征: The feature is fully implemented The feature is partially implemented Product BCGControlBar Standard Edition BCGControlBar Professional

VS2015/MFC,操作Access数据库

六眼飞鱼酱① 提交于 2020-02-26 16:42:34
1、功能展示 实现了vc++(vs2015)对Acess数据库的所有操作,包括增删改查; 下面介绍对数据库的整体操作: (1)支持对Access旧版本格式mdb的操作; (2)支持对Access新版本格式accdb的操作; (3)支持对数据库的【插入】操作; (4)支持对数据库的【删除】操作; (5)支持对数据库的【修改】操作; (6)支持对数据库的【查询】操作; (7)支持文件打开对话框来选择对应的数据库文件; (8)支持对于数据库的所有操作,同步显示到list列表中; (9)使用C++/VS2015开发,源码详细注释; 2、详细开发步骤 详见开发文档: 来源: oschina 链接: https://my.oschina.net/u/4446363/blog/3169356

MFC&C++&Opencv入门学习笔记

怎甘沉沦 提交于 2020-02-26 15:53:41
MFC&C++&Opencv入门学习笔记(一) 本文为本人第一次学习编辑并发表博客,若有任何问题请各位看官老爷及时指出! 本文主要内容:在vs2019中,创建MFC模式项目,并在其中加入opencv,配置好相关环境。 首先,对MFC有一个基本的认识: 百度百科上是这样介绍的: “微软基础类库(英语:Microsoft Foundation Classes,简称MFC)是微软公司提供的一个类库(class libraries),以C++类的形式封装了Windows API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。” 通俗来讲,MFC就是一种可以通过拖动控件创建界面元素的程序框架;比如在此之前,你可能只编写过在控制台上显示的C语言代码,这种程序和我们用的手机上的App没有什么联系,会让你感到很无趣,但是mfc可以很轻松地创建界面,有了一定的交互性,这让编程更加有趣味性。 不过,mfc已经是相当古老的东西了,放在今天可能会有些落后,但是其他框架也都是相似的,可以先通过学习MFC了解一下。 打开vs2019,创建MFC项目如下: 选择上图中左侧的MFC项目,如下: 为你新建的MFC项目取一个名字后选择创建; 在应用程序类型中,我们选择 基于对话框 的应用程序类型,如下: 创建后

MFC dictionary collection with key unicity and ordering by position

孤街醉人 提交于 2020-02-26 00:18:14
问题 Looking at table on http://msdn.microsoft.com/en-us/library/y1z022s1%28v=vs.80%29.aspx#_core_collection_shape_features I can not see a MFC collection for the purpose I need. The CMap documentation on http://msdn.microsoft.com/en-us/library/s897094z%28v=vs.80%29.aspx also states that "You might think that this iteration is sequential by key value; it is not. The sequence of retrieved elements is indeterminate." as I would expect from a thing I presume it uses hashing algorhitms. What I need,

mfc的ClistCtrl控件列的排序

只谈情不闲聊 提交于 2020-02-25 22:55:18
在网上看了许多排序的方法 , 都没看懂 , 初学者的悲剧 , 然后就自己弄了个 , 请大家指正 . ClistCtrl 控件的行带着一个结构体 , 不过那结构体不好懂 , 看得眼花缭乱 . 好多也弄不明白 , 就自己写了个结构体 , 把一行的数据全写入结构体中 , 交换两结构体的数据就简单多了 . typedef struct { wchar_t id[6]; // 编号 wchar_t name[10]; // 姓名 wchar_t sex[2]; // 性别 int age; // 年龄 wchar_t fenlei[6]; // 分类 wchar_t tel[12]; // 电话 }myTongXiLu; [.cpp] 写两个函数 , 把结构体写入指定行中 , 一个从指定行中的数据写入结构体中 // 写入 void CMFCApp_CFile_testDlg::SetItemInofToxiluJG(int selIndex,myTongXiLu* toxilu) { CString str; m_list.SetItemText(selIndex, 0, LPCTSTR(toxilu->id)); m_list.SetItemText(selIndex, 1, toxilu->name); m_list.SetItemText(selIndex, 2, toxilu-

Is there a standard for toolbar icon dimensions based on DPI?

夙愿已清 提交于 2020-02-25 13:17:49
问题 I have a 32 pixel toolbar: Is there a known standard for using different pixel heights for the toolbar based on different DPI configurations? If so, can you please point in in the right direction of this resource? The only thing I have located about this concept is here and I quote the example pseudo code: UINT smallToolbarID; if ( DPI == smaller ) { smallToolbarID = 16x16; largeToolbarID = 32x32 } else if ( DPI == medium ) { smallToolbarID = 20x20; largeToolbarID = 40x40 } else if ( DPI ==

Is there a standard for toolbar icon dimensions based on DPI?

空扰寡人 提交于 2020-02-25 13:17:25
问题 I have a 32 pixel toolbar: Is there a known standard for using different pixel heights for the toolbar based on different DPI configurations? If so, can you please point in in the right direction of this resource? The only thing I have located about this concept is here and I quote the example pseudo code: UINT smallToolbarID; if ( DPI == smaller ) { smallToolbarID = 16x16; largeToolbarID = 32x32 } else if ( DPI == medium ) { smallToolbarID = 20x20; largeToolbarID = 40x40 } else if ( DPI ==