IT박스

프로그래밍 방식으로 Cocoa 창을 어떻게 생성합니까?

itboxs 2020. 11. 26. 08:05
반응형

프로그래밍 방식으로 Cocoa 창을 어떻게 생성합니까?


내 Cocoa 앱에는 동적으로 생성 된 작은 창이 필요합니다. 런타임에 어떻게 프로그래밍 방식으로 Cocoa 창을 만들 수 있습니까?

이것은 지금까지 작동하지 않는 시도입니다. 결과가 전혀 보이지 않습니다.

NSRect frame = NSMakeRect(0, 0, 200, 200);
NSUInteger styleMask =    NSBorderlessWindowMask;
NSRect rect = [NSWindow contentRectForFrameRect:frame styleMask:styleMask];

NSWindow * window =  [[NSWindow alloc] initWithContentRect:rect styleMask:styleMask backing: NSBackingStoreRetained    defer:false];
[window setBackgroundColor:[NSColor blueColor]];
[window display];

문제는을 (를) 호출 display하고 싶지 makeKeyAndOrderFront않거나 orderFront창을 키 윈도우가되기를 원하는지 여부에 따라 호출 하고 싶다는 것입니다. 또한 NSBackingStoreBuffered.

이 코드는 화면 왼쪽 하단에 테두리없는 파란색 창을 만듭니다.

NSRect frame = NSMakeRect(0, 0, 200, 200);
NSWindow* window  = [[[NSWindow alloc] initWithContentRect:frame
                    styleMask:NSBorderlessWindowMask
                    backing:NSBackingStoreBuffered
                    defer:NO] autorelease];
[window setBackgroundColor:[NSColor blueColor]];
[window makeKeyAndOrderFront:NSApp];

//Don't forget to assign window to a strong/retaining property!
//Under ARC, not doing so will cause it to disappear immediately;
//  without ARC, the window will be leaked.

당신의 보낸 사람을 만들 수 있습니다 makeKeyAndOrderFront또는 orderFront어떤 귀하의 상황에 적합합니다.


참고로 메인 펜촉없이 애플리케이션을 프로그래밍 방식으로 인스턴스화하려면 main.m 파일에서 / 아래와 같이 AppDelegate를 인스턴스화 할 수 있습니다. 그런 다음 앱 지원 파일 / YourApp.plist 기본 펜촉 기본 파일 / MainWindow.xib 에서이 항목을 삭제하십시오. 그런 다음 Jason Coco의 접근 방식을 사용하여 AppDelegates init 메서드에 창을 연결합니다.

#import "AppDelegate.h":

int main(int argc, char *argv[])
{

  NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
  [NSApplication sharedApplication];

  AppDelegate *appDelegate = [[AppDelegate alloc] init];
  [NSApp setDelegate:appDelegate];
  [NSApp run];
  [pool release];
  return 0;
}

시험

[window makeKeyAndOrderFront:self]; 

대신에

[window display];

그것이 당신이 목표로하는 것입니까?


이것이 내가 스스로 생각 해낸 것입니다.

NSRect frame = NSMakeRect(100, 100, 200, 200);
NSUInteger styleMask =    NSBorderlessWindowMask;
NSRect rect = [NSWindow contentRectForFrameRect:frame styleMask:styleMask];
NSWindow * window =  [[NSWindow alloc] initWithContentRect:rect styleMask:styleMask backing: NSBackingStoreBuffered    defer:false];
[window setBackgroundColor:[NSColor blueColor]];
[window makeKeyAndOrderFront: window];

파란색 창이 표시됩니다. 이것이 최적의 접근 방식이기를 바랍니다.

참고 URL : https://stackoverflow.com/questions/314256/how-do-i-create-a-cocoa-window-programmatically

반응형