首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Scintilla控件在Win32环境上的使用(一)

2012-09-23 
Scintilla控件在Win32环境下的使用(一)原本想要学习一下语法高亮功能,做一个像Notepad一样的编辑器。然后就

Scintilla控件在Win32环境下的使用(一)

原本想要学习一下语法高亮功能,做一个像Notepad++一样的编辑器。

然后就兴冲冲的下载了Notepad++的开源代码准备开始看。

但是整个框架比较复杂,看了一会之后突然发现Notepad++使用的是Scintilla这个很强大的控件,而且也是开源的。所以最后决定在分析Notepad++源代码之前先使用一下Scintilla,然后研究一下Scintilla的源码。

下面是Scintilla 的官方网站:

http://www.scintilla.org/index.html

我们下载源代码。

然后准备编译。参考了下面这个博客:

http://blog.csdn.net/gnorth/article/details/7231513

我自己是win8 64位系统 vs2010

这里自己在编译makefile文件的时候出了一个错误:我使用了Visual Studio 命令提示(64位)下编译文件,结果编译出来之后的文件无法被vs识别。

一开始一直找不到错误,LoadLibrary 的返回值一直为0,后来用GetLastError()查看错误信息,才发现了原来是dll文件本身编译成了64位。

而我的程序是32位的,所以dll无法识别64位的dll。

后来用32位的 Visual Studio 命令提示重新编译出了32位的dll就对了。32位编译出来的dll是600多K, 而64位编译出来的是900多K。

具体编译的步骤:

打开Visual Studio 命令提示

进到下载好的scintilla文件目录下面的win32目录下面,

         int (*SendEditor)(void*,int,int,int);         //快速发送消息         SendEditor = (int (__cdecl *)(void *,int,int,int))SendMessage(             hwndScintilla,SCI_GETDIRECTFUNCTION,0,0);         ptr = (void *)SendMessage(hwndScintilla,SCI_GETDIRECTPOINTER,0,0);         canundo = SendEditor(ptr,SCI_CANUNDO,0,0);

以后自己就使用SendEditor,没有使用SendMessage了。

但是自己不理解的是:c应该没有重载 多态这些概念,我在使用SendEditor的时候里面必须写4个参数。感觉用起来也没方便多少。

自己C++没学多少。想请问下大家如何在C++下面实现该SendEditor的简洁方法?在此感谢大家。



热点排行