powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Построение меню в С
13 сообщений из 13, страница 1 из 1
Построение меню в С
    #39676382
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня есть меню с несколькими узлами и у каждого узла есть под-меню.
Я передвигаюсь кнопками LEFT, RIGHT, UP, DOWN, ENTER.
Какую структуру мне построить (объект меню) для навигации?
И какой алгоритм навигации посоветуете.
...
Рейтинг: 0 / 0
Построение меню в С
    #39676412
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например дерево, в к-ром
менюшки одного уровня образуют один уровень дерева,
их подменюшки - следующий уровень дерева и т.п.
...
Рейтинг: 0 / 0
Построение меню в С
    #39676864
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я в своё время для менюшек делал связный граф статических структур.
...
Рейтинг: 0 / 0
Построение меню в С
    #39676951
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Решил сделать так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
typedef struct
{
	uint32_t menu_id;
	char *menu_text;
}MENU_ITEM;

typedef struct
{
	MENU_ITEM main_menu;
	MENU_ITEM *submenu;
}MENU;



Но при инициализации

Код: plaintext
1.
2.
3.
4.
5.
6.
MENU menu[] =
{
	{  1, "MENU1",
	   { {0, "SUBMENU1" }, { 1, "SUBMENU2" }, { 2, "SUBMENU3" } }
	}
};



Компилятор ругается на уровне ворнинга

автор(near initialization for 'menu[1].submenu') [enabled by default]
braces around scalar initializer [enabled by default]
excess elements in scalar initializer [enabled by default]
initialization makes pointer from integer without a cast [enabled by default]


причем если убираю скобки ругается на уровне ошибки.
...
Рейтинг: 0 / 0
Построение меню в С
    #39676954
d7i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если, конечно, проект под Windows и на С (С++), то в Windows API есть куча функций для работы с меню.
Там всё уже сделано до нас...
...
Рейтинг: 0 / 0
Построение меню в С
    #39676958
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
d7iЕсли, конечно, проект под Windows и на С (С++), то в Windows API есть куча функций для работы с меню.
Там всё уже сделано до нас...
это для микроконтроллера. для Windows я бы не писал на С, я не настолько дурак. :)
...
Рейтинг: 0 / 0
Построение меню в С
    #39676965
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7, задай для начала без массива.

Ну вот Вы объявляете MENU menu, затем инициализируете.
Где у Вас menu.main_menu и menu.submenu ? последне ведь - указатель
...
Рейтинг: 0 / 0
Построение меню в С
    #39676973
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хочу добавить, что "деревом" я назвал условно. При наличии ссылки только в одну сторону, и там где навигация 2-сторонняя , надо будет искать того, кто ссылается, но это нормально.
Я люблю 2-направленные списки (* prev, * next).
Можно задать линейный массив однородных элементов, а в граф их связать типовым способом. Матрицей, списками инциденций или т.п.

Воспользуйтесь советом Дмитрия.
...
Рейтинг: 0 / 0
Построение меню в С
    #39676982
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
exp98jenya7, задай для начала без массива.

Ну вот Вы объявляете MENU menu, затем инициализируете.
Где у Вас menu.main_menu и menu.submenu ? последне ведь - указатель
ну да указатель. указатель на массив submenu. компайлер почему то не хочет это принимать - как указатель на массив.
...
Рейтинг: 0 / 0
Построение меню в С
    #39677018
WebSharper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в с массив - это уже указатель
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
#include <stdio.h>

int main()
{
    int a[10];
    a[0] = 1;
    a[1] = 2;
    
    printf("Hello, %d World!\n", (a+1)[0]);
    
    return 0;
}
...
Рейтинг: 0 / 0
Построение меню в С
    #39677030
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну а "в лоб" ?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
 [code=plaintext]
MENU_ITEM subm[]= { {0,"SUBMENU1"}, {1,"SUBMENU2"} , {2,"SUBMENU2"}, {3,"SUBMENU3"} };
MENU menu[5];

menu[0].main_menu.menu_id= 1;
menu[0].main_menu.menu_text= "MENU1";
menu[0].submenu= subm;

...
Рейтинг: 0 / 0
Построение меню в С
    #39677031
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
exp98Ну а "в лоб" ?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
 [code=plaintext]
MENU_ITEM subm[]= { {0,"SUBMENU1"}, {1,"SUBMENU2"} , {2,"SUBMENU2"}, {3,"SUBMENU3"} };
MENU menu[5];

menu[0].main_menu.menu_id= 1;
menu[0].main_menu.menu_text= "MENU1";
menu[0].submenu= subm;


ой. да. можно так. спасибо.
...
Рейтинг: 0 / 0
Построение меню в С
    #39677092
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7...это для микроконтроллера...

для МК этого очень мало, если не поделка...

удачи вам
(круглый)

Модератор: Тема перенесена из форума "Программирование".
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Построение меню в С
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]