q: http://community.csdn.net/expert/topic/3179/3179109.xml?temp=.7848627
codesense 是一个源码着色的编辑控件. 【程序编程相关: sco openserver终端死锁的】
作者想要一个ocx的解决方案,我没有给出来.bcb在这个方面一直是诟病多多,呵呵.不过他的那个控件是open source的.原作者使用vc+mfc来开发的,不过接口就是api+消息了.这样的使用vcl来封装这个控件变得不是十分困难了. 【推荐阅读:My Adapter in C#】
http://www.ticz.com/homes/users/nlewis/html/software_development/codesense/download/codesense/cmcs222.zip 【扩展信息:Jsp&Servlet性能体验】
这是原文件的下载地址.
使用之前你需要用implib -a cmcs21.lib cmcs21.dll 来导出import library.
以下我做的封装:
#include <vcl.h> #define _t //added by cker. a dirty hack. #include "codesense.h" #include <assert.h> #define assert assert class tcodesensectrl : public twincontrol { protected: virtual void __fastcall createparams(controls::tcreateparams ¶ms) { cmregistercontrol(); twincontrol::createparams(params); createsubclass(params, codesensewndclass); } public: __fastcall virtual tcodesensectrl(tcomponent* aowner) : twincontrol(aowner) { } __fastcall virtual ~tcodesensectrl() { cmunregistercontrol(); } public: cme_code setlanguage( lpctstr pszname ) { return cm_setlanguage( handle, pszname ); } cme_code getlanguage( lptstr pszname ) { return cm_getlanguage( handle, pszname ); } cme_code enablecolorsyntax( bool benable = true ) { return cm_enablecolorsyntax( handle, benable ); } bool iscolorsyntaxenabled() { return cm_iscolorsyntaxenabled( handle ); } cme_code openfile( lpctstr pszfilename ) { return cm_openfile( handle, pszfilename ); } cme_code insertfile( lpctstr pszfilename, const cm_position *ppos = null ) { return cm_insertfile( handle, pszfilename, ppos ); } cme_code inserttext( lpctstr psztext, const cm_position *ppos = null ) { return cm_inserttext( handle, psztext, ppos ); } cme_code settext( lpctstr psztext ) { return cm_settext( handle, psztext ); } cme_code setcolors( const cm_colors *pcolors ) { return cm_setcolors( handle, pcolors ); } cme_code getcolors( cm_colors *pcolors ) { return cm_getcolors( handle, pcolors ); } cme_code enablewhitespacedisplay( bool benable = true ) { return cm_enablewhitespacedisplay( handle, benable ); } bool iswhitespacedisplayenabled() { return cm_iswhitespacedisplayenabled( handle ); } cme_code enabletabexpand( bool benable = true ) { return cm_enabletabexpand( handle, benable );... 下一页