Professional UI Solutions
Site Map   /  Register
 
 

Forum

Please Log In to post a new message or reply to an existing one. If you are not registered, please register.

NOTE: Some forums may be read-only if you are not currently subscribed to our technical support services.

Forums » Prof-UIS Tech Support » Application DrawCli hangs using menu Collapse All
Subject Author Date
Fabio Ermotti Jun 15, 2007 - 8:30 AM

Hi,
I have a problem on my application using Menus with the "Highlight rarely used menu items" option enabled.
I can reply the problem even in your Drawcli demo application.

The problem is the following:
"Highlight rarely used menu items" option enabled
"Show full menus after short delay" option disabled
On DrawCli application I open "View" on main menu, I leave the mouse on "MDI tabs" until sub menu appear.
Then I click on the bottom "View" menu to open the remaining part.
The application remains blocked until I switch the focus on others application.


Do you have solution for this ?

Thanks

Technical Support Jun 15, 2007 - 1:32 PM

Thank you for reporting this issue. You can fix it in this way. Please find the following code in the CExtPopupMenuWnd::_OnMouseMove() method:

      if( nCurIndex == IDX_EXPAND )
      {
            HWND hWndOwn = m_hWnd;
            _ItemFocusCancel( TRUE );
            if( ! ::IsWindow( hWndOwn ) )
                  return true;
            if( g_bMenuDelayExpanding )
            {
                  _SetCapture();
                  if( m_nWaitingExpandTickCount == 0 )
                  {
                        SetTimer(
                              ID_TIMER_DELAY_EXPAND,
                              ID_TOTAL_DELAY_EXPAND/ID_FREQ_DELAY_EXPAND,
                              NULL
                              );
                        m_nWaitingExpandTickCount = 1;
                  }
            } // if( g_bMenuDelayExpanding )
            return true;
      }
and replace it with:
      if( nCurIndex == IDX_EXPAND )
      {
            HWND hWndOwn = m_hWnd;
            _ItemFocusCancel( TRUE );
            if( ! ::IsWindow( hWndOwn ) )
                  return true;
            _SetCapture();
            if( g_bMenuDelayExpanding )
            {
                  if( m_nWaitingExpandTickCount == 0 )
                  {
                        SetTimer(
                              ID_TIMER_DELAY_EXPAND,
                              ID_TOTAL_DELAY_EXPAND/ID_FREQ_DELAY_EXPAND,
                              NULL
                              );
                        m_nWaitingExpandTickCount = 1;
                  }
            } // if( g_bMenuDelayExpanding )
            return true;
      }