2011-01-08 4 views
0

Я пытаюсь отобразить что-то со стороны NSStatusItem. Думаю, я мог бы сделать это двумя способами:Рисование окна в координатах или рисование за пределами NSStatus Item

Показать прозрачное окно с изображением, которое мне нужно в координатах курсора мыши.

ИЛИ

Используйте пользовательские NSStatusItem и перемещать элементы управления/изображения в окне слева, чтобы они на самом деле от пункта статуса

Проблема заключается в том, устанавливая рамки минусовой NSRect (-200, 0,100,50), похоже, не работает. Итак, как я могу визуализировать объекты за пределами элемента статуса (думаю, свойство переполнения CSS) или визуализировать прозрачное окно в определенных координатах?

ответ

1

Система не позволит вам рисовать вне элемента состояния, но с использованием прозрачного окна будет работать.

NSRect rect; //The location of the window 
NSWindow *win = [[NSWindow alloc] initWithContentRect:rect styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:YES]; 
[win setOpaque:NO]; 

[win setBackgroundColor:[NSColor clearColor]]; 
//or 
[win setContentView:myView]; 

Здесь myView - это пользовательский вид, который будет фоном окна. Чтобы окно было прозрачным, вам необходимо установить цвет фона для очистки или использовать пользовательский контент, который только рисует, где он не прозрачен. Вероятно, вы захотите использовать плавающее окно, чтобы оно оставалось сверху. Будьте осторожны, чтобы не скрыть что-то важное, потому что ваше окно могло перехватить события, предназначенные для чего-то под ним.

+0

Кажется, что он отлично работает (сделал его плавающим окном и отобразился с помощью makeKeyAndOrderFront), за исключением одной вещи. Он отображается примерно в течение секунды, точно, как я хочу его, тогда он исчезает. Он просто исчезает - ничто в журналах, и приложение все еще работает нормально. Любые идеи относительно того, что может произойти? EDIT: Когда я нажимаю кнопку в окне несколько раз в секунду, похоже, остается. Это похоже на то, что он исчезает, когда неактивен ... –

+0

Я не знаю. Может быть, он будет выпущен? Если нет, попробуйте сделать его прозрачным и посмотреть, исчезнет ли он. – ughoavgfhw

Смежные вопросы