реклама на сайте
подробности

 
 
> contextMenuStrip1
sergey sva
сообщение Jan 16 2010, 20:05
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Возникла проблема, меню отображается но вместе с ним отображается , на панели ярлык от этого контекстного окна.
GetCursorPos(pcursorpos);
contextMenuStrip1->Show(pcursorpos->x,pcursorpos->y);

http://slil.ru/28498712
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 9)
SysRq
сообщение Jan 16 2010, 21:03
Сообщение #2


Чайник, 1 литр
****

Группа: Свой
Сообщений: 655
Регистрация: 17-05-06
Из: Moscow
Пользователь №: 17 168



В инете есть два решения:

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
          );
    }
};
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Jan 17 2010, 18:37
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Понятно, в функция ShowContextMenu должно быть что то вроде такого:
Код
          POINT   cursorpos;
          LPPOINT pcursorpos;
          pcursorpos = &cursorpos;

          GetCursorPos(pcursorpos);
          contextMenuStrip1->Show(pcursorpos->x,pcursorpos->y);
Go to the top of the page
 
+Quote Post
SysRq
сообщение Jan 17 2010, 21:03
Сообщение #4


Чайник, 1 литр
****

Группа: Свой
Сообщений: 655
Регистрация: 17-05-06
Из: Moscow
Пользователь №: 17 168



Скажите, что вы конкретно хотите реализовать? А то, похоже, что я вас только с толку сбиваю ;(

PS: у вас managed C++ и Windows Forms, правильно я понимаю?
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Jan 18 2010, 05:46
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



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

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

Ну жно просто показать контекстное меню по двойному клинку на иконке в tray,
И в принципе все получается , только вместе с появлением контекстного меню на панели свернутых окон появляется
свернутое окно без названия ,на картинке выделено.
Прикрепленное изображение

Оно на конечно на работу не влияет, но хотелось бы его убрать, что бы появлялось только контекстное меню.

Сообщение отредактировал sergey sva - Jan 18 2010, 05:48
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Jan 18 2010, 13:21
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Шут с этим окном smile.gif , подскажите как из WCHAR получить String ?
Go to the top of the page
 
+Quote Post
SysRq
сообщение Jan 18 2010, 13:42
Сообщение #7


Чайник, 1 литр
****

Группа: Свой
Сообщений: 655
Регистрация: 17-05-06
Из: Moscow
Пользователь №: 17 168



Порылся в 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
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Jan 19 2010, 14:59
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Цитата
ишите более подробно что пытаетесь сделать

Просто немного хочу познакомится с net, а тут понадобилось сделать программку вот и решил немного позаниматься.
Сейчас такой вопрос получаю данные из xml Text = dokxml->DocumentElement->ChildNodes[0]->OuterXml->ToString();
Строку получаю вот в таком формата <sdat>14578xx </sdat> как получить данные без тегов просто 14578xx , или вырезать их
этих тегов. Не обязательно готовый пример, достаточно с помощь каких функций это сделать. остальное найду в инете.
Go to the top of the page
 
+Quote Post
SysRq
сообщение Jan 20 2010, 00:29
Сообщение #9


Чайник, 1 литр
****

Группа: Свой
Сообщений: 655
Регистрация: 17-05-06
Из: Moscow
Пользователь №: 17 168



http://support.microsoft.com/kb/307548/ru
http://www.realcoding.net/article/view/1810
http://dblog.ucoz.ru/blog/2009-03-20-10

Google, "разбор XML", "XML parsing".
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Jan 24 2010, 12:01
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Так вроде немного разобрался, правда так и не нашел почему же вместе с контекстным меню выскакивает на панели задач,
как бы свернутое окно. Может конечно только на моем компе такое происходит. Пробовал и с активным окном. скорее всего есть какой нибудь атрибут который за это отвечает.

вот файл программы Прикрепленный файл  ___________.zip ( 867.05 килобайт ) Кол-во скачиваний: 95
Может только у меня выскакивают эти свернутые окна.

PS программу не тестировал поэтому не знаю как поведет себя, может вообще система слетит smile.gif

Сообщение отредактировал sergey sva - Jan 24 2010, 12:22
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 08:00
Рейтинг@Mail.ru


Страница сгенерированна за 0.0146 секунд с 7
ELECTRONIX ©2004-2016