To add custom mouse and keyboard handling similar to those implemented in the Visual Basic version of the Outline Demo, we need to handle the DblClick and KeyPress events.
Adding the event handlers is easy: click CTRL-W to invoke the Wizard, select the VSFLEXGRID1 object on the Object Ids list, then select each event and click the Add Function button. When you are done, click the Edit Code button and type the following code:
#define flexOutlineExpanded 0
#define flexOutlineSubtotals 1
#define flexOutlineCollapsed 2
void COutlineCDlg::OnDblClickVsflexgrid1()
{
// double-clicking on a row expands or collapses it
long r = m_fg.GetRow();
if (m_fg.GetIsCollapsed(r) == flexOutlineCollapsed)
m_fg.SetIsCollapsed(r, flexOutlineExpanded);
else
m_fg.SetIsCollapsed(r, flexOutlineCollapsed);
}
void COutlineCDlg::OnKeyPressVsflexgrid1(short FAR* KeyAscii)
{
if (*KeyAscii == VK_RETURN) {
OnDblClickVsflexgrid1();
*KeyAscii = 0;
}
}
Again, the code is a line-by-line translation of the Visual Basic Outline example.