用于PHP的WxStyledTextCtrl代码折叠

用于PHP的WxStyledTextCtrl代码折叠,php,c++,wxwidgets,Php,C++,Wxwidgets,我需要使用WxStyledTextCtrl显示PHP代码。除代码折叠外,所有操作都正常 我遵循了wxWidgets页面中的示例,它们使用wxSTC_LEX_CPP lexer,并且可以正常工作。我修改了他们的代码,但当我更改此代码时: text->SetLexer(wxSTC_LEX_CPP); 为此: text->SetLexer(wxSTC_LEX_HTML); 代码折叠停止工作了,我已经尝试了所有的方法,但是我不能让它工作。 我使用的是用VS2010编译的wxWidgets

我需要使用WxStyledTextCtrl显示PHP代码。除代码折叠外,所有操作都正常

我遵循了wxWidgets页面中的示例,它们使用wxSTC_LEX_CPP lexer,并且可以正常工作。我修改了他们的代码,但当我更改此代码时:

text->SetLexer(wxSTC_LEX_CPP);
为此:

text->SetLexer(wxSTC_LEX_HTML);
代码折叠停止工作了,我已经尝试了所有的方法,但是我不能让它工作。 我使用的是用VS2010编译的wxWidgets的最新版本。
任何帮助都将不胜感激。

用于PHP的闪烁代码折叠与其他代码折叠略有不同,因为它是由HTML lexer处理的。下面的代码将在PHP中启用代码折叠。折叠将看起来像VisualStudio(一个盒子,里面有一个加号)


它工作得很好!我没有启用
fold.html
属性,这就是问题所在。直到现在我才让它工作。非常感谢你!
wxStyledTextCtrl *ctrl = // from somewhere ....
wxColour backgroundColor = // the background color
wxColour color =  // the foreground color
ctrl->SetProperty(wxT("fold"), wxT("1"));
ctrl->SetProperty(wxT("fold.comment"), wxT("1"));
ctrl->SetProperty(wxT("fold.html"), wxT("1"));
ctrl->SetFoldFlags(wxSTC_FOLDFLAG_LINEBEFORE_CONTRACTED | wxSTC_FOLDFLAG_LINEAFTER_CONTRACTED);
int marginNum = 1; // can be 0-5 I believe 
ctrl->SetMarginType(marginNum, wxSTC_MARGIN_SYMBOL);
ctrl->SetMarginWidth(marginNum, 16);
ctrl->SetMarginSensitive(marginNum, true);
ctrl->SetMarginMask(1, wxSTC_MASK_FOLDERS);
ctrl->SetFoldMarginColour(true, backgroundColor);
ctrl->SetFoldMarginHiColour(true, backgroundColor);
ctrl->MarkerDefine(wxSTC_MARKNUM_FOLDEROPEN, wxSTC_MARK_BOXMINUS, backgroundColor, color);
ctrl->MarkerDefine(wxSTC_MARKNUM_FOLDER, wxSTC_MARK_BOXPLUS, backgroundColor, color);
ctrl->MarkerDefine(wxSTC_MARKNUM_FOLDERSUB, wxSTC_MARK_VLINE, backgroundColor, color);
ctrl->MarkerDefine(wxSTC_MARKNUM_FOLDERTAIL, wxSTC_MARK_LCORNER, backgroundColor, color);
ctrl->MarkerDefine(wxSTC_MARKNUM_FOLDEREND, wxSTC_MARK_BOXPLUSCONNECTED, backgroundColor, color);
ctrl->MarkerDefine(wxSTC_MARKNUM_FOLDEROPENMID, wxSTC_MARK_BOXMINUSCONNECTED, backgroundColor, color);
ctrl->MarkerDefine(wxSTC_MARKNUM_FOLDERMIDTAIL, wxSTC_MARK_TCORNER, backgroundColor, color);