精华内容
下载资源
问答
  • 提到Word相信大家再熟悉不过了,这个经历了20多年发展的文字编辑软件,受到用户的高度肯定,目前发展到Word2010版本,而走过了这么多年的岁月,Word有了怎样的变化与革新,今天就让小编与大家一起来进行一个历史20...

    提到Word相信大家再熟悉不过了,这个经历了20多年发展的文字编辑软件,受到用户的高度肯定,目前发展到Word2010版本,而走过了这么多年的岁月,Word有了怎样的变化与革新,今天就让小编与大家一起来进行一个历史20多年的回顾吧。

    希莫尼今年58岁,是微软公司创始人之一,因参与开发了核心软件Word和Excel而声名鹊起,被誉为“Word之父”。Word是Microsoft公司的一个文字处理器应用程序。它最初是由Richard Brodie为了运行DOS的IBM计算机而在1983年编写的。随后的版本可运行于Apple Macintosh (1984年), SCO UNIX,和Microsoft Windows (1989年),并成为了Microsoft Office的一部分,目前word的最新版本是word 2010Beta,于2010年6月18日上市。

    Word发展历史全析:

    文字编辑软件的颠峰作品——Word发展历史全析

    MS-DOS计算机开发的Word的第一代于1983年底发行,但是反响并不好,销售落后于WordPerfect等对手产品。 尽管如此,在Macintosh系统中,Word在1985年发布以后赢得了广泛的接受,尤其是对于在两年以后第二次大型发布的Word 3.01 for Macintosh (Word 3.00 由于有严重bug很快下线)。和其他Mac软件一样,Word for Mac是一个真正的(所见即所得) 编辑器。

    由于MS-DOS是一个字符界面系统,Word for DOS是为IBM PC 研发的第一个文本编辑器,在编辑的时候屏幕上直接显示的是“黑体”“斜体”等字体 标识符,而不是“所见即所得”。其他的DOS 文本编辑器,如WordStar和WordPerfect等,在屏幕显示时使用的是简单文本显示加上标识代码,或者加以颜色区别。尽管如此,和大多数DOS软件一样,程序为了执行特定的功能,都有自己特殊的,而且往往是复杂的命令组需要使用者去记忆。

     

    Word的1990年到1995年

    Microsoft Word 6.0 (Windows 98)

    第一个Windows版本的Word发售于1989年,价格是500美元。在 Windows 3.0 发行之后的一年, 销售开始好转, (Word 1.0 与 Windows 3.0 的协作比先前版本更好)。制作一个Windows版WordPerfect的失败已证实为致命的错误。它是Word 2.0版本,但是却作为市场主流坚实地发展起来。

    Word在苹果机市场上没有强大的竞争对手,尽管有程序像Nisus Writer提供“不连续的选择”等的特色功能,这些功能直到Office XP中的Word 2002才添加。另外,一些用户抱怨Word没有在1987年的3.01版与1991年的5.0版之间实行大的检查。相对于它的易用性和特色功能来说,由于典雅,苹果机的Word 5.1是一个主流的文字处理器。但是1994年发布的苹果机的6.0版却受到了广泛的嘲笑。这是Word第一个基于Windows和Macs之间通用代码的版本;许多人抱怨它慢、简陋及占过多内存。Windows版本也计入6.0在内以协调跨越不同平台的产品命名(尽管事实上最早的Windows版本为Word 2.0)。

    Word的较晚版本拥有比文字处理更多的功能。绘图工具可进行简单的桌面出版运作,如在文件中加设图像。近年来已增设Collaboration、文件校对、多语言支援与及其他功能。

     

    Word 2007

    Microsoft Word 2007运行在 Windows XP上
    Word 2007, Microsoft Office 2007的一部分, 是继Word 2003后的正在开发的版本。这个发行版包括了对新的基于XML文件格式的支持。简体中文版已经于2006年底发布。

    用途

    1.Word XP 基本文书处理技巧及认识萤幕工具

    2.快速键入中文标点符号

    3.中文字符放大缩小、直式通告制作,中式公函

    4.各款中文繁/简字体及香港常用字库运用;

    5.行距、段落对齐、建立清单列、定位点设定

    6.使用页头及页尾加入文件标题及页码

    7.表格及多栏制作,以方便制作报价单,会议议程及工作时间表

    8.加插图片、图表、文字艺术师等中文桌面印刷以制作图文并茂的文件或公司通讯

    9.不同资料大量合拼打印信件

     

    格式

    Microsoft Word X (Mac OS X)

    Microsoft Word在当前使用中是占有巨大优势的文字处理器,这使得Word专用的档案格式Word 文件(.doc)成为事实上最通用的标准。Word文件格式的详细资料并不对外公开。Word文件格式不只一种,因为随Word软件本身的更新,文件格式也会或多或少的改版,新版的格式不一定能被旧版的程序读取(大致上是因为旧版并未内建支援新版格式的能力)。微软已经详细公布Word 97的DOC格式,但是较新的版本资料目前仍未公开,只有公司内部、政府与研究机构能够获知。业界传闻说某些Word文件格式的特性甚至连微软自己都不清楚。

    其他与Word竞争的办公室作业软件,都必须支援事实上最通用的Word专用的档案格式。因为Word文件格式的详细资料并不对外公开,通常这种兼容性是藉由逆向工程来达成。许多文字处理器都有汇出、汇入Word档案专用的转换工具,譬如AbiWord或OpenOffice.org。(参照文本编辑器当中关于其他竞争软件的说明。)Apache Jakarta POI是一个开放原始码的Java数据库,其主要目标是存取Word的二进制文件格式。不久前,微软自己也提供了检视器,能够不用Word程序就检视Word文件。例:Word Viewer 2003。

    Word 97到Word 2003之前的Word文件格式都是二进制文件格式。不久以前,微软声明他们接下来将以XML为基础的档案格式作为他们办公室套装软件的格式。Word 2003提供WordprocessingML的选项。这是一种公开的XML档案格式,由丹麦政府等机构背书支持。Word 2003的专业版能够直接处理非微软的档案规格。

    跟其它Microsoft Office程序一样,Word可使用固定宏语言(宏语言)来高度定制。(最初是WordBasic, 但自从Word 97以来就变成Visual Basic)然而,这种性能也可以在文档中嵌入就像梅利莎蠕虫的电脑病毒,这就是电脑用户需要安装防火墙和反病毒软件的另一个原因。

     

    Word版本:

    1.MS-DOS 的版本包括:

    1983年 11月 Word 1

    1985年 Word 2

    1986年 Word 3

    1987年 Word 4 aka Microsoft Word 4.0 for the PC

    1989年 Word 5

    1991年 Word 5.5

     

    2.Apple Macintosh 的版本包括:

    1985年 1月 Word 1 for the Macintosh

    1987年 Word 3

    1989年 Word 4

    1991年 Word 5

    1993年 Word 6

    1998年 Word 98

    2000年 Word 2001,最后一个与Mac OS 9兼容的版本

    2001年 Word v.X,第一个仅兼容Mac OS X的版本

    2004年 Word 2004

    2007年(预定)Word 2008

     

    3.Microsoft Windows 的版本包括:

    1989年 11月 Word for Windows

    1991年 Word 2 for Windows

    1993年 Word 6 for Windows (由于要与当时的竞争对手DOS、Macintosh和WordPerfect的版本编号看齐,视窗版本的Word更改为Word 6)

    1995年 Word 95,亦称Word 7

    1997年 Word 97,亦称Word 8

    1999年 Word 2000,亦称Word 9

    2001年 Word XP,亦称Word 2002或Word 10

    2003年 Word 2003,亦称Word 11,但官方称之为Microsoft Office Word 2003

    2006年 Word 2007,亦称Word 12,但官方称之为Microsoft Office Word 2007

     

    4.SCO UNIX 的版本包括:

    Microsoft Word for UNIX Systems Release 5.1

     

    5.OS/2 的版本包括:

    1992年 Microsoft Word for OS/2 版本1.1B

     


    展开全文
  • 在iOS系统中,所谓“编辑菜单(Editing Menu)”和“上下文菜单(Contextual Menu)”是有区别的,但在桌面操作系统中,我们常说的“右键菜单”就已经囊括了“编辑菜单”和“上下文菜单”。iOS将两者细分开来,大概...

    在iOS系统中,所谓“编辑菜单(Editing Menu)”和“上下文菜单(Contextual Menu)”是有区别的,但在桌面操作系统中,我们常说的“右键菜单”就已经囊括了“编辑菜单”和“上下文菜单”。iOS将两者细分开来,大概是因为移动客户端显示屏大小限制,将所有菜单揉和在一起的话,必定导致超出显示范围,带来不好的操作体验。


    Editing Menu



    Contextual Menu

    本文主要以UIWebView为例,以此作为文本载体讲解如何自定义显示自己所需的编辑菜单项,当然,你也可以换作UITextView或任何一种文本容器,思路都是一样的。

    先来看看一些App对编辑菜单的实现效果吧。最好的实现当然还是苹果自家的应用,下图是iBooks的实现,无论是菜单的自定义项,还是菜单文字的国际化处理,都很完美。


    iBooks' Editing Menu

    与此相比,Amazon的Kindle应用功能稍显单一,但从自定义菜单的处理上来看,还不失大公司水准,除了没有兼顾到中文国际化语言,仍算是比较优秀的作品。也许会有人反驳说Kindle不兼容中文是因为在App Store中国区根本就无法下载此应用,但是不是要照顾一下生活在英语地区的不以英语为母语的那些人呢?Google在这一点上就做得很好,虽然中国区没有Google+这款应用,但只要将iPhone系统语言设置为中文,其菜单文本就会转换为相应语言,几乎所有iOS系统支持的语言,Google+都做了处理。产品做到这种程度,由不得你不佩服。


    Kindle's Editing Menu


    Google+ Editing Menu

    然后来看一款名为Kobo的电子书应用,其亮点是社交化阅读和分享,但一些细节上的处理真的无法让人满意。当用户长按并选中某段文字时,会同时叠加出现系统内置和自定义显示的菜单项,这是怎样一种蛋疼的行为啊?更令人发指的是,它在中国区的评分居然达到四颗星,中国区用户是不是太好打发了?


    Kobo's Editing Menu

    好吧,既然国外大公司都这种水平,那就更没有理由对国内产品横加指责了。一向以优雅、完美著称的iWeekly居然也是如此,还是中英文混搭的哦:)


    iWeekly's Editing Menu

    可以进入正题了。首先要说明,如果没有特殊需求,只是想要显示选中文字的编辑菜单,那么触摸屏的长按事件(long press)不需要专门捕获处理。但是需要继承实现一个自定制的View类,视具体情况而定,本文继承实现一个UIWebView,并重写UIRespondercanPerformAction:withSender:方法。

    欲控制内置菜单项的显示或隐藏,须先了解具体有哪些内置菜单项。iOS系统内置编辑菜单项包括copy, cut, paste等13种,它们对应的selector名称如下:

    • cut: 剪切选中文字到剪贴版。
    • copy: 拷贝/复制选中文字到剪贴版。
    • select: 当处于文本编辑模式时,选中光标当前位置的一个单词。
    • selectAll: 选中当前页所有文字。
    • paste: 粘贴剪贴版中的文本到当前光标位置。
    • delete: 处于文本编辑模式时,删除选中的文本。(since iOS 3.2)
    • _promptForReplace: 即为上面Google+图片中显示的“替换为...”菜单,点击之后会给出与当前选中单词相近的其他单词。
    • _showTextStyleOptions: 处于文本编辑模式时,用于编辑字体风格属性,如粗体/斜体等。
    • _define: 调用iOS系统内置的英语词典,解释选中的单词。如果内置词典中找不到所选单词,则该项不予显示。
    • _accessibilitySpeak: 朗读当前选中的文本。
    • _accessibilityPauseSpeak: 暂停朗读文本。
    • makeTextWritingDirectionRightToLeft: 调整选中文本的书写格式为从右至左。阿拉伯语会用到。(since iOS 5.0)
    • makeTextWritingDirectionLeftToRight: 调整选中文本的书写格式为从左至右。(since iOS 5.0)

    以上带有下划线前缀的都属于iOS的私有API,开发者无法调用。剩余的这些公共selector都被定义在一个名为UIResponderStandardEditActions的informal protocol中,所谓informal protocol,就是在NSObject上定义一个category,详见苹果官方文档Objective-C基础部分的讲解。

    UIResponderStandardEditActions定义在UIResponder接口中,每一个继承自UIResponder的具体类中都有各自不同的实现,比如UIWebView中就只实现了其中的copy:paste:,当然,还有一个私有的_define:。当你继承了一个UIWebView之后,就可以重写canPerformAction:withSender:这个消息,来控制是否显示某些系统内置菜单项。

    
    // file: CustomWebView.h
    
    #import <Foundation/Foundation.h>
    
    @interface CustomWebView : UIWebView
    @end
    

    
    // file: CustomWebView.m
    
    #import "CustomWebView.h"
    
    @implementation CustomWebView {
    
    }
    
    // 隐藏“定义”菜单项。
    - (BOOL)canPerformAction:(SEL)action withSender:(id)sender {
      if (action == @selector(_define:)) return NO;
      return [super canPerformAction:action withSender:sender];
    }
    
    @end
    

    你还可以显示一些UIWebView本身不支持的内置菜单,比如selectAll:,须注意,如果显示了父类中不支持的菜单,则必须在自定义的子类中实现该方法,否则,当用户点击菜单时,程序会不作任何响应,甚至崩溃。

    
    - (BOOL)canPerformAction:(SEL)action withSender:(id)sender {
      if (action == @selector(selectAll:)) return YES;
      return [super canPerformAction:action withSender:sender];
    }
    
    - (void)selectAll:(id)sender {
      NSLog(@"selectAll: in custom web view.");
    }
    

    接下来就可以讨论如何添加自定义的菜单项了,其实很简单,在CustomeWebView显示之前,向UIMenuController中添加一些自定义项即可,这是一个单例对象,一个应用中仅维护一个这样的实例。下面的代码向菜单列表中添加了一个名为Flag的项。

    
    UIMenuItem *flag = [[UIMenuItem alloc] initWithTitle:@"Flag" action:@selector(flag:)];
    UIMenuController *menu = [UIMenuController sharedMenuController];
    [menu setMenuItems:[NSArray arrayWithObjects:flag, nil]];
    [flag release];
    

    当然,记得对自定义菜单项的Title做国际化处理哦,这里就不赘述了。至于如何使系统内置的菜单项适应国际化语言,非常简单,只需在工程目录下添加对应语言代码的.lproj文件夹即可。如果你添加了一个zh.lproj的文件夹到工程目录下,并在该文件夹下新建一个名为InfoPlist.strings的空白文件,那么,当你的程序运行在系统语言被设定为中文的移动终端时,这些内置菜单项自然会显示为中文。下面是一个Demo的效果图。


    Custom Editing Menu Demo

    EOF


    转摘自 http://braincoder.me/2012/01/custom-edit-menu-on-selection-in-uiwebview/

    展开全文
  • ueditor文本编辑器原本支持ctrl+v时复制文字和样式,由于ie协议的原因必须必须点击,图片无法上传,本例是通过编写active控件解除限制向ftp上传,有更的希望能告知,谢谢   负责复制粘贴的ueditor文本编辑器js是...

            ueditor文本编辑器原本支持ctrl+v时复制文字和样式,由于ie协议的原因<input type='file' />必须必须点击,图片无法上传,本例是通过编写active控件解除限制向ftp上传,有更好的希望能告知,谢谢。

           看很多小伙伴说不好使,其实不是不好使,是我编译的控件只支持xp,因为我是用xp编译调试的,这样把早期的c++源码也放出来,自己编译吧。

     

    支持复制粘贴word图片的文本编辑器下载地址:http://download.csdn.net/detail/myfmyfmyfmyf/7493931

    支持复制粘贴word图片的c++源码下载地址:http://download.csdn.net/detail/myfmyfmyfmyf/9477844

     

    负责复制粘贴的ueditor文本编辑器js是ueditor1_2_6_1-src\_src\plugins\wordimage.js,改写其中UE.plugins["wordimage"] = function ()方法

    //作者:牟云飞
    //时间:2014年01月14日
    //qq:1147417467
    //active自定义粘贴图片
    function uploadPasrseImage(src){
    	//alert("上传黏贴过来的图片");
    	//连接ftp
    	var address = "***.**.**.**";
    	var port    = "21";
    	var user    = "**";
    	var pass    = "*******";
    	var mode    = "1";
    	var dir     = "KMOCX";//这个名字的文件夹需要在ftp根目录中提前建立
    	var Ret = ToFtp.ConnectFtp(address,port,user,pass,mode);
    	alert(src);
    	image = src.substring(8,src.length);
    	//上传的图片名
    	 //取得当前时间     
    	var now= new Date();     
    	var year=now.getFullYear();     
    	var month=now.getMonth()+1;     
    	var day=now.getDate();     
    	var hour=now.getHours();     
    	var minute=now.getMinutes();     
    	var second=now.getSeconds();      
    	var imageName=year+""+month+""+day+""+hour+""+minute+""+second+src.substring( src.lastIndexOf("."),src.length);
    	dir =dir+"/"+year+""+month+""+day+"";
    	//传图片第一个参数上传的文件路径,第二个上传服务器后的名字,第三个ftp根目录下的一个文件夹
    	var result=ToFtp.uploadToFtp(image, imageName,dir);
    	alert(result);
    	//上传服务器后的路径
    	image="ftp://"+user+":"+pass+"@"+address+"/"+dir+"/"+imageName;
    }
    //存放上传服务器后的路径
    var image;
    UE.plugins["wordimage"] = function () {
        var me = this,
            images;
        me.addInputRule(function (root) {
    		alert("-----"+image);
            utils.each(root.getNodesByTagName('img'), function (img) {
                var attrs = img.attrs,
                    flag = parseInt(attrs.width) < 128 || parseInt(attrs.height) < 43,
                    opt = me.options,
                    src = opt.UEDITOR_HOME_URL + 'themes/default/images/spacer.gif';
    			//执行插件上传图片
    			if((attrs._src).indexOf("ftp")==-1){
    	            //如果是粘贴操作,执行插件上传
    	            uploadPasrseImage(attrs._src);
    	            alert("####"+image);
    	            //image=attrs._src;
               	}else{
               		image=attrs._src;
               	}
                if (attrs['_src'] && attrs['_src'].indexOf("file:///")!==-1) {
                    img.setAttr({
                        width:attrs.width,
                        height:attrs.height,
                        alt:attrs.alt,
                        word_img:"",
                        src:image,
                        _src:"",
                        style:'background:url(' + ( flag ? opt.themePath + opt.theme + '/images/word.gif' : opt.langPath + opt.lang + '/images/localimage.png') + ') no-repeat center center;border:1px solid #ddd'
                    })
                }
    				alert("执行完毕");
            })
        });
        me.commands['wordimage'] = {
            execCommand:function () {
                images = domUtils.getElementsByTagName(me.document.body, "img");
                var urlList = [];
                for (var i = 0, ci; ci = images[i++];) {
                    var url = ci.getAttribute("word_img");
                    url && urlList.push(url);
                }
                if (images.length) {
                    this["word_img"] = urlList;
                }
            },
            queryCommandState:function () {
                images = domUtils.getElementsByTagName(me.document.body, "img");
                for (var i = 0, ci; ci = images[i++];) {
                    if (ci.getAttribute("word_img")) {
                        return 1;
                    }
                }
                return -1;
            }
        };
    
    };


    c++编写active时用的是如下方式上传ftp,本人现在做java, c++不是很好只能用这种方式了啊,c++的大神路过就好

    m_pSesInternet = new CInternetSession;

    m_pFtpCnt = m_pSesInternet->GetFtpConnection(Address, User, Pass, _wtoi(Port),bMode);

    m_pFtpCnt->PutFile(LocalFile, FtpFile);

     

    // UpToFtpCtrl.cpp : CUpToFtpCtrl ActiveX 控件类的实现。
    
    #include "stdafx.h"
    #include "UpToFtp.h"
    #include "UpToFtpCtrl.h"
    #include "UpToFtpPropPage.h"
    
    
    #ifdef _DEBUG
    #define new DEBUG_NEW
    #endif
    
    
    IMPLEMENT_DYNCREATE(CUpToFtpCtrl, COleControl)
    
    
    
    // 消息映射
    
    BEGIN_MESSAGE_MAP(CUpToFtpCtrl, COleControl)
    	ON_OLEVERB(AFX_IDS_VERB_PROPERTIES, OnProperties)
    	ON_WM_CREATE()
    END_MESSAGE_MAP()
    
    
    
    // 调度映射
    
    BEGIN_DISPATCH_MAP(CUpToFtpCtrl, COleControl)
    	DISP_FUNCTION_ID(CUpToFtpCtrl, "AboutBox", DISPID_ABOUTBOX, AboutBox, VT_EMPTY, VTS_NONE)
    	DISP_FUNCTION_ID(CUpToFtpCtrl, "ConnectFtp", dispidConnectFtp, ConnectFtp, VT_I4, VTS_BSTR VTS_BSTR VTS_BSTR VTS_BSTR VTS_BSTR)
    	DISP_FUNCTION_ID(CUpToFtpCtrl, "WriteFtpFile", dispidWriteFtpFile, WriteFtpFile, VT_I4, VTS_BSTR VTS_BSTR)
    	DISP_FUNCTION_ID(CUpToFtpCtrl, "writeToFtp", dispidwriteToFtp, writeToFtp, VT_BSTR, VTS_BSTR)
    	DISP_FUNCTION_ID(CUpToFtpCtrl, "uploadToFtp", dispiduploadToFtp, uploadToFtp, VT_BSTR, VTS_BSTR VTS_BSTR VTS_BSTR)
    END_DISPATCH_MAP()
    
    
    
    // 事件映射
    
    BEGIN_EVENT_MAP(CUpToFtpCtrl, COleControl)
    END_EVENT_MAP()
    
    
    
    // 属性页
    
    // TODO: 按需要添加更多属性页。请记住增加计数!
    BEGIN_PROPPAGEIDS(CUpToFtpCtrl, 1)
    	PROPPAGEID(CUpToFtpPropPage::guid)
    END_PROPPAGEIDS(CUpToFtpCtrl)
    
    
    
    // 初始化类工厂和 guid
    
    IMPLEMENT_OLECREATE_EX(CUpToFtpCtrl, "UPTOFTP.UpToFtpCtrl.1",
    	0xec5307a6, 0x6b48, 0x4614, 0xb3, 0x6, 0xd0, 0x1, 0x34, 0x53, 0x74, 0x25)
    
    
    
    // 键入库 ID 和版本
    
    IMPLEMENT_OLETYPELIB(CUpToFtpCtrl, _tlid, _wVerMajor, _wVerMinor)
    
    
    
    // 接口 ID
    
    const IID BASED_CODE IID_DUpToFtp =
    		{ 0xCFC272C1, 0x21E3, 0x477D, { 0x8E, 0xDA, 0x3, 0x3F, 0x70, 0xC1, 0xD1, 0x49 } };
    const IID BASED_CODE IID_DUpToFtpEvents =
    		{ 0xBFCA23EB, 0x98AC, 0x45C2, { 0x96, 0x3F, 0xAD, 0x19, 0xE9, 0x43, 0x48, 0xA7 } };
    
    
    
    // 控件类型信息
    
    static const DWORD BASED_CODE _dwUpToFtpOleMisc =
    	OLEMISC_ACTIVATEWHENVISIBLE |
    	OLEMISC_SETCLIENTSITEFIRST |
    	OLEMISC_INSIDEOUT |
    	OLEMISC_CANTLINKINSIDE |
    	OLEMISC_RECOMPOSEONRESIZE;
    
    IMPLEMENT_OLECTLTYPE(CUpToFtpCtrl, IDS_UPTOFTP, _dwUpToFtpOleMisc)
    
    
    
    // CUpToFtpCtrl::CUpToFtpCtrlFactory::UpdateRegistry -
    // 添加或移除 CUpToFtpCtrl 的系统注册表项
    
    BOOL CUpToFtpCtrl::CUpToFtpCtrlFactory::UpdateRegistry(BOOL bRegister)
    {
    	// TODO: 验证您的控件是否符合单元模型线程处理规则。
    	// 有关更多信息,请参考 MFC 技术说明 64。
    	// 如果您的控件不符合单元模型规则,则
    	// 必须修改如下代码,将第六个参数从
    	// afxRegApartmentThreading 改为 0。
    
    	if (bRegister)
    		return AfxOleRegisterControlClass(
    			AfxGetInstanceHandle(),
    			m_clsid,
    			m_lpszProgID,
    			IDS_UPTOFTP,
    			IDB_UPTOFTP,
    			afxRegApartmentThreading,
    			_dwUpToFtpOleMisc,
    			_tlid,
    			_wVerMajor,
    			_wVerMinor);
    	else
    		return AfxOleUnregisterClass(m_clsid, m_lpszProgID);
    }
    
    
    
    // CUpToFtpCtrl::CUpToFtpCtrl - 构造函数
    
    CUpToFtpCtrl::CUpToFtpCtrl()
    {
    	InitializeIIDs(&IID_DUpToFtp, &IID_DUpToFtpEvents);
    	m_pSesInternet = NULL;
    }
    
    
    
    // CUpToFtpCtrl::~CUpToFtpCtrl - 析构函数
    
    CUpToFtpCtrl::~CUpToFtpCtrl()
    {
    	if(NULL != m_pSesInternet)
    		delete m_pSesInternet;
    }
    
    
    
    // CUpToFtpCtrl::OnDraw - 绘图函数
    
    void CUpToFtpCtrl::OnDraw(
    			CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid)
    {
    	if (!pdc)
    		return;
    
    	// TODO: 用您自己的绘图代码替换下面的代码。
    	pdc->FillRect(rcBounds, CBrush::FromHandle((HBRUSH)GetStockObject(WHITE_BRUSH)));
    	pdc->Ellipse(rcBounds);
    }
    
    
    
    // CUpToFtpCtrl::DoPropExchange - 持久性支持
    
    void CUpToFtpCtrl::DoPropExchange(CPropExchange* pPX)
    {
    	ExchangeVersion(pPX, MAKELONG(_wVerMinor, _wVerMajor));
    	COleControl::DoPropExchange(pPX);
    
    	// TODO: 为每个持久的自定义属性调用 PX_ 函数。
    }
    
    
    
    // CUpToFtpCtrl::OnResetState - 将控件重置为默认状态
    
    void CUpToFtpCtrl::OnResetState()
    {
    	COleControl::OnResetState();  // 重置 DoPropExchange 中找到的默认值
    
    	// TODO: 在此重置任意其他控件状态。
    }
    
    
    
    // CUpToFtpCtrl::AboutBox - 向用户显示“关于”框
    
    void CUpToFtpCtrl::AboutBox()
    {
    	CDialog dlgAbout(IDD_ABOUTBOX_UPTOFTP);
    	dlgAbout.DoModal();
    }
    
    
    
    // CUpToFtpCtrl 消息处理程序
    
    LONG CUpToFtpCtrl::ConnectFtp(LPCTSTR Address, LPCTSTR Port, LPCTSTR User, LPCTSTR Pass, LPCTSTR Mode)
    {
    	AFX_MANAGE_STATE(AfxGetStaticModuleState());
    
    	try
    	{
    		m_pSesInternet = new CInternetSession;
    
    		BOOL bMode;
    		if(0 == wcscmp(Mode, _T("1")))
    			bMode = TRUE;
    		else
    			bMode = FALSE;
    
    		m_pFtpCnt = m_pSesInternet->GetFtpConnection(Address, User, Pass, _wtoi(Port),bMode); 	
    
    	}
    	catch (CInternetException *pEx)
    	{
    		TCHAR szMsg[MAX_PATH];
    		pEx->GetErrorMessage(szMsg, MAX_PATH);
    		MessageBox(szMsg);
    		return -1;
    	}
    
    	return 0;
    }
    
    LONG CUpToFtpCtrl::WriteFtpFile(LPCTSTR LocalFile, LPCTSTR FtpFile)
    {
    	AFX_MANAGE_STATE(AfxGetStaticModuleState());
    
    	return m_pFtpCnt->PutFile(LocalFile, FtpFile);
    }
    
    int CUpToFtpCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {
    	if (COleControl::OnCreate(lpCreateStruct) == -1)
    		return -1;
    
    	CButton* pButton = new CButton();
    	pButton->Create(_T("我是一个按钮"), BS_BOTTOM, CRect(5, 5, 50, 20), this, 1001);
    	pButton->ShowWindow(SW_SHOW);
    	
    
    	return 0;
    }
    
    BSTR CUpToFtpCtrl::writeToFtp(LPCTSTR imageurl)
    {
    	AFX_MANAGE_STATE(AfxGetStaticModuleState());
    
    	CString strResult;
    
    	// TODO: 在此添加调度处理程序代码
    	
    	m_pFtpCnt->CreateDirectory(_T("testActive/TEST"));
    	//设置当前目录 
    	m_pFtpCnt->SetCurrentDirectory(_T("testActive/TEST"));
    	 //生成时间文件夹
    	time_t curTime= time(0);
    	char tmp[64]; 
    	strftime( tmp, sizeof(tmp), "%Y/%m/%d",localtime(&curTime) ); 
    	CString dirName= CString(tmp);
    	m_pFtpCnt->CreateDirectory(dirName);
    
    
    	m_pFtpCnt->GetCurrentDirectoryW(strResult);
    	m_pFtpCnt->PutFile(_T("C:\\aa.gif"),_T("aa.gif"));
    	
    	return strResult.AllocSysString();
    }
    
    BSTR CUpToFtpCtrl::uploadToFtp(LPCTSTR localFile, LPCTSTR FtpFile, LPCTSTR ftpDir)
    {
    	AFX_MANAGE_STATE(AfxGetStaticModuleState());
    
    	CString strResult;
    
    	// TODO: 在此添加调度处理程序代码
    	//目录写法 testActive/TEST
    	//设置目录 
    	BOOL flag=m_pFtpCnt->SetCurrentDirectory(ftpDir);
    	if(0==flag)
    	{
    		//如果目录不存在,则创建目录
    		m_pFtpCnt->CreateDirectory(ftpDir);
    		m_pFtpCnt->SetCurrentDirectory(ftpDir);
    	}
    	
    	m_pFtpCnt->SetCurrentDirectory(ftpDir);
    
    	//上传图片
    	BOOL isSuccess= m_pFtpCnt->PutFile(localFile, FtpFile);
    	if(1==isSuccess){
    		return _T("1");
    	}else{
    		return _T("2");
    	}
    }
    



    完成控件之后,用regsvr32.exe 路径\**.ocx  注册一下控件

    用ActiveX Control Pad编译控件

    <OBJECT ID="ToFtp" WIDTH=0 HEIGHT=0
     CLASSID="CLSID:EC5307A6-6B48-4614-B306-D00134537425">
        <PARAM NAME="_Version" VALUE="65536">
        <PARAM NAME="_ExtentX" VALUE="0">
        <PARAM NAME="_ExtentY" VALUE="0">
        <PARAM NAME="_StockProps" VALUE="0">
    </OBJECT>放在使用ueditor的页面

     

    展开全文
  • OpenWrite(博客群发平台)到底好不好用,有什么缺点? 本文是利用OpenWrite所发,用于测试效果 大家如果有发多个平台博客的习惯的的话,一两个平台还好,一旦多起来,一定是很麻烦,今天就给大家推荐一个博客群发...

    OpenWrite(博客群发平台)到底好不好用,有什么缺点?

    本文是利用OpenWrite所发,用于测试效果
    大家如果有发多个平台博客的习惯的的话,一两个平台还好,一旦多起来,一定是很麻烦,今天就给大家推荐一个博客群发平台(OpenWrite);

    OpenWrite都支持哪些平台;

    1. SegmentFault
    2. CSDN
      3.掘金
    3. 博客园
    4. 简书
    5. 知乎
    6. 开源中国
    7. Spring4All
    8. 今日头条
    9. 慕课手记

    使用方法:

    1. 点击指定渠道图标,在新窗口登录渠道的账号
    2. 手工在各个渠道发布一篇文章,确保账号正常
    3. 下载插件:OpenWrite助手
    4. 点击 “认证” 或 “全部认证” 按钮,验证账号权限
    5. 点击各渠道的 “配置” 按钮,设置文章发布时的默认信息
    6. 各渠道完成“配置”之后,点击 “启用” 空气管,开启需要扩散的渠道
      详情见官网:https://my.openwrite.cn/user/channel

    到底好不好用,有什么缺点(适用于哪些场景?)

    缺点:

    1. 我个人 觉得OpenWrite发布博客设置较为死板,因为他是让你在最先使用他的时候选则你文字要发布的专栏,如果后来想发布不是这个专栏的文章的话还得通通改掉。
    2. 无法选中个别平台的活动
    3. 编辑器没有csdn的好用
    4. 如果不充会员的话,在你的文章底部会出现这个平台的文字

    适用于哪些场景?

    现在就有些人,你在这个平台发了文章,他会把你的文章复制了,发到别的平台上去,然后因为你别的平台没账户也没发过文章,所以就很难举报他成功。这个时候这个平台就能帮你大忙了。比如说因为以上那些缺点,我就想在csdn上发点高质量博客,这个时候你可以在openwrite发布文章的时候不选择csdn,发到其他平台上去。

    展开全文
  • Android ocr识别文字介绍(文字识别)

    千次阅读 2016-04-29 10:25:49
    最近在身份证号码识别,在网上搜索的一番后发现目前开源的OCR中tesseract-ocr算是比较强大的了,它由HP于1985年到1995年间开发,后来由google直接负责,经过谷歌进一步开发后,目前的tesseract-ocr有了显著的改进...
  • 3、激活完毕之后我们就可以打开相应的PDF文档,在需要添加文字的地方进行打字了,这样我们就实现了在PDF文件上直接打字的目的。   图3:在PDF上打字 ...
  • 前几天手贱,把webstrom更新了,弄得输入法体验效果很是不好,纠结了几天,开始以为电脑太卡,后来则不然,因为不在编辑器的话,输入法完全OK。 后来才发现原因(废话不多说了,大家开搞)。 Webstrom2017.2...
  • 有哪些的 LaTeX 编辑器?

    万次阅读 2016-05-26 14:13:52
    知乎用户 ,喜欢排版 ...2016-03-06:更新 Atom 编辑器的配置用法,见编辑器介绍 Atom 项及 Atom 配置项。 维基百科上有一篇对比,超过20种编辑器。 http://en.wikipedia.org/wiki/Comparis
  • 文字菜单动画畅想

    千次阅读 多人点赞 2015-01-30 06:34:57
    本博之前曾经写过两篇博文《纯css3文字效果推荐》、《css3立体文字最佳实践》得到了大家的广泛关注,今天我们更进一步,研究一下文字菜单上可以哪些动画,15种效果会不会有您喜欢的,来来来,不妨进来坐坐。
  • 推荐用 Flash一般文字为主的页面

    千次阅读 2002-07-09 14:23:00
    推荐用 Flash一般文字为主的页面 一说起使用 Flash制作页面,总会马上联想到这里充斥了不少的动画、图像,难怪常称它是一种多媒体页面制作工具。然而,就目前来说,文字仍然还是交流工具的主流,所以我在这里尝试...
  • 工作中,有时候需要修改TextinputLayout 提示信息文字颜色,怎么办呢?谷歌把Design Support Library写的很。每一个控件的颜色都是直接通过主题颜色绘制的,在 style.xml 中指定。打开它添加colorAccent 到主题以...
  • JSP 实用程序之简易页面编辑

    万次阅读 2016-05-31 19:47:16
    需求:提供一页面,放置“帮助”、“版权”文字内容,特点:静态页面,无须读数据库,只是应付字眼上频繁的修改;没有复杂的交互,无须 JavaScript;没有图片,不需要文件上传。 给出的方案:提供一页面和简易的...
  • 赛高文字游戏解析引擎实现

    千次阅读 2017-03-19 16:07:47
    赛高文字游戏解析引擎实现
  • 使用Atom快速打造好用的Markdown编辑器Atom当前主流的跨平台的三大编辑器(Atom,sublime,vscode)之一今天尝试了使用Atom来打造Markdown编辑器,快速上手且易用,墙裂推荐!下面直接进入正题,一步步介绍如何使用Atom...
  • 富文本编辑器的使用

    千次阅读 2019-07-05 14:35:43
    别人也有的但是东西多不好改用。所以自己尽量在创建一个页面,自己需要哪些功能然后我们就将其内容写在自己创建的页面中引用就可以了。 原理就相当于我们的input框然后直是在这里换了其他的标签。同样是post...
  • ShaderWeaver使用教程-文字闪烁

    千次阅读 2017-12-13 16:16:33
    ShaderWeaver使用教程-文字闪烁声明:本系列为网络搬运总结,多为英文资料,翻译的不好的请见谅。想查看原版视频教程的可以去YouTube,插件作者为国人,但是目前并没有中文相关资料。或者查看国内的优酷专辑。附带...
  • Emacs,最强编辑器,没有之一

    万次阅读 多人点赞 2018-12-08 12:57:39
    小编知道,此标题一出,肯定会遭受广大群众“诟病”,说不好还会被其他编辑器的粉丝暗地里“干掉”。 比如,Vim,Sublime,Nano编辑器的粉丝可能就会来“踢馆”,VS或Eclipse的粉丝也兴许会“群起而攻”,但是小...
  • 网页文字竖排三法

    千次阅读 2005-11-23 11:08:00
    网页文字竖排三法作者:长弓射雕 ...我想亚洲文字显示,就是那种文字竖写的,每行从上往下写,从右往左写的,在其他的文字编辑系统里可以作到的,在网页里怎么啊?我用的是HTML语言,也用CSS和JavaScript,可是我用CSS的
  • 最佳文本编辑

    万次阅读 2007-03-02 11:46:00
    原文:donationcoder.com  译者:xbeta@善用佳软 说明:仅翻译,忠实原文。不代表同意文中观点(xbeta认为最好的编辑器为VIM)。 最佳文本编辑器 当前,好用的文本编辑器比比皆是——无论商业软件还是免费软件...
  • 一个针对各种PDF文件的PDF编辑器,在同行业中,迅捷PDF编辑器实在是要好上太多了,现在在网上,像...迅捷编辑器好用的地方有许多,可以在任何位置添加文字,删改内容,插入图片以及绘画直线,添加椭圆框等一些内容。
  • 但很多不好用,且难用,效果也不好,为此帮大家节省更多时间,同时让新手尽快上手,我们为大家汇总了十佳微信公众号编辑器,希望可以帮到大家。 十佳微信公众号编辑器大汇总-2019新排行版 推荐1:来逗编辑器 来逗...
  • 修改的Kissy富文本编辑

    千次阅读 2010-01-28 14:59:00
    最大字符数不能根据需要设置,只能在js里改,这样如果多处要用这个编辑器且要求的字数不一样,这就不好办了。2. 编辑器有一个小bug,只有在IE里才有。输入一段文字后再清空输入域,你会发现输入域并没
  • 强大的vim编辑器配置,linux下开发利器
  • ShaderWeaver使用教程-文字渐隐渐现

    千次阅读 2017-12-13 19:22:55
    ShaderWeaver使用教程-文字渐隐渐现声明:本系列为网络搬运总结,多为英文资料,翻译的不好的请见谅。想查看原版视频教程的可以去YouTube,插件作者为国人,但是目前并没有中文相关资料。或者查看国内的优酷专辑。...
  • 目前没有的封装,如果需要使用SortRichEditor,请复制 editor 包中全部文件到您的项目当中 以及以下三张图标资源文件 icon_add_text.png (xhdpi) icon_delete.png (xhdpi) icon_empty_photo.png (xhdpi) ...
  • 多种富文本编辑器的对比

    千次阅读 2017-09-08 17:39:56
    现在的多数富文本编辑器很坑,各种不好用,我几乎找了所有的富文本编辑器,总结了缺点,进行对比,在项目中要使用的话,了解一下,决定用哪个最合适
  • 通过HTML方式设置文字颜色和字体

    千次阅读 2015-12-30 11:52:42
    textview.setText(Html.fromHtml("后面颜色就变了"+"" + 文字颜色 + "" + "" + 字体加粗 + ""));...但是文字字体加粗和缩小效果不好,使用SpannableString会更一些;单从改变部分文字的颜色还是听方便的。
  • 首先,展示两个文字编辑的场景,这样的场景每天都在我们身边发生。 场景一、在图书馆、书店、机场、火车上、公交地铁上、旅行的路上、听音乐……发现一段不错的文字或歌词想要书摘笔记,或者编辑成短文发到微博...
  • 最新版本:x-studio10.0.5900.509(2020年1月9日更新) ... ... x-studio是一款强大的游戏开发IDE;...具有的完整2D粒子编辑功能,场景(UI)编辑功能,屏幕适配预览功能(让手动适配问题彻底解放)。...
  • CSS文字换行始末

    千次阅读 2012-05-03 13:23:40
    注: 本文有钻牛角尖嫌疑,建议心理承受能力差者移步。...昨天我在编辑某个网页的时候,某种原因长按了一个字母,结果发生下图这样的事情(内容已经被我重新修改过,但是原文还是跟它一样,有一长串英文,然

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 27,832
精华内容 11,132
关键字:

做文字编辑好不好