筛选窗口修改事件



我有这个消息循环:

while (!shutdown_now_) 
    {
        NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
        NSEvent *event = [NSApp nextEventMatchingMask:NSAnyEventMask
                                            untilDate:[NSDate distantFuture]
                                               inMode:NSDefaultRunLoopMode
                                              dequeue:YES];
        if (event) [NSApp sendEvent:event];
        // If modifying window event, do something!!! 
        [pool drain];
    } 

我想过滤所有修改窗口的NSEvents,例如移动、调整大小、订购等等。我试着在苹果文档中寻找类型,但没有成功。有什么帮助吗?谢谢

过滤事件不是正确的方法。

如果不希望用户移动窗口,请将窗口的movable属性设置为false。

如果不希望用户调整窗口大小,请将窗口的styleMask设置为不包括NSResizableWindowMask。或者,可能将其contentMinSizecontentMaxSize设置为其当前大小。

任何事件都不能直接订购窗口。窗口的代理可以通过实现-windowShouldClose:来决定关闭按钮是否真的关闭了窗口。如果根本不希望启用关闭按钮,请将styleMask设置为不包括NSClosableWindowMask

我要查找的事件类型是NSAppKitDefined:

while (!shutdown_now_) 
    {
        NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
        NSEvent *event = [NSApp nextEventMatchingMask:NSAnyEventMask
                                            untilDate:[NSDate distantFuture]
                                               inMode:NSDefaultRunLoopMode
                                              dequeue:YES];
        if (event.type == NSAppKitDefined)
        {
            NSLog(@"NSAppKitDefinedEvent with subtype: %d", event.subtype);
        }
        if (event) [NSApp sendEvent:event];
        [pool drain];
    }

相关内容

  • 没有找到相关文章

最新更新