Step 7: Custom Mouse and Keyboard Handling

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.