我有一个从wxMDIParentFrame
派生的主框架和一个从wxMDIChildFrame.
派生的相应子框架
主框架具有功能区栏,其内容如下:
auto clientWindow = GetClientWindow();
bSizer1->Add(m_ribbonBar, 0, wxEXPAND);
bSizer1->Add(clientWindow, 1, wxEXPAND);
子框架包含控件,例如一个具有wxRichTextCtrl
,另一个具有wxGrid
。
例如,富文本控件如下所示添加到子框架:
m_OutputWindow = new wxRichTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize,
wxTE_AUTO_URL|wxTE_PROCESS_ENTER|wxTE_PROCESS_TAB|wxVSCROLL|wxHSCROLL|wxNO_BORDER|wxWANTS_CHARS );
auto bSizer1 = new wxBoxSizer(wxHORIZONTAL);
bSizer1->Add( m_OutputWindow, 7, wxEXPAND | wxALL, 5 );
SetSizer( bSizer1 );
Layout();
如图(对于富文本ctrl)所示,我遇到的问题是wxRichTextCtrl的插入符号或wxGrid上的网格光标消失了。
在以下情况下会发生这种情况:
1)用户更改功能区页面,
2)用户单击功能区面板上的控件(例如wxButton或wxComboBox)。对于RibbonBar的“本机”控件,不会发生此问题,
3)用户单击RibbonBar上的空白区域(完全没有控件)。
缺点是发生这种情况时,用户会丢失插入符号或网格光标位置的下落。
这3种情况中的任何一种发生时,子框架仍处于活动状态,我的假设是子框架上的控件(即wxRichTextCtrl或wxGrid)变为非活动状态。即使用户再次单击子框架(而不是直接在控件上),也不会显示插入符号或网格光标。用户必须单击另一个子框架,然后单击要定位的目标框架。 能够再次显示插入符号或网格光标。
发生上述情况时,如何使插入符号或网格光标保持可见?
我在Windows 10上使用wxWidgets 3.1.0。编译器为VS 2015。