VS2008 VC++ XML操作
- 格式:doc
- 大小:49.00 KB
- 文档页数:6
8.4.3 SQL Server 2008中XML应用Microsoft 在SQL Server 2000中就推出了与XML相关的功能,并Transact-SQL语言的有关命令中增加了关键字FOR XML和OPENXML,使开发人员可以通过编写Transact-SQL代码来获取XML流形式的查询结果,或者将XML文档格式的数据导入到数据库的基本表中。
SQL Server 2005 不仅扩展了这些关于支持XML的功能,而且推出了一个支持XSD schema验证、基于XQuery的操作和XML索引的本地XML数据类型。
SQL Server 2008在其之前版本支持XML功能的基础之上,做了许多新改进和补充来解决客户在存储和操纵数据库中XML数据时所面临的挑战,不仅程序员能够定义XML数据类型的变量、参数,创建处理XML类型数据的视图、触发器,还能够使用XQuery语言完成对XML文档结点的遍历和数据查询等。
由于篇幅所限,本节只简单介绍在SQL Sever 2008环境中如何将数据库基本表中的数据导出为XML文档,以及如何将XML文档数据导入数据库的基本表。
1、基本表导出为XML文档FOR XML是对标准SQL语言SELECT语句的扩展,数据库管理系统会根据FOR XML使用的模式,返回具有一定格式的XML文档片段以便不同应用程序或者用户之间进行数据交互。
在SQL Server 2008中使用带FOR XML子句的SELECT查询语句就可以从数据库基本表中获得XML数据,而FOR XML子句主要使用RAW和PATH模式。
(1) 单张基本表的导出为介绍方便,我们以第一章介绍的学生表(students)为例,并希望将这张学生表中的数据导出为XML 文档格式的数据,则只要使用表8-7中第3行的SELECT语句即可。
表8-7 将基本表数据导出为XML格式数据注意,表8-7中的第1行和第2行是指定SELECT语句操作的数据库,如果我们在前面已经使用了这个命令,则后面的操作就可以不使用这两行命令了。
Microsoft Visual C++ 2008 发布程序的部署问题VS2008编译的程序在Windows2008环境上运行时经常出现如下问题:应用程序事件日志如下:上述两个问题都解决后则可能还出现如下问题:注意:此时是调用dll出现问题了,而不是运行主程序出错。
主要问题是“找不到从属程序集Microsoft.VC90.MFC”,解决办法如下:将整个“C:\Application\Microsoft Visual Studio 9.0\VC\ redist\x86\Microsoft.VC90.MFC”拷贝到exe文件所在目录下,如果exe程序所涉及调用的dll与该exe文件不在同一目录,那么须要在dll所在目录也拷贝一份。
详细描述如下:这个问题有好多Blog和Forum已经讨论过了,但都不详尽,在具体的操作过程中还是有许多疑问。
我摘录并整合了许多网络文章,希望能够做个最终了结。
一、VC2005和VC2008编译出来的程序如何发布/lf426/archive/2008/04/12/46885.aspxVC2005和VC2008编译出来的程序放到别人的电脑上为什么有可能无法运行呢?1:Microsoft Visual C++ 2008 Express Edition可以发布软件吗?能!很多人说,因为是Express版,不是Studio,所以只是用来练习语言的,不能发布软件——错!除了没有MFC和ATL,基本上跟 .net 版本是一样的。
发布出来的,是完整的可执行文件。
2:VC 2008 (2005) 发布出来的程序必须附带上他们特定的dll文件吗?不一定。
如果目标系统是个经常升级的系统,微软已经为其打上了所需要的dll文件补丁了,不需要在软件包里面附加特定的dll文件。
特别在Vista系统中,你更是不需要VC8和VC9的dll文件。
但是在一些老版本的系统中,这些文件就是必须的。
3:VC2008和VC2005特定的dll文件是哪些?VC8: msvcm80.dll, msvcp80.dll, msvcr80.dllVC9: msvcm90.dll, msvcp90.dll, msvcr90.dll4:如何部署文件?首先,请选择release版本;在生成可执行文件(exe文件)的时候,会得到相应的部署文件(manifest文件)。
无幻潜心成魔.....V C2008以资源形式实现多语言版本分类: 2.1 VC++/MFC 2011-04-13 21:34 2962人阅读 评论(2) 收藏举报越来越多的程序支持多语言切换,或者能自动适应当前系统语言,让自己开发的程序支持多语言不仅可以让自己的程序被国人使用,也能让外国程序爱好者使用。
VC开发多语言程序有多种方法,或读取配置文件,或使用不同资源DLL等等。
这里介绍以资源形式实现多语言版本。
1.打开Visual Studio 2008,新建一个基于对话框工程,名称为LanguageTest,不使用Unicode库 ,资源语言一共有十种(当前操作系统为Windows 7简体中文版),如下图所示:在此选择“中文(简体,中国)”,单击“完成”按钮。
2.在对话框设计界面上,放置一个按钮(ID号IDC_SHOW_BUTTON)、一个静态文本(ID号IDC_TEXT_STATIC,必须改其默认ID号)和一个编辑框(ID号IDC_TEXT_EDIT),资源视图如下所示:可以看到资源视图里面都是简体中文的资源文件,现在在“String Table”字符串表类型下,双击打开其子项“String Table”,默认只有一条字符串,是窗口菜单里的“关于 LanguageTest(&A)...”,如图所示:现在点一下第二行(以黑色外框标志),新建一条字符串(值会默认增长,注意不要与已有的冲突),“标题”是“ID”号所代表的字符串内容,我们增加字符串如下图所示:3.在“解决方案管理器”下双击打开“LanguageTestDlg.cpp”文件,在其初始化函数OnInitDialog()增加如下红色代码:BOOL CLanguageTestDlg::OnInitDialog(){CDialog::OnInitDialog();// 将“关于...”菜单项添加到系统菜单中。
// IDM_ABOUTBOX 必须在系统命令范围内。
Microsoft Visual C++ 2008 发布程序的部署问题VS2008编译的程序在Windows2008环境上运行时经常出现如下问题:应用程序事件日志如下:上述两个问题都解决后则可能还出现如下问题:注意:此时是调用dll出现问题了,而不是运行主程序出错。
主要问题是“找不到从属程序集Microsoft.VC90.MFC”,解决办法如下:将整个“C:\Application\Microsoft Visual Studio 9.0\VC\ redist\x86\Microsoft.VC90.MFC”拷贝到exe文件所在目录下,如果exe程序所涉及调用的dll与该exe文件不在同一目录,那么须要在dll所在目录也拷贝一份。
详细描述如下:这个问题有好多Blog和Forum已经讨论过了,但都不详尽,在具体的操作过程中还是有许多疑问。
我摘录并整合了许多网络文章,希望能够做个最终了结。
一、VC2005和VC2008编译出来的程序如何发布/lf426/archive/2008/04/12/46885.aspxVC2005和VC2008编译出来的程序放到别人的电脑上为什么有可能无法运行呢?1:Microsoft Visual C++ 2008 Express Edition可以发布软件吗?能!很多人说,因为是Express版,不是Studio,所以只是用来练习语言的,不能发布软件——错!除了没有MFC和ATL,基本上跟 .net 版本是一样的。
发布出来的,是完整的可执行文件。
2:VC 2008 (2005) 发布出来的程序必须附带上他们特定的dll文件吗?不一定。
如果目标系统是个经常升级的系统,微软已经为其打上了所需要的dll文件补丁了,不需要在软件包里面附加特定的dll文件。
特别在Vista系统中,你更是不需要VC8和VC9的dll文件。
但是在一些老版本的系统中,这些文件就是必须的。
3:VC2008和VC2005特定的dll文件是哪些?VC8: msvcm80.dll, msvcp80.dll, msvcr80.dllVC9: msvcm90.dll, msvcp90.dll, msvcr90.dll4:如何部署文件?首先,请选择release版本;在生成可执行文件(exe文件)的时候,会得到相应的部署文件(manifest文件)。
Visual Studio 2008(VS2008)编译C语言方法 xp,vista,win7(32,64位)都可运行,效果很好!2011-01-01 13:31大家在学习C语言的时候接触的一般都是VC6.0。
但是VC6.0只能编译C 或者C++,不支持C#,集成度不是很高。
而且界面并不十分友好,不能自动猜测关键字,函数的参数也不能自动标示。
最关键的是,编译的时候纠错信息是全英文的,对于初学者十分不方便。
在演示编译一些简单的C程序时VC6.0可以胜任,但是在进行稍微复杂的程序编辑工作时,VC6.0就有点力不从心了。
现在微软的基于.NET的开发软件已经更新至Visual Studio 2010(VS2010)但是VS2010版本还不是最完善,所以目前为止,最流行的还是Visual Studio 2008(内部代号VC9.0,以下简称VS2008)。
大家接触VS2008一般都是从C#或者VB语言开始的,其实VS2008作为一款集成度很高的编译软件,其本身也是支持C 语言的。
大家可以用它来进行C语言的编译。
相较于VC6.0,VS2008更加的智能,更加人性化。
而且VS2008还支持windows7(VC6.0不支持),所以很多装了windows7的朋友就不用头疼了。
下面,就向大家啊演示如何使用VS2008编译C程序,本文中使用VS2008 professional版本。
1.打开VS2008,这就不用多说了吧2.打开了VS2008的主界面,然后选择,文件→新建→项目弹出如图对话框在项目类型中选择VC++→win32 然后在右侧模板中选择win32控制台应用程序,再在下面输入一个名称(项目名称,不用带.C)选择保存位置后确定好了,弹出个对话框,不管它,下一步接下来注意了,这个对话框中,应用程序类型要选择控制台应用程序,附加选项一定要选中“空项目”。
然后点完成。
然后对话框消失,回到VS主界面,这时会在左侧和右侧多了如图工具栏“解决方案管理器”,如果没有,请点击快捷键(最左边)在源文件上点右键,选择“添加→新建项”。
图形画板2008设计文档目录1. 图形后台框架1.1. 基本图形类框架如下:2. 界面框架2.1. 快捷菜单2.2. 主菜单2.3. 工具栏3. 如何创建OFFICE风格的MFC工程4. 如何在工具栏上面添加按钮4.1. 添加菜单主项4.2. 为菜单项添加事件4.3. 添加Ribbon字符4.4. 将按钮添加到工具栏4.4.1. 创建主类别(CMFCRibbonCategory)4.4.2. 创建面板(CMFCRibbonPanel)4.4.3. 添加按钮(CMFCRibbonButton)到面板∙∙1. 图形后台框架1.1. 基本图形类框架如下:2. 界面框架主用应用了Visual Studio 2008 SP1添加的新增强包,可以方面的创建出像OFFCIE2007的Ribbon界面。
Ribbon工具栏是在MainFrm.CPP中的void CMainFrame::InitializeRibbon()生成的整个工具栏CMFCRibbonBar分为2.1. 快捷菜单2.2. 主菜单主菜单按钮CMFCRibbonApplicationButton主菜单CMFCRibbonMainPanel2.3. 工具栏主要分成3层结构:第一层:分类(容器)CMFCRibbonCategory,如图中红色部分所示。
第二层:面板(容器)CMFCRibbonPanel ,如图中红色部分所示。
第三层:元素CMFCRibbonBaseElem,如图中红色部分所示。
先有一个整体的概念~3. 如何创建OFFICE风格的MFC工程以下是创建Visual C++ 2008 SP1创建Office风格的MFC的步骤:首先,新建项目,选择Visual C++ 中的MFC应用程序,输入名称,点击确定接着选择Office的项目类型,MFC的使用选择“在静态库中使用MFC”(这样可以保证在任何Windows系统中都能正确运行,如果选择共享DLL,则只能在有MFC7.0库的机子上正确运行,所以推荐选“在静态库中使用MFC”)接下来的几个步骤都直接按默认即可这里我们先将“导航窗格”的勾去掉(由于本程序没有用到它,所以再此不详细介绍)这里将视图类的基类选为CScrollView,点击完成然后运行一下,基本的雏形就出来啦,简单吧~4. 如何在工具栏上面添加按钮4.1. 添加菜单主项接着继续添加菜单子项,并在属性栏中设置相应的属性,注意Prompt要按照“解释\n标题”这种格式,例如:Prompt绘制一个圆\n画圆做完要记得保存哦4.2. 为菜单项添加事件右键点击需要添加事件的选项,选择添加“事件处理程序”点击“添加编辑”,然后就到视图类的结尾找到这个事件的函数,开始编写事件,可以注意到“函数处理程序名称”是根据“命令名”自动生成的,虽然自己也可以修改,不过还是按默认的比较好,所以也说明上面提到的加入ID时候要根据这样的命名规则来命名。
VS2008 开发驱动程序XPJ(2010-2)1.前言随着计算机科学技术的发展,驱动程序的开发悄然成为各个计算机应用领域(特别是编写与硬件相关程序)的程序员的关注的话题,对于那些迫切希望探究驱动程序开发奥秘的程序员来讲,面对铺天盖地,五花八门的各种图书资料,难免出现不知从何入手的问题,本文将带领你利用微软成熟的开发设计环境,自己动手开发出几类最简单的驱动程序,抛砖引玉,希望大家能够从中吸取到自己需要的知识,戳破驱动程序开发神秘的面纱,提升自身软件设计实力,为祖国的软件事业发展做出更大的贡献。
本人在学习驱动程序开发伊始,懵懵懂懂中也翻阅了不少前辈们的书籍,也在互联网上搜集了不少关于驱动开发方面的资料,出处无法一一列举,本文也将引用或者参考部分内容,在此感谢原著对本人的帮助,对前辈们献上我最崇高的敬意。
2.开发环境搭建2.1软件平台搭建:Microsoft Visual Studio 2008 , WDK7,VMware Workstation6.5.安装VS2008及MSDN 。
MSDN 可以帮助你更好使用VS2008,在出现问题找不到答案时,可以仔细阅读一下MSDN ,会提供一些必要的帮助。
并且可以通过MSDN免费得到WDK7的下载连接。
VS2008安装步骤略。
下载,安装WDK7,即(Windows Driver Kits 7.0.0)。
提示选择安装选项时,建议全部选择安装,WDK便自动安装WinDbg(Windows调试工具),用于使用虚拟机对驱动程序代码进行调试。
安装步骤略。
安装VMware Workstation.建议选择安装6.0以上版本。
安装步骤略。
安装成功以后新建Windows虚拟机,笔者选择的是WindowsXP系统(其他Windows系统大体相同),并安装系统映像,使之成为可以正常工作的WindowsXP虚拟系统。
2.2调试平台搭建:软件平台搭建成功以后,调试平台的搭建需要以下几个步骤。
VS2008开发快速配置Win32下首先考虑的是Microsoft Visual Studio工具,笔者推荐使用vs2008,目前vs2010、vs2012都已经发布。
不过vs2010的界面布局太过阴暗,而vs2012居然不支持XP。
总而言之,笔者认为vs2008相对成熟,比其它版本的都要好。
在正式配置vs2008再介绍另外两款工具。
第一款工具是Dev-C++,目前版本是4.9.9.2,见下图:如果代码量不多,比方说就几百行的验证小程序,那么用Dev-C++就最合适不过。
第二款工具就是大名鼎鼎的Source Insight,是一个面向项目开发的程序编辑器和代码浏览器,它拥有内置的对C/C++, C#和Java等程序的分析。
Source Insight能分析你的源代码并在你工作的同时动态维护它自己的符号数据库,并自动为你显示有用的上下文信息。
如果你不习惯用vs查阅代码,那么SI应该是个不错的选择。
可惜的是SI目前不支持UTF-8,如果在Linux下源码中含有中文,用SI打开将会是一堆乱码。
解决这个问题其实不难,使用一个小程序将UTF-8的文件转换成GBK即可。
见下图:言归正传,下面开始配置vs2008。
第一设置字体。
使用VC6.0中经典的Fixedsys字体,菜单【工具】-> 【选项】,在弹出的选项对话框中,选择【环境】->【字体和颜色】,如下图:顺便提一下,vs2010中居然没有Fixedsys字体可以选择,多么可惜。
据我所知,在vs2008是不可以调行间距的,而且人家Ultra Edit就可以设置行间距。
第二设置行号。
菜单【工具】-> 【选项】,在弹出的选项对话框中,选择【文本编辑器】->【所有语言】,如下图:下面是添加头文件和库文件路径。
有两种方法,一种是针对vs,这样添加后对所有的项目都是有效的,一种是针对项目的,推荐后一种做法。
先介绍前一种方法:菜单【工具】-> 【选项】,在弹出的选项对话框中,选择【项目和解决方案】->【VC++ 目录】,在对话框左边依次选择【包含文件】即.h头文件,【引用文件】即库文件,【可执行文件】即dll文件。
VS2008使用教程引言Visual Studio 2008(简称VS2008)是一款功能强大的集成开发环境(IDE),被广泛用于开发各种类型的应用程序,包括桌面应用程序、Web应用程序和移动应用程序等。
本教程将为您介绍如何使用VS2008进行开发,并提供一些常用功能和技巧的使用方法。
安装和设置在使用VS2008之前,您需要先下载并安装它。
您可以从微软官方网站或其他可信的下载源获取安装程序。
安装完成后,您需要进行一些基本设置,以配置和个性化您的开发环境。
1.启动VS2008安装程序,并按照提示进行安装。
2.完成安装后,启动VS2008,您将看到欢迎界面和开始菜单。
3.在设置对话框中,您可以选择默认的编程语言和工作区布局,还可以更改其他个性化设置,例如颜色方案和字体大小等。
创建新项目使用VS2008,您可以创建多种类型的项目,例如控制台应用程序、Windows窗体应用程序、 Web应用程序等。
下面将介绍如何创建一个新的控制台应用程序项目。
1.在VS2008的开始菜单中,选择“新建项目”。
2.在新建项目对话框中,选择“Visual C++”(或其他适当的编程语言)并选择“控制台应用程序”项目模板。
3.输入项目的名称和存放路径,并点击“确定”创建项目。
4.创建完成后,您将看到一个空白的代码文件和一个主函数。
编写代码在VS2008中,您可以使用内置的代码编辑器来编写代码。
编辑器具有很多实用的功能,如语法高亮、自动完成和错误提示等。
1.在新建项目中,打开代码文件(通常是.cpp或.cs文件)。
2.在编辑器中输入您的代码。
VS2008提供了丰富的代码片段和代码模板,可以加快编码速度。
3.保存代码文件,并使用编译器和调试器来验证代码的正确性。
编译和运行在VS2008中,您可以通过点击按钮或使用快捷键来编译和运行您的应用程序。
1.在工具栏上找到“生成”或“调试”按钮。
2.点击“生成”按钮,VS2008将使用选择的编译器编译您的代码。
Xml作为一个非常重要的纯文本格式已经进入了编程的很多领域,作为一个面向应用层面的c#也一样在很多领域离不开Xm l。
但是,c#在很多方面对X ml做了写封装,以至于很多操作Xml的代码,都不需要手动去写。
例如,c#写WebSer vice这种需要大量操作Xml的服务,除了极其个别的情况下,基本看不到任何操作Xml的代码。
这是c#的一个优势,但是,最近发现正是这样一些c#的优势,导致了新一代c#程序员的能力退化。
因为90%的情况下,不需要手动操作Xml,所以,年轻的c#程序员也觉得没必要为了这10%的情况,而去学如何手工读写Xml。
真不知道,ms 提供了这么简便的工具,是ms做的善事还是作的孽。
好吧,废话就不说了,转入主题。
1.如何用XmlDom的方式读取XmlXml Dom方式是最原始的一种操作Xml的途径,从.net Framewo rk 1.0开始就开始支持Dom方式。
1.1如何以Dom方式加载Xm l要读取Xml首先要加载Xm l,加载的方式有两种,一种是从流或类似的Read er加载,例如:当然还可以从字符串加载:1.1读取无nam espace的XmlXml已经准备好了,下面就开始读取这个Xml。
现在希望读取d ata节下面的所有ite m中的tex t,那么就可以:看看运行结果:但是,这样写的问题有很多,例如在data节点中有非i tem的节点,这样访问,也就被无差别的把非item项也写出来了。
例如把如果数据改成这样:这样,在data节里面,除了4个ite m,还有一个oth er,这个other是不需要的,必须被排除掉,如果直接用第一中Child Nodes去访问的话,会得到这样的结果:显然“!@#”也被选择出来了,这可不是我们所期望的,所以,改用XPath的方式访问:其运行结果为:很好的othe r项排除在需要的节点外,这才是我们真正想要的结果:)1.2读取有nam espace的Xml和c#一样Xml也有namesp ace,并且names pace在X ml中的作用巨大,也许你并未感受到names pace的作用,但是,你可能已经不得不面对那些有namesp ace的Xm l了。
好多朋友会有这样的疑问:VC6里有MSCOMM,VS2008中找不到,是不是需要自己下载控件啊?其实,不需要的,你需要自己手工增加这个控件到面板上,增加时会浏览到控件目录,如果该目录上没有就需要返回一层,使用另一个目录,里面有几乎系统上所有的已注册控件。
2008不带这个控件,需要从VC6里拷过来手动注册。
另外,如果真有特殊情况你这个控件竟然还没有在系统中注册,或不小被卸载了,你只要从别的机器上复制这个ocx文件到系统目录,然后使用regsvr32注册就可以了。
然后增加到VC面板上的步骤同上。
当然这种情况极少。
综合起来有两种方法让你在VS2008中找到MSCOMM控件:(一)要对一个监控软件进行升级,拿到原来的源程序,里面用到了MSComm组件进行串口通信,上网上查了下添加MSComm组件的过程:首先找个地方下载MSComm转载..............................................................................................................第一步:将Mscomm.srg, Mscomm32.ocx,Mscomm32.dep三个文件复制到系统文件夹中。
要注意的是,MSComm控件是要授权的,所以必须将其使用“执照”Licence 在注册表中登记注册,下一步就是注册方法。
至于为什么要这样做,可以看看下面的网页:/support/kb/articles/q151/7/71.asp第二步:用Windows下的注册工具regsvr32注册该OCX控件,点击“开始”->"运行",再在中填入(假设操作安装在C盘,WIN2000):Regsvr32 C:\winnt\system32\Mscomm32.ocx第三步:在注册表中手工新建一个主键项:先在点击“开始”->"运行",再在中填入regedit 命令打开注册表,找到HKEY_CLASSES_ROOT\Licenses,在其中添加主键4250E830-6AC2-11cf-8ADB-00AA00C00905并将内容设置为:kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun(注:这项内容也可以用记事本程序打开Mscomm.srg文件看到)................................................................................................................在我的xp系统中试了一下,发现第二步后,注册表中自动出现了第三步需要手工添加的主键,也就是说不需要进行第三步操作。
《测绘程序设计()》上机实验报告(Visual C++.Net)实验5 文件班级:学号:姓名:序号:二零一零年四月实验5 文件一、实验目的∙掌握文件对话框的使用方法。
∙掌握C++文件操作的一般步骤及实现方法。
∙了解MFC文件操作的特点及使用方法。
二、实验内容1. 编制简单的Cass数据文件进行数据整理的程序。
整理后的数据文件中要求无重复点数据,且数据按点号大小的升序进行排序。
要求整理后的数据按与原始数据文件同样的格式保存为另外一个文件要求:a.用SaveFileDialog和OpenFileDialog控件获取文件打开或保存的文件名。
b.自定义一个测量点数据结构体,其元素包括:点号,编码,X,Y,Hc.用文本框显示原始数据和整理后的数据d..按编程规范进行编码设计思路:1)自定义一个测量点数据结构体,其元素包括:点号,编码,X,Y,H2)定义一个分割函数用来分割数据3)打开文件,将测量点的数据值赋给点的结构体数组4)通过比较结构体元素的异同删除重复点,获得新的总点数5)按点号大小的升序排列6)将新排好的数据输出到另一个文本框中,并保存于文件中。
界面设计:共2个文本框、2个Group Box控件、2个命令按钮。
主要代码:FileDlg.cpp//定义点的结构体#define POINT struct pointPOINT{int iDotmark;CString strCode;double X;double Y;double Z;};void CFileDlg::OnBnClickedOpenfile(){// TODO: 在此添加控件通知处理程序代码CFileDialog dlgFile(TRUE,_T("txt"),NULL,OFN_ALLOWMULTISELECT|OFN_EXPLORER,_T("(文本文件)|*.txt"));if(dlgFile.DoModal()==IDCANCEL) return;CString strFileName=dlgFile.GetPathName();setlocale(LC_ALL,"");CStdioFile sf;if(!sf.Open(strFileName, CFile::modeRead)) return;CString strLine;strPriData.Empty();BOOL bEOF=sf.ReadString(strLine);while(bEOF){strPriData+=strLine;bEOF=sf.ReadString(strLine);if(bEOF) strPriData+=_T("\r\n");}sf.Close();//整理原始数据并在右边编辑框中输出//UpdateData(TRUE);int iLine;//分行并存入字符串数组CString *pstrLine=SplitString(strPriData,'\n',iLine);int iTotalPoint; //总点数CString *strTmp=NULL;int n;iTotalPoint = _ttoi(pstrLine[0]); //第一行为总点数if(iTotalPoint!=iLine-1)MessageBox(_T("数据格式有误"));POINT *pPoint=new POINT[iTotalPoint]; //结构体指针,指向点结构体//逐行用Split函数分离,给点结构体赋值for(int i=0;i<iTotalPoint;i++){strTmp = SplitString(pstrLine[i+1], ',',n);pPoint[i].iDotmark = _ttoi(strTmp[0]);pPoint[i].strCode = strTmp[1];pPoint[i].X = _tstof(strTmp[2]);pPoint[i].Y = _tstof(strTmp[3]);pPoint[i].Z = _tstof(strTmp[4]);if(strTmp!=NULL)//释放内存{delete[] strTmp;strTmp=NULL;}}if(strTmp!=NULL)//释放内存{delete[] strTmp;strTmp=NULL;}//删除重复点for(int i=0;i<iTotalPoint;i++){for(int j=i+1;j<iTotalPoint;j++){if(pPoint[i].iDotmark ==pPoint[j].iDotmark){//delete pPoint;for(int k=j;k<iTotalPoint-1;k++){pPoint[k]=pPoint[k+1];}iTotalPoint--;}}}//按点号的升序排列/*POINT min=pPoint[0];*/for(int i=0;i<iTotalPoint;i++){for(int j=i+1;j<iTotalPoint;j++){if(pPoint[i].iDotmark>pPoint[j].iDotmark){POINT t=pPoint[i];pPoint[i]=pPoint[j];pPoint[j]=t;} }}//输出调整后的数据strTidyData.Format(_T("%d\r\n"),iTotalPoint);CString strOutput;for(int i=0;i<iTotalPoint;i++){strOutput.Format(_T("%d,%s,%f,%f,%f\r\n"),pPoint[i]);strTidyData=strTidyData+strOutput;}UpdateData(FALSE);//释放内存if(pPoint!=NULL){delete[] pPoint;pPoint=NULL;}}void CFileDlg::OnBnClickedSavefile(){// TODO: 在此添加控件通知处理程序代码UpdateData(TRUE);CFileDialog dlgFile(FALSE,_T("txt"),NULL,OFN_EXPLORER,_T("(文本文件)|*.txt"));if(dlgFile.DoModal()==IDCANCEL) return;CString strFileName=dlgFile.GetPathName();setlocale(LC_ALL,"");CStdioFile sf;if(!sf.Open(strFileName, CFile::modeCreate|CFile::modeWrite)) return;sf.WriteString(strTidyData);sf.Close();}CString *CFileDlg::SplitString(CString str, char split, int& iSubStrs) {int iPos = 0; //分割符位置int iNums = 0; //分割符的总数CString strTemp = str;CString strRight;//先计算子字符串的数量while (iPos != -1){iPos = strTemp.Find(split);if (iPos == -1){break;}strRight = strTemp.Mid(iPos + 1, str.GetLength());strTemp = strRight;iNums++;}if (iNums == 0) //没有找到分割符{//子字符串数就是字符串本身iSubStrs = 1;return NULL;}//子字符串数组iSubStrs = iNums + 1; //子串的数量= 分割符数量+ 1CString* pStrSplit;pStrSplit = new CString[iSubStrs];strTemp = str;CString strLeft;for (int i = 0; i < iNums; i++){iPos = strTemp.Find(split);//左子串strLeft = strTemp.Left(iPos);//右子串strRight = strTemp.Mid(iPos + 1, strTemp.GetLength());strTemp = strRight;pStrSplit[i] = strLeft;}pStrSplit[iNums] = strTemp;return pStrSplit;}运行结果:操作过程:单击“打开原始数据”,选择原始数据所在的文本文件,自动输出原始数据及整理后的数据,单击“保存整理后的数据”,选择保存路径,确定文件名,单击保存即可。
Visual Studio2008入门教程[1]作者:日期:2009-4-1110:25:44出处:淘特网第[1]页Visual Studio2008每日提示(tip of day)是2007年7月Sara Ford在她的博客里推出了VS2008每日提示系列,里面收集了许多使用VS2008技巧和诀窍,截至到今天(2008年11月30日)已经有367条了。
我把这些技巧翻译、整理,并给出自己的评论,分享给vs2008的使用者。
每篇10个tips,争取和原作者同步。
微软的Visual Studio2008功能越来越强大了,通过这个提示系列的,也许你会发现一些隐藏的功能。
#001、强大的渐进式搜索原文地址:/saraford/archive/2007/07/23/did-you-know-behold-the-power-of-increment al-search.aspx操作步骤:1.按Ctrl+I键;2.输入你要搜索的文本。
注意:这时你会看到光标跳至第一个匹配的位置,并高亮显示搜索的文本。
3.再次按下Ctrl+I键,光标将跳至下一个匹配的文本;4.按Ctrl+Shift+I可向后搜索;5.按ESC键停止搜索;评论:这功能比Ctrl+F的搜索不同,灵活快捷,不会弹出一个搜索对话框。
你也可以通过菜单栏的方式来调用这个同能:编辑+高级+渐进式搜索#002、选择矩形区域(框式)原文地址:/saraford/archive/2007/07/27/did-you-know-how-to-do-box-selection-in-the -editor.aspx操作步骤:按下Shift+Alt+方向键评论:这个功能在编辑代码的时候很实用,也可以用“Alt键+鼠标”来事实现这个功能。
#003、显示空白字符原文地址:/saraford/archive/2007/07/30/did-you-know-how-to-view-visible-white-space.aspx操作步骤:菜单方式:编辑+高级+查看空白快捷键:Ctrl+R,Ctrl+W评论:快捷键的设置是根据键盘布局不同有不同,比如键盘布局设置为Visual c#2005则快捷键为:Ctrl+E,S。
visual studio 2008 c语言程序
Visual Studio 2008 可以用来编写和调试 C 语言程序。
以下是一个简单的 C 语言程序示例,你可以在 Visual Studio 2008 中创建一个新的 C 项目并输入这个代码:
```c
#include <stdio.h>
int main() {
printf("Hello, World!\n");
return 0;
}
```
要创建一个新的 C 项目,请按照以下步骤操作:
1. 打开 Visual Studio 2008。
2. 在“文件”菜单中选择“新建”->“项目”。
3. 在“新建项目”对话框中,选择“Visual C++” -> “Win32” -> “Win32 控制台应用程序”。
4. 输入项目名称,选择项目位置,然后点击“确定”。
5. 在“Win32 控制台应用程序向导”中,选择“空项目”,然后点击“完成”。
6. 在解决方案资源管理器中,右击“源文件”,选择“添加” -> “新建项”。
7. 在“添加新项”对话框中,选择“C++ 文件(.cpp)”,输入文件名,然后点击“添加”。
8. 将上面的 C 语言代码粘贴到新创建的 C++ 文件中,保存并编译。
9. 运行程序,你应该会在控制台窗口中看到“Hello, World!”的输出。
请注意,上述步骤假设你已经安装了 Visual Studio 2008 和相关的C/C++ 开发工具。
如果你还没有安装这些工具,你需要先下载并安装它们。
在 SQL Server 2008 中,可以使用 XML 查询条件来过滤和检索 XML 数据。
以下是一些常用的 XML 查询条件的示例:1.查询 XML 元素的值:SELECT XMLColumn.value('local-name(.)', 'nvarchar(100)') AS ElementNameFROM YourTableWHERE YourTable.XMLColumn.value('local-name(.)', 'nvarchar(100)') = 'ElementValue'上述查询将返回名为 "ElementName" 的 XML 元素值为 "ElementValue" 的所有行。
2.查询 XML 属性的值:SELECT XMLColumn.value('local-name(.)', 'nvarchar(100)') AS AttributeNameFROM YourTableWHERE YourTable.XMLColumn.value('local-name(.)', 'nvarchar(100)') = 'AttributeValue'上述查询将返回名为"AttributeName" 的XML 属性值为"AttributeValue" 的所有行。
3.使用路径表达式查询嵌套的 XML 元素:SELECT XMLColumn.value('(./Element1/Element2)[1]', 'nvarchar(100)') AS NestedElementValueFROM YourTableWHERE YourTable.XMLColumn.value('local-name(.)', 'nvarchar(100)') = 'Element1'上述查询将返回名为 "Element1" 的 XML 元素中名为 "Element2" 的子元素的值。
VS2008C#ActiveX控件开发总结——————EagleInSky——————2010-1-13一、前言ActiveX控件以前也叫做OLE控件或OCX控件,它是一些软件组件或对象,可以将其插入到WEB网页或其它应用程序中。
使用ActiveX插件,可以轻松方便的在Web页中插入多媒体效果、交互式对象以及复杂程序等等。
通常使用C++或VB开发ActiveX控件,本文探讨一下在Visual Studio2008环境中使用C#开发ActiveX控件的技术实现。
工作的需要,最近学习了一下C#ActiveX的开发,参照网上众多的资料,发现在VS2008下开发ActiveX的资料较少,本人现在现在做一个笔记,以备后用。
其实用VS做一个ActiveX的安装项目,在客户机上双击运行安装.msi文件也是可以的,但是如果你的客户是在千里之外,难道每次更新的时候都要过去帮客户去安装吗?(客户毕竟有很多都不懂。
)所以,手动安装实在是太不爽了。
那么我们就实现一下ActiveX的自动安装吧。
二、开发环境操作系统:Windows2003开发工具:Visual Studio2008.NET版本:3.5开发语言:C#三、实现过程3.1运行Microsoft Visual Studio2008,新建解决方案如图3-1:图3-1给解决方案命名为:ActiveXTest如图3-2:图3-23.2为解决方案添加一个Windows控件库项目,点击右键点击解决方案…如图3-3:图3-3并把控件库命名为ActiveX如图3-4:图3-4现在解决方案资源管理器的情况如图3-5:图3-53.3更改项目属性:右键点击“ActiveX”如图3-6:图3-6在VS的工作区域出现了如下图的界面如图3-7:图3-7单击“程序集信息(I)…”弹出“程序及信息”如图3-8:勾选“使程序集COM可见(M)”图3-8选择“生成”选项卡,并勾选“为COM互操作注册(P)”如图3-9:注意:此处是在debug状态下修改的,如果是调到release状态下,还需要再设置一下。
VS2008 VC++ XML操作1.msxmlchs.msi的安装安装msxml 4.0 sp2时要注意不要用默认安装,要选择自定义安装(全部安装)才能选择安装SDK,若没有选择安装SDk会发现安装完成后安装目录下什么也没有,而选择了SDK的安装可以在目录下看到LIB INC doc 3个文件夹2.注册dll命令行输入如下命令可以弹出注册成功的对话框cd c:\windows\system32regsvr32 msxml4.dll (也可在运行框中直接输入这句)3.VS2008 设置工具->选项->项目和解决方案->VC++目录Include添加INC的的路径C:\Program Files\MSXML 4.0\INCLibrary添加INC的的路径C:\Program Files\MSXML 4.0\LIB4.VC60 设置Tools->Options... ->Directories tab->Include添加INC的的路径C:\Program Files\MSXML 4.0\INCTools->Options... ->Directories tab->Library添加INC的的路径C:\Program Files\MSXML 4.0\LIB5.新建项目,链接库代码中#include <msxml2.h>VC60 open Project Settings by clicking Settings from the Project menu. Select the Link tab.Append "msxml2.lib" to the Object/library modules: textbox.6.Code1://部分变量无法识别时在前面加命名空间MSXML2::#include<stdio.h>#import<msxml4.dll>using namespace MSXML2;int main(int argc, char* argv[]){MSXML2::IXMLDOMDocument2Ptr pXMLDom;HRESULT hr;CoInitialize(NULL);hr = pXMLDom.CreateInstance(__uuidof(DOMDocument40));if (FAILED(hr)){printf("Failed to CreateInstance on an XML DOM");return NULL;}pXMLDom->preserveWhiteSpace = VARIANT_TRUE;// Create a processing instruction targeted for xml.MSXML2::IXMLDOMProcessingInstructionPtr pi;pi = pXMLDom->createProcessingInstruction("xml", "version='1.0'");if (pi != NULL) {pXMLDom->appendChild(pi);pi.Release();}// Create a processing instruction targeted for xml-stylesheet.pi = pXMLDom->createProcessingInstruction("xml-stylesheet","type='text/xml' href='dom.xsl'");if (pi != NULL) {pXMLDom->appendChild(pi);pi.Release();}// Create a comment for the document.MSXML2::IXMLDOMCommentPtr pc;pc = pXMLDom->createComment("sample xml file created using XML DOM object."); if (pc != NULL) {pXMLDom->appendChild(pc);pc.Release();}// Create the root element (i.e., the documentElement).MSXML2::IXMLDOMElementPtr pe;pe = pXMLDom->createElement("root");// Create a "created" attribute for the root element and// assign the "using dom" character data as the attribute value.MSXML2::IXMLDOMAttributePtr pa;pa = pXMLDom->createAttribute("created");if (pa != NULL){pa->value = "using dom";pe->setAttributeNode(pa);pa.Release();}// Add the root element to the DOM instance.pXMLDom->appendChild(pe);pe.Release();// Next, we will create and add more nodes to the root element// we've just created.// Create an element to hold text content.pe = pXMLDom->createElement("node1");if (pe != NULL){// Add newline + tab for indentation.pXMLDom->documentElement->appendChild(pXMLDom->createTextNode("\n\t")); pe->text = "some character data";pXMLDom->documentElement->appendChild(pe);pe.Release();}// Create an element to hold a CDATA section.pe=pXMLDom->createElement("node2");if (pe != NULL){// Add newline + tab for indentation.pXMLDom->documentElement->appendChild(pXMLDom->createTextNode("\n\t")); MSXML2::IXMLDOMCDATASectionPtr pcd;pcd = pXMLDom->createCDATASection("<some mark-up text>");if (pcd != NULL) {pe->appendChild(pcd);pcd.Release();}pXMLDom->documentElement->appendChild(pe);pe.Release();}// Create an element to hold three empty subelements.pe=pXMLDom->createElement("node3");if (pe != NULL){// Add newline +tab for indentation.pXMLDom->documentElement->appendChild(pXMLDom->createTextNode("\n\t")); MSXML2::IXMLDOMDocumentFragmentPtr pdf;pdf = pXMLDom->createDocumentFragment();pdf->appendChild(pXMLDom->createTextNode("\n\t\t"));pdf->appendChild(pXMLDom->createElement("subNode1"));pdf->appendChild(pXMLDom->createTextNode("\n\t\t"));pdf->appendChild(pXMLDom->createElement("subNode2"));pdf->appendChild(pXMLDom->createTextNode("\n\t\t"));pdf->appendChild(pXMLDom->createElement("subNode3"));pdf->appendChild(pXMLDom->createTextNode("\n\t"));pe->appendChild(pdf);pdf.Release();pXMLDom->documentElement->appendChild(pe);pe.Release();pXMLDom->documentElement->appendChild(pXMLDom->createTextNode("\n")); }printf("Dynamically created DOM:\n%s\n",(LPCSTR)pXMLDom->xml);hr = pXMLDom->save("dynaDom.xml");if (FAILED(hr)){printf("Failed to save DOM to dynaDom.xml\n");}else{printf("DOM saved to dynamDom.xml\n");}if (pXMLDom) pXMLDom.Release();CoUninitialize();return 0;}结果:Dynamically created DOM:<?xml version="1.0"?><?xml-stylesheet type='text/xml' href='dom.xsl'?><!--sample xml file created using XML DOM object.--><root created="using dom"><node1>some character data</node1><node2><![CDATA[<some mark-up text>]]></node2><node3><subNode1/><subNode2/><subNode3/></node3></root>DOM saved to dynamDom.xml7.Code2(未编译验证):#include<stdio.h>#include<msxml2.h>// You might need to add the msxml4/sdk/(inc, lib) directories // to the Tools->Options...->Directories in Visual Studio.//// You might also need to append "msxml2.lib" to the// Project->Settings...->Link->Object/Libray Modules field.int main(int argc, char* argv[]){HRESULT hr;IXMLDOMDocument3 *pXMLDoc = NULL;IXMLDOMParseError * pObjError = NULL;BSTR bstr = NULL;VARIANT_BOOL status;VARIANT vSrc;CoInitialize(NULL);hr = CoCreateInstance(CLSID_DOMDocument40,NULL,CLSCTX_INPROC_SERVER,IID_IXMLDOMDocument3,(void**)&pXMLDoc);if (FAILED(hr)){printf("Failed to CoCreate an instance of an XML DOM\n"); printf("Error code: %x\n", hr);goto clean;}hr = pXMLDoc->put_async(VARIANT_FALSE);if (FAILED(hr)){printf("Failed to set async property\n");goto clean;}hr = pXMLDoc->put_validateOnParse(VARIANT_FALSE);if (FAILED(hr)){printf("Failed to set validateOnParse\n");goto clean;}hr = pXMLDoc->put_resolveExternals(VARIANT_FALSE);if (FAILED(hr)){printf("Failed to disable resolving externals.\n");goto clean;}VariantInit(&vSrc);V_BSTR(&vSrc) = SysAllocString(L"stocks.xml");V_VT(&vSrc) = VT_BSTR;hr = pXMLDoc->load(vSrc, &status);if(status!=VARIANT_TRUE){hr = pXMLDoc->get_parseError(&pObjError);hr = pObjError->get_reason(&bstr);printf("Failed to load DOM from books.xml. %S\n",bstr);goto clean;}hr = pXMLDoc->get_xml(&bstr);printf("stocks.xml:\n%S\n", bstr);clean:if (bstr)SysFreeString(bstr);if (&vSrc)VariantClear(&vSrc);if (pObjError)pObjError->Release();if (pXMLDoc)pXMLDoc->Release();CoUninitialize();return 0;}。