Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.12.2022, 11:44   #1
apofioz
Форумчанин
 
Регистрация: 22.01.2014
Сообщений: 313
По умолчанию Меню. Создание меню.

Здравствуйте! Тема касается меню, мне бы хотелось понять, что значит троеточие в данном контексте задачи:
Цитата:
Главное меню содержит раздел "Файл" со строками "Новый", "Открыть" и "Выход" и раздел "Помощь" со строками "Содержание" и "О программе". При выборе строки "Содержание" появляются строки "Введение", "Часть 1", "Часть 2" ... а при выборе строки "Часть ..." появляются строки "Раздел 1", "Раздел 2"...
Я не могу понять "Часть 2" ... троеточие здесь это продолжение перечисления строк "Часть 3", "Часть 4" и.т.д. или это строка меню "Часть 2...", что, как я понимаю, должно привести к появлению подменю при выборе этой строки?
Тоже самое касается "Раздел 2"...?
Стоит ли создавать временное(всплывающее) меню для "Раздел 1 " .... "Раздел n" или выводить в раздел "Содержимое" - неоднозначно как-то.
apofioz вне форума Ответить с цитированием
Старый 11.12.2022, 11:50   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,355
По умолчанию

Обычно троеточие в конце строчки меню означает что данная команд откроет диалог.
Стоит ли в данном случае открывать диалог, это скорее вопрос к автору строк, чем к форумчанам.
waleri вне форума Ответить с цитированием
Старый 11.12.2022, 12:30   #3
apofioz
Форумчанин
 
Регистрация: 22.01.2014
Сообщений: 313
По умолчанию

Цитата:
Обычно троеточие в конце строчки меню означает что данная команд откроет диалог.
О ДИАЛОГЕ НИЧЕГО НЕ СКАЗАНО для этого текст задания и выложил. Имеется ввиду то, что вы, как человек с большим опытным, взглядом и скажите, как бы вы это интерпретировали, но без диалогового окна.
apofioz вне форума Ответить с цитированием
Старый 11.12.2022, 12:40   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,770
По умолчанию

Цитата:
Сообщение от apofioz Посмотреть сообщение
Я не могу понять "Часть 2" ... троеточие здесь это продолжение перечисления строк "Часть 3", "Часть 4" и.т.д. или это строка меню "Часть 2...", что, как я понимаю, должно привести к появлению подменю при выборе этой строки?
Тоже самое касается "Раздел 2"...?
Вы прикидываетесь? 1, 2, 3 ... это 1, 2, 3, 4 или 1, 2, 3..., ?
p51x вне форума Ответить с цитированием
Старый 11.12.2022, 12:53   #5
apofioz
Форумчанин
 
Регистрация: 22.01.2014
Сообщений: 313
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Вы прикидываетесь?
Ну, видимо, да, мне же больше нечем заняться, как вопросы на форумах задавать. Как видно, не одному мне не понятно то, что требуется в задании. Да мне не ясно, что означают три точки.
apofioz вне форума Ответить с цитированием
Старый 12.12.2022, 11:03   #6
apofioz
Форумчанин
 
Регистрация: 22.01.2014
Сообщений: 313
По умолчанию

Может быть имеется ввиду просто сделать выпадающие подменю в разделе...:
Код:
HELP -> Content -> Introduction
                   -> Part 1 -> Chaper 1, Chapter2 ... Chapter n
                   -> Part 2 -> Chaper 1, Chapter2 ... Chapter n.
Или всё же первоначально должна быть строка, а при клике на ней, должно появиться подменю Content, если это так, то, соответственно, такая же история и с пунктами-строками Part 1, Part 2 ... Part n должна произойти?
Код:
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
	static HMENU hMainMenu, hFileMenu, hHelpMenu, 
		         hIntroductionMenu, hSubIntroMenu

	switch (msg)
	{
	case WM_CREATE:
	{
		hMainMenu = CreateMenu();
		SetMenu(hwnd, hMainMenu);
		hFileMenu = CreatePopupMenu();
		hHelpMenu = CreatePopupMenu();
		hIntroductionMenu = CreatePopupMenu();
		hSubIntroMenu = CreatePopupMenu();

		InsertMenuItem(hFileMenu, TEXT("New"), MFT_STRING,
			MFS_ENABLED, CM_FILE_NEW, FALSE,
			NULL, 0);
		InsertMenuItem(hFileMenu, TEXT("Open"), MFT_STRING,
			MFS_ENABLED, CM_FILE_OPEN, FALSE,
			NULL, 0);
		InsertMenuItem(hFileMenu, NULL, MFT_SEPARATOR,
			MFS_ENABLED, 0, FALSE,
			NULL, 0);
		InsertMenuItem(hFileMenu, TEXT("Exit"), MFT_STRING,
			MFS_ENABLED, CM_FILE_EXIT, FALSE,
			NULL, 0);
		InsertMenuItem(hMainMenu, TEXT("FILE"), MFT_STRING,
			MFS_ENABLED, 0, TRUE,
			hFileMenu, 0);

		InsertMenuItem(hHelpMenu, TEXT("Content..."), MFT_STRING,
			MFS_ENABLED, CM_HELP_CONTENT, FALSE,
			hIntroductionMenu, 0);
		InsertMenuItem(hHelpMenu, TEXT("About"), MFT_STRING,
			MFS_ENABLED, CM_HELP_ABOUT, FALSE,
			NULL, 0);
		InsertMenuItem(hMainMenu, TEXT("HELP"), MFT_STRING,
			MFS_ENABLED, 1, TRUE,
			hHelpMenu, 0);

		InsertMenuItem(hIntroductionMenu, TEXT("Introduction"), MFT_STRING | MFT_MENUBARBREAK,
			MFS_ENABLED, CM_INTRO_INTRODUCTION, FALSE,
			NULL, 0);
		InsertMenuItem(hIntroductionMenu, TEXT("Part 1"),
			MFT_STRING, MFS_ENABLED, CM_INTRO_PART1, FALSE,
			hSubIntroMenu, 0);
		InsertMenuItem(hIntroductionMenu, TEXT("&Part 2"),
			MFT_STRING, MFS_ENABLED,
			CM_INTRO_PART2, FALSE,
			hSubIntroMenu, 0);
		

		InsertMenuItem(hSubIntroMenu,
			TEXT("Chapter 1"), MFT_STRING | MFT_MENUBARBREAK, MFS_ENABLED, CM_SUBINTRO_CHAPTER1, FALSE, NULL, 0);
		InsertMenuItem(hSubIntroMenu,
			TEXT("Chapter 2"), MFT_STRING | MFT_MENUBARBREAK, MFS_ENABLED, CM_SUBINTRO_CHAPTER2, FALSE, NULL, 0);
		DrawMenuBar(hwnd);
		return 0;
	}
	case WM_COMMAND:
	{
		switch (LOWORD(wParam))
		{
		case CM_HELP_CONTENT:
		{
			
			break;
		}
		case CM_INTRO_PART1:
		{
			
			break;
		}
		case CM_INTRO_PART2:
		{
			
			break;
		}
		case CM_SUBINTRO_CHAPTER1:
		case CM_SUBINTRO_CHAPTER2:
		{
			
			break;
		}
		case CM_FILE_EXIT:
		{
			DestroyWindow(hwnd);
			return 0;
		}
		default:
			break;
		}
		DrawMenuBar(hwnd);
		return 0;
	}
	
	case WM_DESTROY:
	{
		PostQuitMessage(0);
		return 0;
	}
	}
	return DefWindowProc(hwnd, msg, wParam, lParam);
}
apofioz вне форума Ответить с цитированием
Старый 12.12.2022, 11:16   #7
apofioz
Форумчанин
 
Регистрация: 22.01.2014
Сообщений: 313
По умолчанию

Если пункт меню - это строка, то как его превратить в подменю, а затем назад в строку. Я делал так, изменял свойства меню(MIIM_STATE | MIIM_TYPE | MIIM_ID | MIIM_SUBMENU), но, если из строки сделать подменю у меня получилось и даже назад всё вернуть т.е. из подменю сделать опять пункт меню строка, то заставить работать это пункт как прежде у меня не вышло т.е. эта строка уже не реагировала на её выбор и сколько не кликай на ней она не подаёт признаков жизни. Хотя в свойствах нужного меню задал прежний идентификатор.
apofioz вне форума Ответить с цитированием
Старый 12.12.2022, 11:18   #8
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Цитата:
Сообщение от apofioz Посмотреть сообщение
Я не могу понять "Часть 2" ... троеточие здесь это продолжение перечисления строк "Часть 3", "Часть 4" и.т.д.
Как по мне, то да. Перечисление дальше.


Цитата:
Сообщение от apofioz Посмотреть сообщение
Стоит ли создавать временное(всплывающее) меню для "Раздел 1 " .... "Раздел n" или выводить в раздел "Содержимое" - неоднозначно как-то.
Как по мне, то имеется ввиду подменю.
Код:
Файл
  Новый
  Открыть...
  Выход

Помощь
  Содержание
    Введение
    Часть 1
      Раздел 1
      Раздел 2
       ...
       Раздел N
    Часть 2
      Раздел 1
      Раздел 2
       ...
       Раздел N
    ...
    Часть N
      Раздел 1
      Раздел 2
       ...
       Раздел N
  О программе
Вот такая структура должна быть.
macomics вне форума Ответить с цитированием
Старый 12.12.2022, 11:57   #9
apofioz
Форумчанин
 
Регистрация: 22.01.2014
Сообщений: 313
По умолчанию

Цитата:
Сообщение от macomics Посмотреть сообщение
Вот такая структура должна быть.
Я о таком думал, но как-то не красиво получается. Хотя с этим меню будет меньше заморочек, как мне кажется.

Цитата:
Содержание
Введение
Про "введение" в задании ничего не сказано, так что, стоит ли усложнять себе жизнь Ошибка.

Последний раз редактировалось apofioz; 12.12.2022 в 12:55.
apofioz вне форума Ответить с цитированием
Старый 12.12.2022, 12:49   #10
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Цитата:
Сообщение от apofioz Посмотреть сообщение
Про "введение" в задании ничего не сказано, так что, стоит ли усложнять себе жизнь
apofioz: "При выборе строки "Содержание" появляются строки "Введение", "Часть 1",".
macomics вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Меню работает не корректно. При выборе пункта меню Пропадает фон, смещается название пункта меню. NikMaster WordPress и другие CMS 1 12.07.2017 21:57
Как отобразить контекстное меню над контролом (как меню для кнопки Пуск в Винде)? fedorov2012 Общие вопросы Delphi 4 07.01.2013 14:31
Меню codrops (стильное меню), Как сделать чтобы текст не смещался в блоке? AlienNation HTML и CSS 2 28.09.2011 13:17
И сново sendMessage =) Как нажать пункт верхнего меню и меню правой кнопки? TwiX Win Api 9 15.10.2009 01:57
Меню с Items в виде набора Bitmap (как меню редактирования в Word'е) chandrasecar Мультимедиа в Delphi 7 14.01.2009 09:20