电脑维修常见问题网络连接问题

在Visual Studio 2013中如何使用list box控件显示数据信息【c++吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:287,276贴子:
在Visual Studio 2013中如何使用list box控件显示数据信息收藏
我在visual studio 2013 中创建了一个MFC应用窗体项目,添加了一个Dialog对话框,在对话框上添加了list box 控件,想用这个控件显示一个变量的数据信息。请问各位大神我用的list box控件对不对啊?如果不对应该用什么?如何在Visual Studio 2013中如何使用list box控件显示数据信息呢?
登录百度帐号推荐应用创建类似Visual&Studio的界面
创建类似Visual Studio的界面
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
Visual Studio界面
Studio的界面如下,很多人喜欢这种界面风格,尤其是主框架下的两个活动窗口:左侧为嵌套Tab控件的浮动窗口,底部为嵌套信息输出窗口的浮动窗口。这种浮动窗口类似于可浮动的工具栏,可以停靠在主窗口的任意一边,也可以浮动在主窗口内的任何位置,窗口的大小可以随鼠标的拖动而改变,还可以关闭和重新打开。
<img HEIGHT="590" ALT=" " src="/blog7style/images/common/sg_trans.gif" real_src ="/inc/vs1.png" WIDTH="839" ALIGN="baseline"
TITLE="创建类似Visual&Studio的界面" />
在MFC中,具有浮动性能的窗口都由一个共同的基类--控制条类CControlBar类派生,如工具栏类CToolBar、状态栏类CStatusBar和对话条类CDialogBar都是这样的。在这些派生类中,根据需要对CControlBar的默认属性作了修改,并增加了自己的特性,如在CStatusBar中限定了状态栏只能水平排列,而不能垂直排列。可以将这些在CcontrolBar基础上派生的类统称为控制条窗口。控制条窗口通常是一个与视图窗口处于同一级的框架类的子窗口。它通过获得父框架窗口的客户区(Client
Area)的位置信息来计算自己的尺寸和位置,并通知父框架窗口剩下的客户区的位置和尺寸。控制条之间名于互相覆盖,且不会遮盖视力窗口。
注意:容易被忽视的一点,控制条能够沿框架窗口停靠取决于框架窗口沿边框四周创建的4个统一的控制条,即停靠栏。没有控制条来停靠时,停靠栏沿应用程序主窗口缩小到不可见,当控制条停靠在边框时,停靠栏就展开并包围这些控制条。
CFrameWnd的成员函数EnableDocking()沿框架窗口创建这4个停靠栏。但是,停靠功能不是自动地被MFC启动的,在CMainFrame::OnCreate()中,需要调用EnableDocking()才能进行工具栏的停靠操作。几个与停靠相关的函数是:
CFrameWnd::EnableDocking()& 沿框架四周创建停靠栏。
CControlBar::EnableDocking()& 设置控制条的停靠属性
CFrameWnd::DockControlBar()&&
将一个控制条停靠到一个停靠栏中
如CMainFrame::OnCreate()中关于工具栏的停靠代码
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
//允许工具栏停靠
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
m_wndToolBar.SetWindowText("Standard Tool");
//在主框架窗口四周创建停靠栏
EnableDocking(CBRS_ALIGN_ANY);
  //将控制条停靠到停靠栏,默认为停靠到上边
  DockControlBar(&m_winToolBar);
或  DockControlBar(&m_winToolBar,AFX_IDW_DOCKBAR_TOP);
&&& ......
CCoolDialog类
创建这种类型的窗口,可以自己用CControBar类开发。当然,有现成的为什么不用呢?<img src="/blog7style/images/common/sg_trans.gif" real_src ="/jsp/face/23.gif"
ALT="创建类似Visual&Studio的界面"
TITLE="创建类似Visual&Studio的界面" />这里介绍Mr. Oliver
Smith开发的CCoolDialogBar类。
Oliver Smith 的程序库中共有5个类:
1. CCoolDialogBar是最基本的类,直接从CControlBar中派生出来的,创建和管理停靠窗口。
CTabSheetDockBar实现左侧Tab窗口的创建和管理,从CCoolDialogBar派生出来。在DockTool.h中声明
CMessageViewDockBar实现底端窗口的创建和管理,从CCoolDialogBar派生出来。在DockTool.h中声明
4. CTabSheet实现左侧停靠窗口内的Tab创建和管理,它的基类是CTabCtrl。
5. COutputView实现在底部停靠窗口内字符串的输出管理,基类是SCrollView。
使用方法:
Smith的程序可以编译成一个DLL库。包含DockTool.dll,DockTool.lib和DockTool.h三个文件。将它复制到程序目录下,并导入到工程中。
(1)在CMainFrame中声明一个CTabSheetDockBar对象。
#include "DockTool.h"
CTabSheetDockBar m_LeftDockB
(2)在CMainFrame::OnCreate()中创建对象,并向m_LeftDockBar中的m_TabCtrl控件增加页面(窗口)。
&&& m_LeftDockBar.SetDockSize(CSize(200,200));
m_LeftDockBar.SetFloatSize(CSize(200,200));
if(!m_LeftDockBar.Create(this,"Work bar"))
TRACE0("创建左侧停靠栏失败");
return -1;
m_LeftDockBar.m_TabCtrl.AddView("Part",RUNTIME_CLASS(CPartTreeView));
m_LeftDockBar.m_TabCtrl.SetActiveView(0);(3)同理,调用CMessageViewDockBar的方法类似,只是它已经在Create时默认为创建一个CoutputView窗口了,因此就不用再AddView了
(4)底部消息窗口内容的管理:m_OutputDockBar.AddMessageLine(LPCTSTR
pStr)和m_OutputDockBar.RemoveAllMessageLines()分别用于向窗口中输入一行文字和删除所有文字。可以需要的地方用以下代码调用:
&CMainFrame* frm =
(CMainFrame*) AfxGetMainWnd();
&ASSERT(frm);
&frm-&m_OutputDockBar.AddMessageLine(str);
有兴趣的朋友,可以下载Oliver Smith的源程序,好好看看,就知道实现原理了。
自定义浮动窗口形式
我在自己的程序中,实现如下图所示的界面 :
<img ALT=" " src="/blog7style/images/common/sg_trans.gif" real_src ="/inc/vs2.png" ALIGN="baseline"
TITLE="创建类似Visual&Studio的界面" />
由于我不想使用Tab控件,在左侧窗口中只想包含一个树形控件,因此参考CMessageViewDockBar的定义,自己从CCoolDialogBar中派生了一个类CTreeViewDockBar:
类的头文件如下:
class AFX_EXT_CLASS CTreeViewDockBar : public
CCoolDialogBar&
&DECLARE_DYNCREATE(CTreeViewDockBar)
protected:
&RECT&m_rcV
&CTreeView* m_pTreeV
&CTreeViewDockBar();
&virtual ~CTreeViewDockBar();
&virtual BOOL Create( CWnd* pParentWnd,LPCTSTR
&// Overrides
&// ClassWizard generated virtual function
&//{{AFX_VIRTUAL(CTreeViewDockBar)
&//}}AFX_VIRTUAL
&void&SetFloatSize(const
CSize& size);&//设置浮动时窗口的尺寸
&void&SetDockSize(const
size);&&//设置停靠时窗口的尺寸
&BOOL&AddView(CRuntimeClass
*pViewClass, CCreateContext *pContext);
protected:
&// Generated message map
&//{{AFX_MSG(COutputDockBar)
&//}}AFX_MSG
&DECLARE_MESSAGE_MAP()
实现文件如下:
//////////////////////////////////////////////////////////////
//&&&&&CTreeViewDockBar
//////////////////////////////////////////////////////////////
IMPLEMENT_DYNCREATE(CTreeViewDockBar,CCoolDialogBar )
// Construction/Destruction
CTreeViewDockBar::CTreeViewDockBar():CCoolDialogBar()
&m_pTreeView = NULL;
CTreeViewDockBar::~CTreeViewDockBar()
BEGIN_MESSAGE_MAP(CTreeViewDockBar,
CCoolDialogBar)
&//{{AFX_MSG_MAP(CTreeViewDockBar)
&ON_WM_CREATE()
&//}}AFX_MSG_MAP
END_MESSAGE_MAP()
BOOL CTreeViewDockBar::Create( CWnd*
pParentWnd,LPCTSTR pTitle)
&ASSERT_VALID(pParentWnd);
&if(!pParentWnd-&IsKindOf(RUNTIME_CLASS(CFrameWnd)))
&&return FALSE;
&UINT nStyle = WS_CHILD |
WS_VISIBLE | CBRS_ALIGN_LEFT |
&&CBRS_ALIGN_RIGHT| CBRS_FLYBY |
CBRS_SIZE_DYNAMIC;
CCoolDialogBar::Create(pParentWnd, pTitle,nStyle);
CTreeViewDockBar::AddView(CRuntimeClass *pViewClass, CCreateContext
*pContext)
&ASSERT(m_pTreeView == NULL);
#ifdef _DEBUG
&ASSERT_VALID(this);
&ASSERT(pViewClass != NULL);
&ASSERT(pViewClass-&IsDerivedFrom(RUNTIME_CLASS(CWnd)));
&ASSERT(AfxIsValidAddress(pViewClass,
sizeof(CRuntimeClass), FALSE));
&if (pContext == NULL)
&&context.m_pCurrentDoc =
&&context.m_pCurrentFrame =
GetParentFrame();
&&context.m_pLastView =
&&context.m_pNewDocTemplate =
&&context.m_pNewViewClass =
&&pContext =
(CWnd*)pViewClass-&CreateObject();
&&if (pWnd == NULL)
&&&AfxThrowMemoryException();
&CATCH_ALL(e)
&&TRACE0(_T("Out of memory
creating a view.\n"));
&&// Note: DELETE_EXCEPTION(e)
not required
&&return FALSE;
&END_CATCH_ALL
&ASSERT_KINDOF(CWnd, pWnd);
&ASSERT(pWnd-&m_hWnd ==
NULL);&&&&&&
// not yet created
&DWORD dwStyle =
AFX_WS_DEFAULT_VIEW;//|TVS_HASBUTTONS | TVS_HASLINES |
TVS_LINESATROOT | TVS_SINGLEEXPAND;
&rcView.bottom = rcView.top = rcView.left =
rcView.right = 0;
&// Create with the right
size and position
&if (!pWnd-&Create(NULL, NULL,
dwStyle, rcView, this, 0, pContext))
&&TRACE0(_T("Warning: couldn't
create client pane for view.\n"));
&&// pWnd will be cleaned up by
PostNcDestroy
&&return FALSE;
&m_pTreeView =
(CTreeView*)pW
//&m_pTreeCtrl =
&(m_pTreeView-&GetTreeCtrl());
&m_pCtrlWnd = m_pTreeV
&return TRUE;
void CTreeViewDockBar::SetFloatSize(const
CSize& size)
&m_sizeFloat =
void CTreeViewDockBar::SetDockSize(const
CSize& size)
&m_sizeHorz =
为了控制树形控件,自己从CTreeView中派生了一个CMyTree类,用于显示树形控件的内容,处理双击等,主要代码如下:
改变树形控件的样式
BOOL CMyTree::PreCreateWindow(CREATESTRUCT&
&// TODO: Add your specialized code here and/or
call the base class
&cs.style |=
TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT;// |
TVS_SINGLEEXPAND;
&return CTreeView::PreCreateWindow(cs);
添加树形控件的内容
int CMyTree::OnCreate(LPCREATESTRUCT
lpCreateStruct)
&if (CTreeView::OnCreate(lpCreateStruct) ==
&&return -1;
&// TODO: Add your specialized creation code
&m_pTreeCtrl =
&(this-&GetTreeCtrl());
&HTREEITEM
parent[10];
&parent[0] =
m_pTreeCtrl-&InsertItem("1 设置工程参数",0,1);
&parent[1] =
m_pTreeCtrl-&InsertItem("2 定义材料",0,1);
&parent[2] =
m_pTreeCtrl-&InsertItem("3 建模",0,1);
&parent[3] =
m_pTreeCtrl-&InsertItem("4 荷载",0,1);
&parent[4] =
m_pTreeCtrl-&InsertItem("5 布点",0,1);
&parent[5] =
m_pTreeCtrl-&InsertItem("6 求解",0,1);
&parent[6] =
m_pTreeCtrl-&InsertItem("7 塑性粘性分析",0,1);
&HTREEITEM
parent_sub1[10][5];
&parent_sub1[0][0] =
m_pTreeCtrl-&InsertItem("1.1
工作目录",0,1,parent[0]);
&parent_sub1[0][1] =
m_pTreeCtrl-&InsertItem("1.2
项目名称",0,1,parent[0]);
&parent_sub1[0][2] =
m_pTreeCtrl-&InsertItem("1.3
基本设置",0,1,parent[0]);
&parent_sub1[2][0] =
m_pTreeCtrl-&InsertItem("3.1
导入ANSYS数据",0,1,parent[2]);
&parent_sub1[2][1] =
m_pTreeCtrl-&InsertItem("3.2
直接建模",0,1,parent[2]);
&parent_sub1[3][0] =
m_pTreeCtrl-&InsertItem("4.1
加载",0,1,parent[3]);
&parent_sub1[3][1] =
m_pTreeCtrl-&InsertItem("4.2
查看荷载",0,1,parent[3]);
&parent_sub1[4][0] =
m_pTreeCtrl-&InsertItem("5.1
积分点参数",0,1,parent[4]);
&parent_sub1[4][1] =
m_pTreeCtrl-&InsertItem("5.2
生成积分点",0,1,parent[4]);
&parent_sub1[4][2] =
m_pTreeCtrl-&InsertItem("5.3
查看积分点",0,1,parent[4]);
&parent_sub1[5][0] =
m_pTreeCtrl-&InsertItem("6.1
求解参数",0,1,parent[5]);
&parent_sub1[5][1] =
m_pTreeCtrl-&InsertItem("6.2
开始求解",0,1,parent[5]);
&parent_sub1[6][0] =
m_pTreeCtrl-&InsertItem("7.1
分析参数",0,1,parent[6]);
&parent_sub1[6][1] =
m_pTreeCtrl-&InsertItem("7.2
粘性分析",0,1,parent[6]);
&return 0;
1.在CMainFrame中声明:&
CTreeViewDockBar
m_LeftTreeDockB
2.在int CMainFrame::OnCreate(LPCREATESTRUCT
lpCreateStruct)中输入以下代码:
m_LeftTreeDockBar.SetDockSize(CSize(100,200));
//&m_LeftTreeDockBar.SetFloatSize(CSize(200,200));
&m_LeftTreeDockBar.Create(this,"Tree");
&m_LeftTreeDockBar.AddView(RUNTIME_CLASS(CMyTree),NULL);
&m_LeftTreeDockBar.EnableDocking(CBRS_ALIGN_LEFT|CBRS_ALIGN_RIGHT);
&DockControlBar(&m_LeftTreeDockBar,AFX_IDW_DOCKBAR_LEFT);
已投稿到:&>&&>&&>&&>&Visual Studio 2008下使用MFC开发的界面配置程序
Visual Studio 2008下使用MFC开发的界面配置程序
上传大小:269KB
Visual Studio 2008 下使用MFC开发的界面配置程序,前台界面接受数据写入后台数据库,数据库使用MySQL,本程序只是前台界面代码,不包括后台表结构,配置的对象是一个录音系统服务器程序。
综合评分:4.5(13位用户评分)
所需积分:5
下载次数:36
审核通过送C币
创建者:zhaoyading
创建者:blackwoodcliff
创建者:csnd_ayo
课程推荐相关知识库
上传者其他资源上传者专辑
开发技术热门标签
VIP会员动态
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
android服务器底层网络模块的设计方法
所需积分:0
剩余积分:720
您当前C币:0
可兑换下载积分:0
兑换下载分:
兑换失败,您当前C币不够,请先充值C币
消耗C币:0
你当前的下载分为234。
Visual Studio 2008下使用MFC开发的界面配置程序
会员到期时间:剩余下载次数:
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可奖励20下载分
被举报人:
fengzhizi_1
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:2311人阅读
日常杂记(6)
项目上开发了一个服务程序,用于监听多台报警主机,并且能够接收报警主机发送过来的报警信息。当时为了方便,就把所有接收到的报警信息以TXT日志的形式保存了下来。&#26684;式如下:
项目跑了一段时间之后,突然说要对报警信息进行统计分析和数据对比。虽然日志是按天生成的,但是每天的日志里都有几千报警记录,想要直接利用TXT日志来进行统计和对比是十分不方便的。考虑到日志文件中每条报警信息都是固定的&#26684;式,当时想到的就是自己写一个小程序,然后通过这个小程序对各个TXT日志文件进行逐行读取,得到各条报警信息后,再取出各个字段重新写到Excel文件中。如此,直接利用Excel来进行统计分析就容易多了,还不用修改服务程序的源码。于是就到网上搜索资料,好家伙,正如吾辈所料,各路大神早就指明了道路!为了避免重复造轮子,本不该有此文的记录,但是我在顺着大神的路走时,还是碰到了不少问题。在此仅以记录自己的学习过程为目的,顺便记录一下学习过程中遇到的一些问题。下图中的Excel表&#26684;是我转换后的报警信息数据:
1、新建一个基于MFC的工程。本例中建立了一个基于对话框的工程LogTxtToExcel。
2、在解决方案中,右键选中LogTxtToExcel项目,添加 —& 类 —& MFC —& TypeLib中的MFC类。
3、在弹出的向导界面中,有两种添加Excel类库的方式,一是选中注册表,在可用类类型库下拉列表中选择Microsoft Excel 14.0 Object Library ;二是选中文件,在位置编辑框后面点击“…”按钮,找到Office 2010的安装路径,选择并打开EXCEL.EXE。
4、根据开发需求,选择相应的接口,具体哪些接口对象对应哪些功能详细的信息可以到 MSDN&&查看学习,本例中,选择了_Application、_Workbook、_Worksheet、Borders、Font、Interior、Range、Workbooks、Worksheets共9个接口。下图中左侧红框中可以找到相应的接口,添加后右侧红框中的类名可以自己重新命名,本例中的类名都是默认的。
5、完成Excel类库导入后,LogTxtToExcel项目会多出9个头文件,分别对应上面9个生成的类。为了能够调用这9个新类,本例中将9个新头文件全部#include到LogTxtToExcelDlg.cpp这个源文件中。
开始编译工程,发现有一大堆莫名其妙的错误,不过莫慌,在新添加的9个头文件中,开头都有如下一行代码,只要删除或者注释该行代码即可。
#import &D:\\Microsoft Office\\Office14\\EXCEL.EXE& no_namespace
删除之后重新编译,发现莫名其妙的错误果然没有了,然而还是编译不过,错误提示如下:
双击任意一行错误提示,进入存在错误的代码中,根据编译器提示的错误信息,可以很容易的解决剩下的这几个错误。
错误error C2059的解决方法是,打开Crange.h,把其中的 DialogBox 改成 _DiaglogBox。
错误error C4430的解决方法是,打开CApplication.h,在函数*get_VBE()最前面加上类型说明void;打开CWorkbook.h,在函数*get_VBProject()最前面加上类型说明void。
至此,编译OK,只要合理调用Excel类库的接口,就可以实现MFC操作Excel啦。具体如何调用,限于篇幅,将于下文记录。
说明:以上代码在Visual Studio 2013通过测试,并且必须安装Office 2010。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:31222次
排名:千里之外
原创:21篇
评论:12条
(1)(1)(2)(3)(3)(12)

我要回帖

更多关于 电脑连接不上无线网络 的文章

 

随机推荐