Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: contextMenuStrip1
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
sergey sva
Возникла проблема, меню отображается но вместе с ним отображается , на панели ярлык от этого контекстного окна.
GetCursorPos(pcursorpos);
contextMenuStrip1->Show(pcursorpos->x,pcursorpos->y);

http://slil.ru/28498712
SysRq
В инете есть два решения:

1. У NotifyIcon есть свойство ContextMenuStrip. Пропишите ваше меню туда, пусть меню вызывается само из NotifyIcon;

2. Если все же желаете показывать меню программно через .Show(), то делайте Invoke. Пример:
Код
niMain.MouseClick += delegate( object sender, MouseEventArgs e )
{
  if ( e.Button != MouseButtons.Right )
    {
      niMain.GetType().InvokeMember(
          "ShowContextMenu",
          BindingFlags.InvokeMethod|BindingFlags.Instance|BindingFlags.NonPublic,
          null,
          niMain,
          null
          );
    }
};
sergey sva
Понятно, в функция ShowContextMenu должно быть что то вроде такого:
Код
          POINT   cursorpos;
          LPPOINT pcursorpos;
          pcursorpos = &cursorpos;

          GetCursorPos(pcursorpos);
          contextMenuStrip1->Show(pcursorpos->x,pcursorpos->y);
SysRq
Скажите, что вы конкретно хотите реализовать? А то, похоже, что я вас только с толку сбиваю ;(

PS: у вас managed C++ и Windows Forms, правильно я понимаю?
sergey sva
Цитата
PS: у вас managed C++ и Windows Forms, правильно я понимаю?

Да visual studio 2008 c++.
Цитата
что вы конкретно хотите реализовать?

Ну жно просто показать контекстное меню по двойному клинку на иконке в tray,
И в принципе все получается , только вместе с появлением контекстного меню на панели свернутых окон появляется
свернутое окно без названия ,на картинке выделено.
Нажмите для просмотра прикрепленного файла
Оно на конечно на работу не влияет, но хотелось бы его убрать, что бы появлялось только контекстное меню.
sergey sva
Шут с этим окном smile.gif , подскажите как из WCHAR получить String ?
SysRq
Порылся в MSDN, вычитал что для правильной работы всплывающего меню необходимо чтобы окно программы было активно. Т.е. некоторым образом все можно упростить до:
Код
private: System::Void notifyIcon1_MouseDoubleClick(System::Object^  sender, System::Windows::Forms::MouseEventArgs^  e) {
             this->BringToFront();
             Point mousePos = System::Windows::Forms::Control::MousePosition;
             contextMenuStrip1->Show(mousePos);
         }


PS: судя по кускам кода, у вас какая-то злобная мешанина из .NET и нативного кода; пишите более подробно что пытаетесь сделать, может подскажем чего... wassat.gif
sergey sva
Цитата
ишите более подробно что пытаетесь сделать

Просто немного хочу познакомится с net, а тут понадобилось сделать программку вот и решил немного позаниматься.
Сейчас такой вопрос получаю данные из xml Text = dokxml->DocumentElement->ChildNodes[0]->OuterXml->ToString();
Строку получаю вот в таком формата <sdat>14578xx </sdat> как получить данные без тегов просто 14578xx , или вырезать их
этих тегов. Не обязательно готовый пример, достаточно с помощь каких функций это сделать. остальное найду в инете.
sergey sva
Так вроде немного разобрался, правда так и не нашел почему же вместе с контекстным меню выскакивает на панели задач,
как бы свернутое окно. Может конечно только на моем компе такое происходит. Пробовал и с активным окном. скорее всего есть какой нибудь атрибут который за это отвечает.

вот файл программы Нажмите для просмотра прикрепленного файла Может только у меня выскакивают эти свернутые окна.

PS программу не тестировал поэтому не знаю как поведет себя, может вообще система слетит smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.