The website "dmilvdv.narod.ru." is not registered with uCoz.
If you are absolutely sure your website must be here,
please contact our Support Team.
If you were searching for something on the Internet and ended up here, try again:

About uCoz web-service

Community

Legal information

Листинг 3

Листинг 3

Предыдущая  Содержание  Следующая V*D*V

Расширенная версия mdi().

 

void mdi() /* интерфейс управления меню */

{

    char c;

    MENU *curr_menu = find_menu(MAIN_MENU);

    int curr_selection = 0;

    int status;

    draw_menu(curr_menu, curr_selection);

    while(TRUE)

    {

        c = readch();

// возвращает специальные коды, установленные нами для кнопок со стрелками, перехода по страницам и т.д.

        switch(c)

        {

        case UP_ARROW:

            if(curr_selection !=0)

            hilite(FORWARD);

            break;

 

        case DOWN_ARROW:

            if(curr_selection < (curr_menu->num_selections-1))

                hilite(REVERSE);

            break;

 

        case ENTER:

            (*curr_menu->selection[curr_selection].function)

            (curr_menu->selection[curr_selection].fn_arg);

            break;

 

        default:

            if(curr_menu->selection[curr_selection].key_handler != NULL)

            {

                if(get_input())

                /* 'ложь', если вышли по ESC или CTRL-C, иначе 'истина' */

                {

                    status = (*curr_menu->selection[curr_selection].key_handler)

                        (curr_menu->selection[curr_selection].pro_key_fn_arg);

                }

                else

                {

                    redraw_prompt();

                }

            }

            /* Иначе игнорировать ввод полностью

            или обратная связь с указанием ошибки для пользователя */

        }

 

int keyedit(int state)

{

    int okay = TRUE;

    switch(state)

    {

    case NAME:

        if(validate_name(workbuf))

            strcpy(global_curr_name,workbuf);

        else

            okay = FALSE;

        break;

    case LNUM:

        if(validate_lnum(workbuf))

            global_curr_lnum = atoi(workbuf);

        else

            okay = FALSE;

        break;

    case ADDRESS:

        if(validate_address(workbuf))

            strcpy(global_curr_address,workbuf);

        else

            okay = FALSE;

        break;

    }

    return(okay);

}

 

 

Предыдущая  Содержание  Следующая