GVKun编程网logo

objective-c – NSWindow – 右键菜单(右键菜单太多怎么删除)

27

本文的目的是介绍objective-c–NSWindow–右键菜单的详细情况,特别关注右键菜单太多怎么删除的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解object

本文的目的是介绍objective-c – NSWindow – 右键菜单的详细情况,特别关注右键菜单太多怎么删除的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解objective-c – NSWindow – 右键菜单的机会,同时也不会遗漏关于Objective C 学习心得 (一):--Windows下搭建objective C开发环境、objective-c – Cocoa – 显示时的NSWindow动画?、objective-c – Native OSX Lion调整自定义NSWindow或NSView的游标大小、objective-c – NSStatusItem右键菜单的知识。

本文目录一览:

objective-c – NSWindow – 右键菜单(右键菜单太多怎么删除)

objective-c – NSWindow – 右键菜单(右键菜单太多怎么删除)

当右键单击NSWindow时,有没有办法显示菜单?

解决方法

右键单击窗口中的视图,您将找到一个名为“menu”的属性.将此菜单属性与右键单击后应显示的菜单相关联.

Objective C 学习心得 (一):--Windows下搭建objective C开发环境

Objective C 学习心得 (一):--Windows下搭建objective C开发环境

最近打算针对iPhone、iPod touch和iPad开发一些应用,所以,需要开始学习Objective C(苹果推出的类似C语言的开发语言)。由于苹果的自我封闭的产业链发展模式(从芯片、机器、开发语言、终端产品、服务)的限制,要想开发针对苹果iPhone等产品的应用程序,就需要用Mac机器,在Xcode的IDE上使用Objective C语言开发。Mac机器就不用说了,那比PC机器要贵不少(当然性价比还是很高的),所以,要想廉价方式学习Objective C就必须要在Windows上能搭建一个Objective C开发环境。好了,不说废话了。

      在Windows下搭建Objective C开发环境,需要到GNUstep官方网站上下载,四个软件包:GNUstep MSYS System、GNUstep Core、GNUstep Devel、Cairo Backend。其中,前两个软件包是必须要安装的,第三个软件包是安装一些开发工具,比如:gcc、g++等,所以如果是学习Objective C的话,这个包也是必须要安装,第四个软件包是安装glib等库,这个包安装不安装根据具体情况而定。

     至于GNUstep是什么东西,有什么用处,这里做个简单的介绍:GNUstep就是提供类似Cocoa(苹果OS的开发框架)的API和工具,目前支持GNU/Linux and GNU/HURD,Solaris,NetBSD,OpenBSD,FreeBSD,Darwin和Windows,免费使用的。这个项目使Objective C能在多数流行平台上开发和运行。有关详细的介绍开始参考GNUstep的官方网站。

    言归正传,下载上述软件包后,点击安装就可以了。然后,需要确认是否安装成功,并且是否能成功编译Objective C代码。

    在“开始”菜单中“所有程序”下可以找到“GNUstep”->“shell”,就会出console窗口,可以试试一些Linux命令(ls,cd,mkdir等)。

    编写一个Objective C代码进行编译运行测试。在这里就用经典的“hello world”来说明:


  • #import <Foundation/Foundation.h>  
  • int main (int argc, const char *argv[]) {  
  •     NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init];  
  •     NSLog(@"Hello World!");  
  •     [pool drain];  
  •     return 0;  
  • }  
  • #import <Foundation/Foundation.h> int main (int argc,const char *argv[]) { NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init]; NSLog(@"<a href="https://www.jb51.cc/tag/HelloWorld/" target="_blank">Hello World!</a>"); [pool drain]; return 0; }

        在Windows环境下用文本编辑器(Editplus,UE等),编写上述代码,并且保存到GNUstep安装目录下的/home下,取名为helloworld.m。在GNUstep的console窗口命令行下,

        1、cd /home

        2、gcc -o helloworld helloworld.m -I/GNUstep/System/Library/Headers -fconstant-string-class=NSConstantString -L/GNUstep/System/Library/Libraries -lobjc -lgnustep-base

        3、运行helloworld.exe

       说明:第二步中的一些参数明说,如果熟悉Linux/Unix下C/C++编译的话,上述参数应该很熟悉,-I表示头文件查找的路径,-L表示库文件查找路径,-l表示需要链接的库文件。但是,-fconstant-string-class=NSConstantString  对于这个参数可能比较陌生,这个参数主要是指定常量字符串所使用的class。  

        helloworld.exe编译并运行成功的话,说明windows下Objective C开发环境就搭建好了,这样就可以开始以廉价方式的学习Objective C。:)

    http://blog.csdn.net/waden/article/details/5765294

    objective-c – Cocoa – 显示时的NSWindow动画?

    objective-c – Cocoa – 显示时的NSWindow动画?

    在显示简单的nswindow时,如何添加某种CoreAnimation效果?

    谢谢

    解决方法

    我做过你之前描述的动画.但是,这不是一件容易的事.由于动画超出了窗口本身的范围,因此您需要在超大的透明窗口中渲染动画.动画完成后,您可以在真实窗口中进行排序并删除透明窗口.

    你需要一个窗口的图像作为你的动画的内容,所以我要做的是订购窗口(也可能使它成为关键窗口,使它看起来很集中),但要把它放好在屏幕外,所以用户没有看到它.然后使用CGWindowListCreateImage抓取窗口的屏幕截图.现在,您将拥有创建动画所需的一切.

    动画完成后,只需将实际窗口排在透明窗口的顶部,然后删除透明窗口.使数学正确,以便动画和真实窗口中的窗口图像有点棘手,但它绝对可行.

    objective-c – Native OSX Lion调整自定义NSWindow或NSView的游标大小

    objective-c – Native OSX Lion调整自定义NSWindow或NSView的游标大小

    如果我们在某些指定区域使用NSTrackingArea,那么我们可以实现这样的方法来更改默认光标:

    -(void)cursorUpdate:(NSEvent *)theEvent {
        [[NSCursor resizeLeftCursor] set];
    }

    我为NSWindow实现自定义resize,它使用NSBorderlessWindowMask.并希望使用本机Lion的两个箭头游标.但是这种类型的游标在NSCursor API中不存在.

    我能从代码中以某种方式获得这样的原生游标吗?
    或者也许我必须手工重绘(不是一个好主意)?

    解决方法

    WebKit包含的图像与系统使用的游标完全相同,位于以下目录中:

    /System/Library/Frameworks/WebKit.framework/Versions/Current/Frameworks/WebCore.framework/Resources/

    …例如,文件“northWestSouthEastResizeCursor.png”.

    objective-c – NSStatusItem右键菜单

    objective-c – NSStatusItem右键菜单

    我正在开发一个左右键单击的状态栏应用程序.我通过关注其他帖子的提示开始了这项工作,但我不确定如何在右键单击显示菜单.

    我使用子类NSView作为我的NsstatusItem的自定义视图,并且右键和左键单击执行不同的函数:

    - (void)mouseDown:(NSEvent *)theEvent{
        [super mouseDown:theEvent];
        if ([theEvent modifierFlags] & NSCommandKeyMask){
            [self.target performSelectorOnMainThread:self.rightAction withObject:nil waitUntilDone:NO];
        }else{
            [self.target performSelectorOnMainThread:self.action withObject:nil waitUntilDone:NO];
        }
    }
    
    - (void)rightMouseDown:(NSEvent *)theEvent{
        [super rightMouseDown:theEvent];
        [self.target performSelectorOnMainThread:self.rightAction withObject:nil waitUntilDone:NO];
    }

    如何在右键单击时显示菜单,与标准NsstatusItem在左键单击时的操作方式相同?

    解决方法

    NsstatusItem popUpStatusItemmenu:诀窍.我从右键单击操作调用它并传入我要显示的菜单并显示它!这不是我期望的这个功能,但它正在发挥作用.

    这是我的代码的重要部分:

    - (void)showMenu{
        // check if we are showing the highlighted state of the custom status item view
        if(self.statusItemView.clicked){
            // show the right click menu
            [self.statusItem popUpStatusItemmenu:self.rightClickMenu];
        }
    }
    
    // menu delegate method to unhighlight the custom status bar item view
    - (void)menuDidClose:(NSMenu *)menu{ 
        [self.statusItemView setHighlightState:NO];
    }
    
    - (void)applicationDidFinishLaunching:(NSNotification *)aNotification{
        // setup custom view that implements mouseDown: and rightMouseDown:
        self.statusItemView = [[IsstatusItemView alloc] init];
        self.statusItemView.image = [NSImage imageNamed:@"menu.png"];
        self.statusItemView.alternateImage = [NSImage imageNamed:@"menu_alt.png"];    
        self.statusItemView.target = self;
        self.statusItemView.action = @selector(mainAction);
        self.statusItemView.rightAction = @selector(showMenu);
    
        // set menu delegate
        [self.rightClickMenu setDelegate:self];
    
        // use the custom view in the status bar item
        self.statusItem = [[NsstatusBar systemStatusBar] statusItemWithLength:NSSquareStatusItemLength];
        [self.statusItem setView:self.statusItemView];
    }

    以下是自定义视图的实现:

    @implementation IsstatusItemView
    
    @synthesize image = _image;
    @synthesize alternateImage = _alternateImage;
    @synthesize clicked = _clicked;
    @synthesize action = _action;
    @synthesize rightAction = _rightAction;
    @synthesize target = _target;
    
    - (void)setHighlightState:(BOOL)state{
        if(self.clicked != state){
            self.clicked = state;
            [self setNeedsdisplay:YES];
        }
    }
    
    - (void)drawImage:(NSImage *)aimage centeredInRect:(NSRect)aRect{
        NSRect imageRect = NSMakeRect((CGFloat)round(aRect.size.width*0.5f-aimage.size.width*0.5f),(CGFloat)round(aRect.size.height*0.5f-aimage.size.height*0.5f),aimage.size.width,aimage.size.height);
        [aimage drawInRect:imageRect fromrect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0f];
    }
    
    - (void)drawRect:(NSRect)rect{
        if(self.clicked){
            [[NSColor selectedMenuItemColor] set];
            NSRectFill(rect);        
            if(self.alternateImage){
                [self drawImage:self.alternateImage centeredInRect:rect];
            }else if(self.image){
                [self drawImage:self.image centeredInRect:rect];
            }
        }else if(self.image){
            [self drawImage:self.image centeredInRect:rect];
        }
    }
    
    - (void)mouseDown:(NSEvent *)theEvent{
        [super mouseDown:theEvent];
        [self setHighlightState:!self.clicked];
        if ([theEvent modifierFlags] & NSCommandKeyMask){
            [self.target performSelectorOnMainThread:self.rightAction withObject:nil waitUntilDone:NO];
        }else{
            [self.target performSelectorOnMainThread:self.action withObject:nil waitUntilDone:NO];
        }
    }
    
    - (void)rightMouseDown:(NSEvent *)theEvent{
        [super rightMouseDown:theEvent];
        [self setHighlightState:!self.clicked];
        [self.target performSelectorOnMainThread:self.rightAction withObject:nil waitUntilDone:NO];
    }
    
    - (void)dealloc{
        self.target = nil;
        self.action = nil;
        self.rightAction = nil;
        [super dealloc];
    }
    
    @end

    关于objective-c – NSWindow – 右键菜单右键菜单太多怎么删除的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于Objective C 学习心得 (一):--Windows下搭建objective C开发环境、objective-c – Cocoa – 显示时的NSWindow动画?、objective-c – Native OSX Lion调整自定义NSWindow或NSView的游标大小、objective-c – NSStatusItem右键菜单等相关知识的信息别忘了在本站进行查找喔。

    本文标签: