私は C++ アプリを開発しており、内部に WebKit WebView を含む NSWindow を表示する必要があります。ウィンドウの作成と表示を管理する Objective-C クラスをコーディングしましたが、その中に含まれる WebView は表示されません。これが私のコードです。何が間違っているのか、どうすれば修正できるのかについて何か考えはありますか?
以下のコードを $g++ -x Objective-C++ -framework Cocoa -framework WebKit Foo.m main.m -o testでコンパイルしています
フー。
#import <Cocoa/Cocoa.h>
#import <WebKit/WebKit.h>
@interface Foo :NSObject {
NSWindow *window;
WebView *view;
}
- (void)displayWindow;
@end
Foo.m
#import "Foo.h"
@implementation Foo
- (id)init {
self = [super init];
// Window Container
window = [[NSWindow alloc] initWithContentRect:NSMakeRect(500.0f,500.0f,250.0f,250.0f)
styleMask:NSBorderlessWindowMask
backing:NSBackingStoreNonretained
defer:NO];
// WebView
view = [[WebView alloc] initWithFrame:NSMakeRect(0, 0, 250.0f, 250.0f)
frameName:@"Frame"
groupName:nil];
[[view mainFrame] loadHTMLString:@"<html><head></head><body><h1>Hello</h1></body></html>"
baseURL:nil];
return self;
}
- (void)displayWindow {
NSLog(@"In Display window");
[window setContentView:view];
[window setLevel:NSStatusWindowLevel];
[window orderFrontRegardless];
sleep(5); // leave it up for 5 seconds
}
- (void)dealloc {
[window release];
[super dealloc];
}
@end
main.m
#import "Foo.h"
int main() {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
[NSApplication sharedApplication];
Foo *foo = [[Foo alloc] init];
[foo displayWindow];
[foo release];
[pool release];
return 0;
}