Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Программирование под Windows > WinAPI
Перезагрузить страницу Использование функции LoadMenuIndirect
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Андрейка C. Андрейка C. вне форума
Member
 
Сообщений: 199
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.10.2005
По умолчанию 24.07.2006, 23:48

Заранее прошу прощения, если такой вопрос уже поднимался - просто сижу по модему и пользоваться поиском - ну очень медленно. Итак, мой вопрос - кто пользовался функцией LoadMenuIndirect и может предоставить работающий код? Нашел в МСДНе пример ее использования, но он работает неправильно.
Вот текст:
Код:
UINT AddMenuItem(LPVOID MenuTemplate, WCHAR* MenuString, WORD MenuID, BOOL IsPopup, BOOL LastItem)
{
   MENUITEMTEMPLATE* mitem = (MENUITEMTEMPLATE*) MenuTemplate;

   UINT  bytes_used = 0;
   if (IsPopup)         // for popup menu
   {      
      if (LastItem)
         mitem->mtOption = MF_POPUP | MF_END;
      else
         mitem->mtOption = MF_POPUP;
      bytes_used += sizeof (mitem->mtOption);  
      
      mitem = (MENUITEMTEMPLATE*) ((BYTE*) MenuTemplate + bytes_used);
      // a popup doesn't have mtID!!!
      
      wcscpy((WCHAR*) mitem, MenuString);
      bytes_used += sizeof (WCHAR) * (wcslen(MenuString) + 1); // include '\0'   
   }
   else      // for command item
   {
      mitem->mtOption = LastItem ? MF_END : 0;
      mitem->mtID = MenuID;   
      wcscpy(mitem->mtString, MenuString);  
      bytes_used = sizeof (mitem->mtOption ) + sizeof (mitem->mtID) + 
         sizeof (WCHAR) * (wcslen(MenuString) + 1);   // include '\0'
   }

   return bytes_used;
}
И вот пример использования:
Код:
   BYTE milist[500] = {0};
   // Fill up the MENUITEMTEMPLATEHEADER structure.
   MENUITEMTEMPLATEHEADER* mheader = (MENUITEMTEMPLATEHEADER*) milist;
   mheader->versionNumber = 0;
   mheader->offset = 0;

   int bytes_used = sizeof(MENUITEMTEMPLATEHEADER);
   bytes_used += AddMenuItem(milist + bytes_used, L"&File", 0, TRUE, FALSE);
   bytes_used += AddMenuItem(milist + bytes_used, L"E&xit", IDM_FILE_EXIT, FALSE, TRUE);

   HMENU hMenu = LoadMenuIndirect(milist);
   SetMenu(hWnd, hMenu);
Вместе с меню "File" получаю еще каких-то два меню, названия которых состоят из квадратиков и закорючек. Кто знает в чем пролема?
Ответить с цитированием
  (#2 (permalink)) Старый
Jonano Jonano вне форума
Специалист
 
Аватар для Jonano
 
Сообщений: 3,541
Сказал(а) спасибо: 2
Поблагодарили 14 раз(а) в 14 сообщениях
Регистрация: 19.04.2005
По умолчанию 25.07.2006, 12:16

Цитата:
Вместе с меню "File" получаю еще каких-то два меню, названия которых состоят из квадратиков и закорючек. Кто знает в чем пролема?
Несоответствие кодировок.
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Использование функции RegisterHotKey и Debug Assert Rocky Visual C++ 1 22.10.2008 22:44
Использование функции экспоненциального распределения Riki Delphi 3 17.06.2008 21:23
Использование функции RestoreFromFile компоненты PostgresDAC Rider PostgreSQL 0 10.02.2008 19:52
Использование функции Delphi (FloatToStrF) Banzay Вопросы начинающих программистов 1 25.02.2007 20:35
Использование функции из dll библиотеки tоkito Delphi 3 03.07.2006 04:12
Использование функции CtlColor для создания меню диалога werter1 Visual C++ 1 18.04.2006 10:03
Использование родовой функции в обычном классе voodOOpeople C++ Builder 7 14.02.2005 12:44
Использование функции GetCursorPos TPoing и tagPOINT LaMiK C++ Builder 16 14.01.2004 21:40
Использование функции WindowFromPoint для обнаружения дескриптора окна Beyonder C++ Builder 9 08.01.2004 10:49
Использование в работе функции getline Godim Visual C++ 8 30.08.2003 17:45
Программирование в С++, использование функции DataGrid Anonymous Вопросы начинающих программистов 1 16.03.2003 02:08
Использование функции для приведения типов Anonymous C++ Builder 0 14.03.2003 04:18



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов