再谈word2003编程

再谈word2003编程

近期因为项目需要,写了许多word2003编程的东东.有时候遇到难题想查sdk说明,很难找到中文解释,对于e文不好的我来说,简直是天书.想必很多人多有感慨.
    下面列出内容是一些常用的内容说明,希望对大家有帮助.
    那就开始吧注意,下文的WAPP是我定义的word文档工程变量

//合并单元格
   table.Cell(2, 2).Merge(table.Cell(2, 3));

 //单元格分离
    object Rownum = 2;
    object Columnnum = 2;
    table.Cell(2, 2).Split(ref Rownum, ref  Columnnum);

//单元格对齐方式
     WApp.Selection.Cells.VerticalAlignment =Microsoft.Office.Interop.Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter;

//插入表行
     table.Rows.Add(ref missing);

//分页  object ib = Microsoft.Office.Interop.Word.WdBreakType.wdPageBreak;
    WApp.Selection.InsertBreak(ref ib);

//换行
     WApp.Selection.TypeParagraph();

二、word文档设置

WApp.ActiveDocument.PageSetup.LineNumbering.Active =0;//行编号
            WApp.ActiveDocument.PageSetup.Orientation =Microsoft.Office.Interop.Word.WdOrientation.wdOrientPortrait;//页面方向
            WApp.ActiveDocument.PageSetup.TopMargin =WApp.CentimetersToPoints(float.Parse("2.54"));//上页边距
            WApp.ActiveDocument.PageSetup.BottomMargin = WApp.CentimetersToPoints(float.Parse("2.54"));//下页边距
            WApp.ActiveDocument.PageSetup.LeftMargin = WApp.CentimetersToPoints(float.Parse("3.17"));//左页边距
            WApp.ActiveDocument.PageSetup.RightMargin = WApp.CentimetersToPoints(float.Parse("3.17"));//右页边距
            WApp.ActiveDocument.PageSetup.Gutter = WApp.CentimetersToPoints(float.Parse("0"));//装订线位置
            WApp.ActiveDocument.PageSetup.HeaderDistance = WApp.CentimetersToPoints(float.Parse("1.5"));//页眉
            WApp.ActiveDocument.PageSetup.FooterDistance = WApp.CentimetersToPoints(float.Parse("1.75"));//页脚
            WApp.ActiveDocument.PageSetup.PageWidth = WApp.CentimetersToPoints(float.Parse("21"));//纸张宽度
            WApp.ActiveDocument.PageSetup.PageHeight = WApp.CentimetersToPoints(float.Parse("29.7"));//纸张高度
            WApp.ActiveDocument.PageSetup.FirstPageTray = Microsoft.Office.Interop.Word.WdPaperTray.wdPrinterDefaultBin;//纸张来源
            WApp.ActiveDocument.PageSetup.OtherPagesTray = Microsoft.Office.Interop.Word.WdPaperTray.wdPrinterDefaultBin;//纸张来源
            WApp.ActiveDocument.PageSetup.SectionStart = Microsoft.Office.Interop.Word.WdSectionStart.wdSectionNewPage;//节的起始位置:新建页
            WApp.ActiveDocument.PageSetup.OddAndEvenPagesHeaderFooter = 0;//页眉页脚-奇偶页不同
            WApp.ActiveDocument.PageSetup.DifferentFirstPageHeaderFooter = 0;//页眉页脚-首页不同
            WApp.ActiveDocument.PageSetup.VerticalAlignment = Microsoft.Office.Interop.Word.WdVerticalAlignment.wdAlignVerticalTop;//页面垂直对齐方式
            WApp.ActiveDocument.PageSetup.SuppressEndnotes =0;//不隐藏尾注
            WApp.ActiveDocument.PageSetup.MirrorMargins = 0;//不设置首页的内外边距
            WApp.ActiveDocument.PageSetup.TwoPagesOnOne = false;//不双面打印
            WApp.ActiveDocument.PageSetup.BookFoldPrinting =false;//不设置手动双面正面打印
            WApp.ActiveDocument.PageSetup.BookFoldRevPrinting =false;//不设置手动双面背面打印
            WApp.ActiveDocument.PageSetup.BookFoldPrintingSheets = 1;//打印默认份数
            WApp.ActiveDocument.PageSetup.GutterPos = Microsoft.Office.Interop.Word.WdGutterStyle.wdGutterPosLeft;//装订线位于左侧
            WApp.ActiveDocument.PageSetup.LinesPage = 40;//默认页行数量
            WApp.ActiveDocument.PageSetup.LayoutMode = Microsoft.Office.Interop.Word.WdLayoutMode.wdLayoutModeLineGrid;//版式模式为“只指定行网格”

三、光标移动

 //移动光标
 //光标下移3行 上移3行
            object unit = Microsoft.Office.Interop.Word.WdUnits.wdLine;
            object count = 3;
            WApp.Selection.MoveEnd(ref unit,ref count);
            WApp.Selection.MoveUp(ref unit, ref count, ref missing);
            
//Microsoft.Office.Interop.Word.WdUnits说明
            //wdCell                  A cell. 
            //wdCharacter             A character. 
            //wdCharacterFormatting   Character formatting. 
            //wdColumn                A column. 
            //wdItem                  The selected item. 
            //wdLine                  A line. //行
            //wdParagraph             A paragraph. 
            //wdParagraphFormatting   Paragraph formatting. 
            //wdRow                   A row. 
            //wdScreen                The screen dimensions. 
            //wdSection               A section. 
            //wdSentence              A sentence. 
            //wdStory                 A story. 
            //wdTable                 A table. 
            //wdWindow                A window. 
            //wdWord                  A word. 

//录制的vb宏
            //     ,移动光标至当前行首
            //    Selection.HomeKey unit:=wdLine
            //    ‘移动光标至当前行尾
            //    Selection.EndKey unit:=wdLine
            //    ‘选择从光标至当前行首的内容
            //    Selection.HomeKey unit:=wdLine, Extend:=wdExtend
            //    ‘选择从光标至当前行尾的内容
            //    Selection.EndKey unit:=wdLine, Extend:=wdExtend
            //    ‘选择当前行
            //    Selection.HomeKey unit:=wdLine
            //    Selection.EndKey unit:=wdLine, Extend:=wdExtend
            //    ‘移动光标至文档开始
            //    Selection.HomeKey unit:=wdStory
            //    ‘移动光标至文档结尾
            //    Selection.EndKey unit:=wdStory
            //    ‘选择从光标至文档开始的内容
            //    Selection.HomeKey unit:=wdStory, Extend:=wdExtend
            //    ‘选择从光标至文档结尾的内容
            //    Selection.EndKey unit:=wdStory, Extend:=wdExtend
            //    ‘选择文档全部内容(从WholeStory可猜出Story应是当前文档的意思)
            //    Selection.WholeStory
            //    ‘移动光标至当前段落的开始
            //    Selection.MoveUp unit:=wdParagraph
            //    ‘移动光标至当前段落的结尾
            //    Selection.MoveDown unit:=wdParagraph
            //    ‘选择从光标至当前段落开始的内容
            //    Selection.MoveUp unit:=wdParagraph, Extend:=wdExtend
            //    ‘选择从光标至当前段落结尾的内容
            //    Selection.MoveDown unit:=wdParagraph, Extend:=wdExtend
            //    ‘选择光标所在段落的内容
            //    Selection.MoveUp unit:=wdParagraph
            //    Selection.MoveDown unit:=wdParagraph, Extend:=wdExtend
            //    ‘显示选择区的开始与结束的位置,注意:文档第1个字符的位置是0
            //    MsgBox ("第" & Selection.Start & "个字符至第" & Selection.End & "个字符")
            //    ‘删除当前行
            //    Selection.HomeKey unit:=wdLine
            //    Selection.EndKey unit:=wdLine, Extend:=wdExtend
            //    Selection.Delete
            //    ‘删除当前段落
            //    Selection.MoveUp unit:=wdParagraph
            //    Selection.MoveDown unit:=wdParagraph, Extend:=wdExtend
            //    Selection.Delete


//表格的光标移动
//光标到当前光标所在表格的地单元格
WApp.Selection.Tables[1].Cell(1, 1).Select();
//unit对象定义
object  unith = Microsoft.Office.Interop.Word.WdUnits.wdRow;//表格行方式
            object extend = Microsoft.Office.Interop.Word.WdMovementType.wdExtend;///extend对光标移动区域进行扩展选择
            object unitu = Microsoft.Office.Interop.Word.WdUnits.wdLine;//文档行方式,可以看成表格一行.不过和wdRow有区别
            object unitp = Microsoft.Office.Interop.Word.WdUnits.wdParagraph;//段落方式,对于表格可以选择到表格行后的换车符,对于跨行合并的行选择,我能找到的最简单方式
            object count=1;//光标移动量

下面代码演示对于存在合并单元格的选择操作.合并单元格的选择问题一直是word的bug.部分object对象参照上面代码

上面这个是表格合并样式.要如何才能选择2行标题栏尼.看下面代码

//定位到表格第1单元格
WApp.Selection.Tables[1].Cell(1, 1).Select();
//定位到第1个单元格第1个字符前          
WApp.Selection.HomeKey(ref unith, ref missing);
//扩展到行尾,选择表第1行            
WApp.Selection.EndKey(ref unith, ref extend);
//定义表格标题的行数量,titlerow为参数            
object strtitlerow=titlerow-1;
//移动光标选择第1行的末尾段落标记            
WApp.Selection.MoveDown(ref unitp, ref count, ref extend);
//选择下一行,因为合并的原因,如表格标题最后列是合并,只选择了2行的部分
            WApp.Selection.MoveDown(ref unitu, ref strtitlerow, ref extend);
//扩展到该行的末端,保证合并行能全部选择到
            WApp.Selection.EndKey(ref unith, ref extend);
//复制选择内容到剪贴板
            WApp.Selection.Copy();
//下面是移动光标到任何位置并粘贴内容.我程序中目的是到表格换页的时候自动插入下一页的表头.
            WApp.Selection.Tables[1].Cell(System.Convert.ToInt32(strRownum), 1).Select();
            WApp.Selection.HomeKey(ref unith, ref missing);
            WApp.Selection.Paste();

四、段落格式设定

//段落格式设定
            WApp.Selection.ParagraphFormat.LeftIndent = WApp.CentimetersToPoints(float.Parse("0"));//左缩进
            WApp.Selection.ParagraphFormat.RightIndent = WApp.CentimetersToPoints(float.Parse("0"));//右缩进
            WApp.Selection.ParagraphFormat.SpaceBefore =float.Parse("0");//段前间距
            WApp.Selection.ParagraphFormat.SpaceBeforeAuto =0;//
            WApp.Selection.ParagraphFormat.SpaceAfter = float.Parse("0");//段后间距
            WApp.Selection.ParagraphFormat.SpaceAfterAuto = 0;//
            WApp.Selection.ParagraphFormat.LineSpacingRule = Microsoft.Office.Interop.Word.WdLineSpacing.wdLineSpaceSingle;//单倍行距
            WApp.Selection.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphJustify;//段落2端对齐
            WApp.Selection.ParagraphFormat.WidowControl = 0;//孤行控制
            WApp.Selection.ParagraphFormat.KeepWithNext = 0;//与下段同页
            WApp.Selection.ParagraphFormat.KeepTogether = 0;//段中不分页
            WApp.Selection.ParagraphFormat.PageBreakBefore = 0;//段前分页
            WApp.Selection.ParagraphFormat.NoLineNumber = 0;//取消行号
            WApp.Selection.ParagraphFormat.Hyphenation = 1;//取消段字
            WApp.Selection.ParagraphFormat.FirstLineIndent = WApp.CentimetersToPoints(float.Parse("0"));//首行缩进
            WApp.Selection.ParagraphFormat.OutlineLevel = Microsoft.Office.Interop.Word.WdOutlineLevel.wdOutlineLevelBodyText;
            WApp.Selection.ParagraphFormat.CharacterUnitLeftIndent = float.Parse("0");
            WApp.Selection.ParagraphFormat.CharacterUnitRightIndent = float.Parse("0");
            WApp.Selection.ParagraphFormat.CharacterUnitFirstLineIndent = float.Parse("0");
            WApp.Selection.ParagraphFormat.LineUnitBefore = float.Parse("0");
            WApp.Selection.ParagraphFormat.LineUnitAfter = float.Parse("0");
            WApp.Selection.ParagraphFormat.AutoAdjustRightIndent = 1;
            WApp.Selection.ParagraphFormat.DisableLineHeightGrid =0;
            WApp.Selection.ParagraphFormat.FarEastLineBreakControl =1;
            WApp.Selection.ParagraphFormat.WordWrap = 1;
            WApp.Selection.ParagraphFormat.HangingPunctuation = 1;
            WApp.Selection.ParagraphFormat.HalfWidthPunctuationOnTopOfLine = 0;
            WApp.Selection.ParagraphFormat.AddSpaceBetweenFarEastAndAlpha = 1;
            WApp.Selection.ParagraphFormat.AddSpaceBetweenFarEastAndDigit = 1;
            WApp.Selection.ParagraphFormat.BaseLineAlignment = Microsoft.Office.Interop.Word.WdBaselineAlignment.wdBaselineAlignAuto;

五、字体格式设定

//字体格式设定
            WApp.Selection.Font.NameFarEast = "华文中宋";
            WApp.Selection.Font.NameAscii = "Times New Roman";
            WApp.Selection.Font.NameOther = "Times New Roman";
            WApp.Selection.Font.Name = "宋体";
            WApp.Selection.Font.Size = float.Parse("14");
            WApp.Selection.Font.Bold = 0;
            WApp.Selection.Font.Italic = 0;
            WApp.Selection.Font.Underline = Microsoft.Office.Interop.Word.WdUnderline.wdUnderlineNone;
            WApp.Selection.Font.UnderlineColor = Microsoft.Office.Interop.Word.WdColor.wdColorAutomatic;
            WApp.Selection.Font.StrikeThrough =0;//删除线
            WApp.Selection.Font.DoubleStrikeThrough = 0;//双删除线
            WApp.Selection.Font.Outline =0;//空心
            WApp.Selection.Font.Emboss = 0;//阳文
            WApp.Selection.Font.Shadow = 0;//阴影
            WApp.Selection.Font.Hidden = 0;//隐藏文字
            WApp.Selection.Font.SmallCaps = 0;//小型大写字母
            WApp.Selection.Font.AllCaps = 0;//全部大写字母
            WApp.Selection.Font.Color = Microsoft.Office.Interop.Word.WdColor.wdColorAutomatic;
            WApp.Selection.Font.Engrave = 0;//阴文
            WApp.Selection.Font.Superscript = 0;//上标
            WApp.Selection.Font.Subscript = 0;//下标
            WApp.Selection.Font.Spacing = float.Parse("0");//字符间距
            WApp.Selection.Font.Scaling = 100;//字符缩放
            WApp.Selection.Font.Position = 0;//位置
            WApp.Selection.Font.Kerning = float.Parse("1");//字体间距调整
            WApp.Selection.Font.Animation = Microsoft.Office.Interop.Word.WdAnimation.wdAnimationNone;//文字效果
            WApp.Selection.Font.DisableCharacterSpaceGrid =false;
            WApp.Selection.Font.EmphasisMark = Microsoft.Office.Interop.Word.WdEmphasisMark.wdEmphasisMarkNone;

六、终于找到了获取光标位置的东东。那里找到的忘了,感谢提供的老大。放到这里供大家参考。
有了这个和上面内容,相信大家对word文档的控制应该到了随心所欲的地步,爽啊
获取的c#语法

//get_Information
Selection.get_Information(WdInformation.wdActiveEndPageNumber)

 //关于行号-页号-列号-位置
            //information 属性 
            //返回有关指定的所选内容或区域的信息。variant 类型,只读。 
            //expression.information(type) 
            //expression 必需。该表达式返回一个 range 或 selection 对象。 
            //type long 类型,必需。需要返回的信息。可取下列 wdinformation 常量之一: 
            //wdactiveendadjustedpagenumber 返回页码,在该页中包含指定的所选内容或区域的活动结尾。如果设置了一个起始页码,并对页码进行了手工调整,则返回调整过的页码。 
            //wdactiveendpagenumber 返回页码,在该页中包含指定的所选内容或区域的活动结尾,页码从文档的开头开始计算而不考虑对页码的任何手工调整。 
            //wdactiveendsectionnumber 返回节号,在该节中包含了指定的所选内容或区域的活动结尾。 
            //wdatendofrowmarker 如果指定的所选内容或区域位于表格的行结尾标记处,则本参数返回 true。 
            //wdcapslock 如果大写字母锁定模式有效,则本参数返回 true。 
            //wdendofrangecolumnnumber 返回表格列号,在该表格列中包含了指定的所选内容或区域的活动结尾。 
            //wdendofrangerownumber 返回表格行号,在该表格行包含了指定的所选内容或区域的活动结尾。 
            //wdfirstcharactercolumnnumber 返回指定的所选内容或区域中第一个字符的位置。如果所选内容或区域是折叠的,则返回所选内容或区域右侧紧接着的字符编号。 
            //wdfirstcharacterlinenumber 返回所选内容中第一个字符的行号。如果 pagination 属性为 false,或 draft 属性为 true,则返回 - 1。 
            //wdframeisselected 如果所选内容或区域是一个完整的图文框文本框,则本参数返回 true。 
            //wdheaderfootertype 返回一个值,该值表明包含了指定的所选内容或区域的页眉或页脚的类型,如下表所示。 值 页眉或页脚的类型 
            //- 1 无 
            //0 偶数页页眉 
            //1 奇数页页眉 
            //2 偶数页页脚 
            //3 奇数页页脚 
            //4 第一个页眉 
            //5 第一个页脚 
            //wdhorizontalpositionrelativetopage 返回指定的所选内容或区域的水平位置。该位置是所选内容或区域的左边与页面的左边之间的距离,以磅为单位。如果所选内容或区域不可见,则返回 - 1。 
            //wdhorizontalpositionrelativetotextboundary 返回指定的所选内容或区域相对于周围最近的正文边界的左边的水平位置,以磅为单位。如果所选内容或区域没有显示在当前屏幕,则本参数返回 - 1。 
            //wdinclipboard 有关此常量的详细内容,请参阅 microsoft office 98 macintosh 版的语言参考帮助。 
            //wdincommentpane 如果指定的所选内容或区域位于批注窗格,则返回 true。 
            //wdinendnote 如果指定的所选内容或区域位于页面视图的尾注区内,或者位于普通视图的尾注窗格中,则本参数返回 true。 
            //wdinfootnote 如果指定的所选内容或区域位于页面视图的脚注区内,或者位于普通视图的脚注窗格中,则本参数返回 true。 
            //wdinfootnoteendnotepane 如果指定的所选内容或区域位于页面视图的脚注或尾注区内,或者位于普通视图的脚注或尾注窗格中,则本参数返回 true。详细内容,请参阅前面的 wdinfootnote 和 wdinendnote 的说明。 
            //wdinheaderfooter 如果指定的所选内容或区域位于页眉或页脚窗格中,或者位于页面视图的页眉或页脚中,则本参数返回 true。 
            //wdinmasterdocument 如果指定的所选内容或区域位于主控文档中,则本参数返回 true。 
            //wdinwordmail 返回一个值,该值表明了所选内容或区域的的位置,如下表所示。值 位置 
            //0 所选内容或区域不在一条电子邮件消息中。 
            //1 所选内容或区域位于正在发送的电子邮件中。 
            //2 所选内容或区域位于正在阅读的电子邮件中。 
            //wdmaximumnumberofcolumns 返回所选内容或区域中任何行的最大表格列数。 
            //wdmaximumnumberofrows 返回指定的所选内容或区域中表格的最大行数。 
            //wdnumberofpagesindocument 返回与所选内容或区域相关联的文档的页数。 
            //wdnumlock 如果 num lock 有效,则本参数返回 true。 
            //wdovertype 如果改写模式有效,则本参数返回 true。可用 overtype 属性改变改写模式的状态。 
            //wdreferenceoftype 返回一个值,该值表明所选内容相对于脚注、尾注或批注引用的位置,如下表所示。 值 描述 
            //— 1 所选内容或区域包含、但不只限定于脚注、尾注或批注引用中。 
            //0 所选内容或区域不在脚注、尾注或批注引用之前。 
            //1 所选内容或区域位于脚注引用之前。 
            //2 所选内容或区域位于尾注引用之前。 
            //3 所选内容或区域位于批注引用之前。 
            //wdrevisionmarking 如果修订功能处于活动状态,则本参数返回 true。 
            //wdselectionmode 返回一个值,该值表明当前的选定模式,如下表所示。 值 选定模式 
            //0 常规选定 
            //1 扩展选定 
            //2 列选定 
            //wdstartofrangecolumnnumber 返回所选内容或区域的起点所在的表格的列号。 
            //wdstartofrangerownumber 返回所选内容或区域的起点所在的表格的行号。 
            //wdverticalpositionrelativetopage 返回所选内容或区域的垂直位置,即所选内容的上边与页面的上边之间的距离,以磅为单位。如果所选内容或区域没有显示在屏幕上,则本参数返回 - 1。 
            //wdverticalpositionrelativetotextboundary 返回所选内容或区域相对于周围最近的正文边界的上边的垂直位置,以磅为单位。如果所选内容或区域没有显示在屏幕上,则本参数返回 - 1。 
            //wdwithintable 如果所选内容位于一个表格中,则本参数返回 true。 
            //wdzoompercentage 返回由 percentage 属性设置的当前的放大百分比。

七、呼,终于写完了,鼓掌。不要拿鸡蛋砸我。大家有好的心得,欢迎交流。不要光看不回。

时间: 2024-12-21 11:20:35

再谈word2003编程的相关文章

再谈多线程编程(一)——线程的概念、多线程的创建、守护线程、线程状态的转化

1.什么是线程以及多线程与进程的区别 在现代操作在运行一个程序时,会为其创建一个进程.例如启动一个QQ程序,操作系统就会为其创建一个进程.而操作系统中调度的最小单位元是线程,也叫轻量级进程,在一个进程里可以创建多个线程,这些线程都拥有各自的计数器,堆栈和局部变量等属性,并且能够访问共享的内存变量.处理器在这些线程上高速切换,让使用者感觉到这些线程在同时执行.因此我们可以这样理解: 进程:正在运行的程序,是系统进行资源分配和调用的独立单位.每一个进程都有它自己的内存空间和系统资源. 线程:是进程中

C++ Primer 学习笔记_73_面向对象编程 --再谈文本查询示例

面向对象编程 --再谈文本查询示例 引言: 扩展第10.6节的文本查询应用程序,使我们的系统可以支持更复杂的查询. 为了说明问题,将用下面的简单小说来运行查询: Alice Emma has long flowing red hair. Her Daddy says when the wind blows through her hair, it looks almost alive, like a fiery bird in flight. A beautiful fiery bird, he

C++ Primer 学习笔记_74_面向对象编程 --再谈文本查询示例[续/习题]

面向对象编程 --再谈文本查询示例[续/习题] //P522 习题15.41 //1 in TextQuery.h #ifndef TEXTQUERY_H_INCLUDED #define TEXTQUERY_H_INCLUDED #include <iostream> #include <fstream> #include <sstream> #include <vector> #include <set> #include <map&g

C++ Primer 学习笔记_73_面向对象编程 -再谈文本查询示范

面向对象编程 --再谈文本查询示例 引言: 扩展第10.6节的文本查询应用程序,使我们的系统可以支持更复杂的查询. 为了说明问题,将用下面的简单小说来运行查询: Alice Emma has long flowing red hair. Her Daddy says when the wind blows through her hair, it looks almost alive, like a fiery bird in flight. A beautiful fiery bird, he

C++ Primer 学习笔记_74_面向对象编程 -再谈文本查询示范[续/习题]

面向对象编程 --再谈文本查询示例[续/习题] //P522 习题15.41 //1 in TextQuery.h #ifndef TEXTQUERY_H_INCLUDED #define TEXTQUERY_H_INCLUDED #include <iostream> #include <fstream> #include <sstream> #include <vector> #include <set> #include <map&g

Java编程思想(十八) —— 再谈反射

在Java编程思想(十五) -- 类型信息之反射和Java编程思想(十六) -- 联系JVM再谈Class,书上只用了3页就讲完了,还有讲了那么多Class的东西,接下来要从反射中怎么用,自己结合API和其他资料再写多一些. 示例:Test.java public class Test { public Test() {     }      public Test(int i) {         System.out.println(i);     } private void pri()

Java基础——再谈面向对象

去年的这个时候,心血来潮写了篇<简述面向对象技术>,先在看来不由的会想:这都是写的什么跟什么啊?(ps:虽然现在写的博客依然不咋地)但是,Java的学习中又一次不得不再一次面向对象,所以,奉上一篇<再谈面向对象>,做为新年的一盘开胃菜. 面向对象是相对于面向过程而言,是一种思想. 区别于面向过程: 面向过程是以函数为基础,完成各种操作,强调的是过程,而面向对象是以对象为基础,强调的是对象. 比如说把大象装进冰箱分为几步,宋丹丹是这样说的:三步呗, 第一步:打开冰箱门, 第二步:把大

再谈:为什么开源C/C++开源框架极昂贵?

今天读了一篇文章:<腾讯前员工创业笔记:那些跟钱有关的事儿>(http://tech.163.com/14/0515/08/9S9975C5000915BF.html),摘录两段: 刚开工的时候买办公电脑,我心想创业公司应该省钱,就把机箱CPU硬盘内存显卡买来自己装.虽然"科班出身,基本功扎实",但因为缺乏经验,装一台机器要花费足足半天时间.于是我上网百度了一番,发现选择上门装机服务,装一台要100块,装好了送过来要花50块.如果我用这半天时间做点产品设计,亦或写几行代码,

【Go语言】【13】再谈GO语言的结构体

本文从如下四个方面再领着大家认识结构体 匿名结构体和匿名成员的结构体 值传递和引用传递 再谈嵌套结构体 面向对象 1.匿名结构体和匿名成员的结构体 如上篇所述,一个结构体需要先声明,再初始化,最后把初始化后的结构体赋值给其它变量,例如: /*声明结构体*/ type employee struct{ name,address string height,weight float64 } /*初始化结构体,并赋给变量emp*/ emp := employee{name:"eagle",