chm源码
㈠ 谁有c++ STL 中文文档或者Boost文档就发我一份吧,一定要中文,最好能都源码的,最好是chm格式的
给你书的名字。。中文 Beyond the C++ Standard Library:An Introction to Boost.chm Boost程序库完全开发指南.pdf 关于stl看这。。http://cplusplus.com/reference/stl/ 中文的真心不给力
㈡ 求chm反编译的源代码!
这里有源码以及完整实例
http://www.codeproject.com/KB/winhelp/htmlhelp.aspx
㈢ 怎么将chm完美的转成kindle支持的格式
以calibre该软件为例,步骤如下:
1、直接打开相关窗口,点击添加书籍进行跳转。
㈣ java源代码chm格式
没有见过这样的东西,而且我觉得也不会有,就算有,也没有多少人用。
我有很多理由可以说明 eclipse比chm的源代码查看好
1.chm版本,一个最明显的优势是搜索,但是这个功能,eclipse里面也有
具体步骤:在一个方法里面(比如main)打想要搜索的类名,比如List,大小写无所谓,打完任何一个字母,可以使用eclipse里的快捷内容帮助,默认是alt+/,下面就会出现相应的类,找到,回车,然后按住Ctrl点击鼠标左键,进入这个类的源代码,操作上,跟chm一样简便
2.eclipse里面查看的源代码,有以下好处
2.1 代码语法高亮,格式化整齐
2.2 可以使用eclipse中的outline视图,快速的找到你关注的代码部分
2.3 可以显示类的继承关系(比如,借助于hierarchy视图,比如光标在某个类上的时候按Ctrl+T)
2.4 可以使用Ctrl+O快速找到某个类中的某些方法
2.5 以及其他非常常用 而且有用的快捷功能
3. eclipse查看源码,扩展性好,你现在是看JDK源码,要求一份JDK源码的chm,但是你下次要看ssh框架的源码,那你又要去求这些的chm。使用eclipse则不然,简单的添加源代码后,可以直接查看(源代码的获取途径很多,这些框架的官网上都有)
4. 有助于你对eclipse的熟练程度。工具熟悉以后,很多开发都会变得更简单了
5. 还有很多。。。 自己体会
如果你是由于某种原因,不能使用eclipse,那么我觉得,用手动看src的方式看看就足够了,因为eclipse这种IDE都布使用,那编码量肯定是少的,同样的,代码的阅读量也会减少(光看,不去实际操作类里面的方法,是没有什么效果的),或者说,这种情况下,看JDK API doc就足够了
另外说点题外的,java出来也十几年了,为什么没有提供这种 chm版本的源代码阅读呢?根本原因就是不需要这样的东西,因为已经有很多比这种方式好的多的其他方式存在了,你如果觉得不和要求,一定是你没有发现其他工具的优势
除非有特殊情况,但是特殊情况下,你可以自己写一个src转成chm的工具(有能力写这个工具的时候,我想你也不会去写这样的工具了,因为你已经能够通过更简单的办法实现你的特殊需求了)
㈤ chm电子书制作全过程
CHM帮助文件是什么?原来的软件大多数采用扩展名为HLP的帮助文件(WinHelp ),但随着互联网的发展,这种格式的帮助文件已经难以适应软件在线帮助的需要,以及更加人性化更加简单易于查看的需要,因此一种全新的帮助文件系统HTML Help由微软率先在Windows98中使用了。由于它是一个经过压缩的网页集合,不但减小了文件的体积,更利于用户从INTERNET上下载,并且还支持HTML、Ac-tiveX、Java、JScript、Visual Basic Scripting 和多种图像格式(.jpeg、.gif和.png 等),因此很快受到广大软件作者和软件用户的欢迎。不过,它的用途又何止这些?
下面,我们就以将小说《围城》制作成一部阅读方便的电子版小说为例,一步步地让您了解CHM帮助文档制作的全过程,通过这样的介绍,相信您一定能随心所欲地做出更多自己想要的电子文档。“公欲善其事,必先利其器”,还是先介绍我们的制作工具吧。能制作CHM文件的工具最常用也是最易用的莫过于Microsoft的HTML Help Workshop了,它完全安装后只有4.6M,包括两组工具集:HTML Help Workshop和HTML Help Image Editor。前者就是我们今天要用到的好东东,后者在网页制作中常用到图形文件的编辑和修改。
安装完HTML Help Workshop后,您可以在开始菜单|程序|HTML Help Workshop中打开它。要建立CHM帮助文件必须先将我们所有想要让其出现在帮助文件中的内容做成相对独立的网页文件(即HTML文件),这些工作可以在HTML Help Workshop中完成,也可以应用其他网页编辑器(如FontPage或HotDog)来制作。
比如说我们这里将其作为例子的《围城》,就可以按不同的章节来制作。另外,HTML文件之间应该相互链接,如每一章之间应该保留与上一章和下一章超级链接的接口,将这些相对独立的网页制作完成后,将它们储存到一个新建的文件夹中。
首先我们先介绍几种将要用到的过渡文件:
1.hhp文件,这是最常用的一类文件,它实际上是“HTML Help project”的缩写,表示HTML帮助文件项目,它是生成CHM文件最直接用到的一类文件,只需要有一个hhp文件就可以根据它来编译相应的CHM文件。
2.hhc文件,它是“HTML Help table of contents”的缩写,表示的是HTML帮助文件的目录,通常我们在CHM文件浏览器的左边窗口中看到的目录内容就由它来提供,当然,它并不能直接被编译成CHM文件,而先要集成到某一hhp文件中才能发挥作用。
3.hhk文件,它是“HTML Help Index Keyword”的缩写,为我们提供了CHM文件的关键字索引查询功能,也是一个易于查看的帮助文件不可缺少的一部分,同hhc文件一样,它也不能直接编译生成相应的CHM文件。
4.hhj文件,它实际上不属于我们今天要讨论的内容,因为它属于另一个帮助文件系统Win Help,在Win Help系统中,hhj文件的作用相当于HTML Help 中的HHP文件,在这里就不做更详细的介绍了。
我们现在已经知道要编译一个CHM文件,首先要建立一个hhp文件。先在Workshop的“文件”菜单中选择“新建”一个项目,这时将会出现有名为“新建项目”的窗口,这里会有一名“向导”提示您是否将采用原由的WinHelp项目文件(即.hpj)来制作新的项目,可以将“转换WinHelp项目”选项勾掉,点击“下一步”然后指定将要建立的hhp文件的文件名和完整的路径,再进入“下一步”,此时会有三个复选项,它们分别表示以现存的hhc、hhk、HTML文件来建立HHP文件,由于没有现成的hhc和hhk文件,因此我们可以只选择最后一项(HTML Files),点击“下一步”后可以在随后出现的“新建项目——HTML文件”窗口中将我们已经制作好的所有网页文件按先后顺序添加到文件列表中,点击“下一步”后,就可以看到令人愉快的“完成”按键了,但这并不意味着大功告成,因为这一步仅仅是建立了一个hhp文件,还有不少工作等着我们去完成呢。
一个hhp文件形成后,将会在Workshop|项目窗口中显示此文件的结构,双击此窗口中的[OPTIONS]选项,就可以修改这一项目的结构了,比如要指定项目的标题,指定CHM文件的默认首页文件以及文字编码类型和字体,在文件窗口中,还可以指定将要生成的CHM文件的文件名以及路径、指定编译时所需的hhc和hhk的路径及名称等等。上面我们已经介绍了hhc、hhk文件的作用,它们并不是必须的,可以根据需要来决定是否要生成包含目录以及关键字查询的帮助文档,一般来说,总页数较少的帮助文件可以省略掉这些内容和功能。对照本例的电子版小说《围城》的页数,我们决定简单至上,这时可以执行“文件”菜单中的“编译”命令,Workshop在确认hhp文件的路径及名称后。很快,一本电子版小说就这样生成了,它虽然只是一个独立的文件,但却可以完全脱离自己的机器、脱离Workshop运行(需要IE4.0以上支持)。
一个比较简单的CHM帮助文件(没有目录、没有索引)的制作过程就是这样,如果您想制作包括目录和索引的帮助文件,可以先分别制作一个HHC文件和一个HHK文件,然后在上一步中将它们添加到相应的项目中就可以了。HHC的建立和编辑的方法有两种,一种是在“文件”菜单中选择新建一个“目录表”,在随后出现的编辑窗口中对其进行编辑;另一种方法是在形成的hhp文件编辑窗口中点击“目录”窗口选择“创建一个新的目录文件”,并为其命名进行相应的编辑。
经过上面的介绍,现在您一定可以自己编辑制作帮助文件和电子文档了吧,Workshop的用途其实还有很多,其中另一个不得不说的功能是:它不仅可以编译一个CHM文件,更可以对现有的CHM文档进行反编译,这样我们可以更直接地借鉴和使用一些制作得非常精美的帮助文档的某些精彩部分,有时搞一点“拿来主义”感觉还是不错的。
好了,不多说了,还是告诉您这个HTML Help Workshop的下载地址吧:下载,感兴趣的朋友还是快点吧!
㈥ 求一个完整的c++项目(源码+文档)
建议下载《Windows程序设计.chm》,里面有很多例程,有完整源代码,而且都是有界面的。
㈦ 什么软件能打开.chm文件的源代码
HHW也可以的
你新建工程-载入已有工程,这样就能把原来的CHM文档打开。
之后再找到你要修改的那个网页,用frontpage神马的打开,就能修改了
㈧ C# 如何生成CHM帮助文件
前一段时间应公司要求,让我开发一个数据库字段信息CHM帮助文件生成软件。结果当时我就二了,这个东西我只用过,不知道咋做啊。没想到老大很随意说一句:"没事,这个软件我之前有有源码,只不过现在不能用了,你等会参考一下就可以了"。我当时还傻乎乎的谢天谢地,总算有源码可以参考了。当源代码发过来以后,我顿时石化了,我。。。。。,那玩意儿用c++builder开发的,硬着头皮看了一遍,全是带*指针变量、数组、集合、函数,更要命的是,一个类里面写了四五千行没注视的代码,函数中五六百行代码的有几个。 我说这不是坑人嘛?结果看了一天后,我果断放弃看了那个源码了,最后还是的感谢网上活跃的一帮朋友,在一个源码的帮助下(源码我不知道怎么上传,),终于完成了任务啊, 吐槽到此为止,言归正传,首先如下:生成事件View Code 从方法中我可以看出,我们需要一个hhp文件,hhc文件,hhk文件,然后再执行compile方法就可以了首先动态生一个hhp,代码如下: 1///<summary> 2/// 创建hhp文件 3///</summary> 4///<param name="htmFile">htm文件名</param> 5publicvoid OpenHhp(string htmFile) 6 { 7 FileStream fs = new FileStream("test.hhp", FileMode.Create); //创建hhp文件 8 streamWriter = new System.IO.StreamWriter(fs, System.Text.Encoding.GetEncoding("GB18030")); 91011 streamWriter.WriteLine("[OPTIONS]"); 12 streamWriter.WriteLine("Compatibility=1.1 or later"); 13 streamWriter.WriteLine("Compiled file=" + textBox1 .Text.Trim()+ ".chm"); //定义生成文件名称14 streamWriter.WriteLine("Contents file=test.hhc"); 15 streamWriter.WriteLine("Default topic=HTML\\全部对象.htm"); 16 streamWriter.WriteLine("Display compile progress=Yes"); 17 streamWriter.WriteLine("Index file=DBO_HELP.hhk"); 18 streamWriter.WriteLine("Language=0x804 中文(中国)"); 19 streamWriter.WriteLine("Title=数据库结构展示"); 20 streamWriter.WriteLine(""); 21 streamWriter.WriteLine("[FILES]"); 22 streamWriter.WriteLine("全部对象.htm"); 23 streamWriter.WriteLine(""); 24 streamWriter.WriteLine("[INFOTYPES]"); 25 streamWriter.WriteLine(htmFile); 26 streamWriter.WriteLine(); 27 streamWriter.Close(); 28 }这样在项目的根目录上面就生成了一个hhp文件 现在就要生成hhc文件了,它主要就是生成chm文件左边显示树形的内容,当点击节点,可以超链接要显示的页面(其实CHM中的内容都是HTML,你可以直接连接静态网页,),当然是显示在右边,而我的项目中要显示东西都是动态生成HTML文件,所以这个生成有些复杂,不过我这里会截取主要部分代码讲解:privatevoid OpenHhc(string htmFile) { StringBuilder Modes = new StringBuilder(); FileStream fs = new FileStream(GetContentsHtmlFilename(), FileMode.Create); //创建hhp文件 streamWriter = new System.IO.StreamWriter(fs, System.Text.Encoding.GetEncoding("GB18030")); FileStream fs1 = new FileStream("HTML\\全部对象.htm", FileMode.Create); // str1 = new System.IO.StreamWriter(fs1, System.Text.Encoding.GetEncoding("GB18030")); streamWriter.WriteLine("<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML//EN\">"); streamWriter.WriteLine("<HTML>"); streamWriter.WriteLine("<HEAD>"); streamWriter.WriteLine("<meta name=\"GENERATOR\" content=\"Microsoft® HTML Help Workshop 4.1\">"); streamWriter.WriteLine("<!-- Sitemap 1.0 -->"); streamWriter.WriteLine("</HEAD>"); streamWriter.WriteLine("<BODY>"); streamWriter.WriteLine("<OBJECT type=\"text/site properties\">"); streamWriter.WriteLine("<param name=\"Window Styles\" value=\"0x800025\">"); streamWriter.WriteLine("</OBJECT>"); string sql = "SELECT mId,mName FROM Models"; DataTable dt = DBHelper.getDatatable(sql); for (int i = 0; i < dt.Rows.Count; i++) { #regionif (i == 0) { streamWriter.WriteLine(" <UL>"); streamWriter.WriteLine(" <LI> <OBJECT type=\"text/sitemap\">"); streamWriter.WriteLine(" <param name=\"Name\" value=\"数据库服务器\">"); streamWriter.WriteLine(" <param name=\"Local\" value=\"HTML\\全部对象.htm\">"); streamWriter.WriteLine(" <param name=\"ImageNumber\" value=\"13\">"); streamWriter.WriteLine(" </OBJECT>"); streamWriter.WriteLine(" <UL>"); Modes.Append("<!doctype html public \"-//W3C//DTD HTML 4.0 Transitional//EN\"> \r"); Modes.Append("<html> \r"); Modes.Append(" <head> \r"); Modes.Append(" <title>所有模块</title> \r"); Modes.Append(" <meta name=\"Generator\" content=\"EditPlus\"> \r"); Modes.Append(" <meta name=\"Author\" content=\"\"> \r"); Modes.Append(" <meta name=\"Keywords\" content=\"\"> \r"); Modes.Append(" <meta name=\"Description\" content=\"\"> \r"); Modes.Append(" </head> \r"); Modes.Append(" <body> \r"); Modes.Append(" <div align=\"Center\" style=\"font-size:20px;font-width:bold;;color:green\">全部模块</div>\r"); Modes.Append(" <hr color = #FF0000>"); Modes.Append(" <div align=\"Center\"><A href=\""+dt.Rows[i]["mName"].ToString()+".htm\">"+dt.Rows[i]["mName"].ToString()+"</A></div>\r"); } if (i > 0) { Modes.Append(" <br/>"); Modes.Append(" <div align=\"Center\"><A href=\"" + dt.Rows[i]["mName"].ToString() + ".htm\">"+dt.Rows[i]["mName"].ToString()+"</A></div>\r"); } streamWriter.WriteLine(" <LI> <OBJECT type=\"text/sitemap\">"); streamWriter.WriteLine(" <param name=\"Name\" value=\"" + dt.Rows[i]["mName"].ToString() + "\">"); streamWriter.WriteLine(" <param name=\"Local\" value=\"HTML\\" + dt.Rows[i]["mName"].ToString() + ".htm\">"); streamWriter.WriteLine(" <param name=\"ImageNumber\" value=\"21\">"); //streamWriter.WriteLine(" <param name=\"ImageNumber\" value=\"1\">"); streamWriter.WriteLine(" </OBJECT>"); streamWriter.WriteLine("</UL>"); Modes.Append(" </BODY>\r</HTML>"); } streamWriter.WriteLine("</UL>\r</UL>\r</BODY>\r</HTML>"); streamWriter.WriteLine(); streamWriter.Close(); str1.WriteLine(Modes); str1.Close(); } }这语法很像HTML,但同时也不是,<UL></UL>代表一级节点,其中中间的 " <LI> <OBJECT type=\"text/sitemap\"><param name=\"Name\" value=\"数据库服务器\"><param name=\"Local\" value=\"HTML\\全部对象.htm\"><param name=\"ImageNumber\" value=\"13\"></OBJECT>"这段代码负责节点内容、连接、图片显示功能,如果<UL>内容嵌套的话,则表示下一级节点。还有我定义的modes,它主要负责生成一个Htm文件(记住用文件流生成,文件后缀名不要用html,而要用htm,不然会有错误,具体我也不知道啥原因),这样hhc文件生成在根目录下接下来,则要生成hhk文件了它主要负责你索引部分要显示的内容,这里生成也很简单 1privatevoid OpenHhk() 2 { 3 FileStream fs = new FileStream(startPath + @"\test.hhk", FileMode.Create); //创建hhp文件 4//streamWriter = new System.IO.StreamWriter(fs, System.Text.Encoding.GetEncoding("GB18030")); 5 streamWriter = new System.IO.StreamWriter(fs, System.Text.Encoding.GetEncoding("UTF-8")); 6 streamWriter.WriteLine("<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML//EN\">"); 7 streamWriter.WriteLine("<HTML>"); 8 streamWriter.WriteLine("<HEAD>"); 9 streamWriter.WriteLine("<meta name=\"GENERATOR\" content=\"Microsoft® HTML Help Workshop 4.1\">"); 10 streamWriter.WriteLine("<!-- Sitemap 1.0 -->"); 11 streamWriter.WriteLine("</HEAD>"); 12 streamWriter.WriteLine("<BODY>"); 13 streamWriter.WriteLine("<UL>"); 14string sql = "SELECT dId,dName,status,dCreTime,dFieidNum,dChName,dFunctionDesc FROM Documents order by dName"; 15//string sqls = "";16 DataTable dt1 = DBHelper.getDatatable(sql); 17foreach (DataRow dr in dt1.Rows) 18 { 19 streamWriter.WriteLine(" <LI> <OBJECT type=\"text/sitemap\">"); 20 streamWriter.WriteLine(" <param name=\"Name\" value=\"" + dr["dName"].ToString() + "\">"); 21 streamWriter.WriteLine("<param name=\"Local\" value=\"" + dr["dName"].ToString() + ".htm\">"); 22 streamWriter.WriteLine("</OBJECT>"); 23 } 24 streamWriter.WriteLine("</UL>"); 25 streamWriter.WriteLine("</BODY>"); 26 streamWriter.WriteLine("</HTML>"); 27 streamWriter.WriteLine(); 28 streamWriter.Close(); 29 }执行以后就可以在根目录下生成hhk文件了到此为止,生成chm文件的必须的三大文件已经搞定了,下面就是compile方法了 1string hhcFile = @"C:\Program Files\HTML Help Workshop\hhc.exe";//hhc.exe文件位置,windows自带的,一般是这个路径 2publicstring _defaultTopic = "";//默认的页面 3privatebool Compile() 4 { 5string _chmFile = startPath + @"\test.chm";//chm文件存储路径 6 Process helpCompileProcess = new Process(); //创建新的进程,用Process启动HHC.EXE来Compile一个CHM文件 7try 8 { 9//判断文件是否存在并不被占用10try11 { 12string path = _chmFile; //chm生成路径13if (File.Exists(path)) 14 { 15 File.Delete(path); 16 } 17 } 18catch(Exception e) 19 { 20thrownew Exception("文件被打开!�恢�勒Π沙绦蛏洗�侠矗�M�兄�赖母嫠咭幌拢��雌鹄锤芯跤械愠粤Γ�缓梦鹋