Exemple #1
0
static bool GetParentMenuPos( HMENU hmenu, HMENU popup, HMENU *parent, gui_ctl_idx *position )
{
    gui_ctl_idx num;
    gui_ctl_idx pos;
    HMENU       submenu;

    num = _wpi_getmenuitemcount( hmenu );
    for( pos = 0; pos < num; pos++ ) {
        submenu = _wpi_getsubmenu( hmenu, pos );
        if( submenu != NULLHANDLE ) {
            if( submenu == popup ) {
                if( parent != NULL ) {
                    *parent = hmenu;
                }
                if( position != NULL ) {
                    *position = pos;
                }
                return( true );
            } else {
                if( GetParentMenuPos( submenu, popup, parent, position ) ) {
                    return( true );
                }
            }
        }
    }
    return( false );
}
Exemple #2
0
bool GUIAppendMenuByIdx( gui_window *wnd, gui_ctl_idx position, gui_menu_struct *menu )
{
    HMENU       hmenu;
    HMENU       submenu;
    bool        made_root;
    bool        ret;

    hmenu = GetOrMakeHMENU( wnd, false, &made_root );
    if( hmenu == NULLHANDLE ) {
        return( false );
    }
    if( ( position != -1 ) && GUIMDIUpdatedMenu() ) {
        position++;
    }
    submenu = _wpi_getsubmenu( hmenu, position );
    ret = AddMenu( submenu, wnd, menu, false, 0, false, MENU_HINT );
    if( ret && made_root ) {
        GUISetMenu( wnd, hmenu );
    }
    return( ret );
}
Exemple #3
0
/*
 * duplicateMenu - create a duplicate copy of a menu
 */
static HMENU duplicateMenu( HMENU orig )
{
    WPI_MENUSTATE       mstate;
    int                 num;
    unsigned            menu_flags;
    unsigned            attr_flags;
    UINT                id;
    char                name[MAX_STR];
    int                 i;
    HMENU               copy;
    HMENU               sub;

    if( orig != NULLHANDLE ) {
        copy = _wpi_createpopupmenu();
        if( copy == NULLHANDLE ) {
            return( NULLHANDLE );
        }
        num = (int)_wpi_getmenuitemcount( orig );
        for( i = 0; i < num; i++ ) {
            if( _wpi_getmenustate( orig, i, &mstate, TRUE ) ) {
                _wpi_getmenuflagsfromstate( &mstate, &menu_flags, &attr_flags );
                if( _wpi_ismenuseparatorfromstate( &mstate ) ) {
                    _wpi_appendmenu( copy, menu_flags, attr_flags, 0, NULLHANDLE, NULL );
                } else if( _wpi_ismenupopupfromstate( &mstate ) ) {
                    sub = duplicateMenu( _wpi_getsubmenu( orig, i ) );
                    name[0] = 0;
                    _wpi_getmenutext( orig, i, name, MAX_STR - 1, TRUE );
                    _wpi_appendmenu( copy, menu_flags, attr_flags, 0, sub, name );
                } else {
                    id = _wpi_getmenuitemid( orig, i );
                    _wpi_getmenutext( orig, i, name, MAX_STR - 1, TRUE );
                    _wpi_appendmenu( copy, menu_flags, attr_flags, id, NULLHANDLE, name );
                }
            }
        }
    }
    return( copy );

} /* duplicateMenu */