프로그래밍 방식으로 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
'IT박스' 카테고리의 다른 글
클래스간에 JAVA 콜백을 어떻게 수행합니까? (0) | 2020.11.26 |
---|---|
TFS에서 VS.net의 포함 프로젝트 폴더 이름 바꾸기 (0) | 2020.11.26 |
C ++에 암시 적 기본 생성자가 있습니까? (0) | 2020.11.26 |
인터페이스의 모든 구현을 어떻게 찾습니까? (0) | 2020.11.26 |
AngularJS-ng-repeat를 사용하여 라디오 입력 세트 생성 (0) | 2020.11.26 |