Доступ к WebKit из приложений углерода

Для доступа к WebKit из приложения Углерода Вы используете Углерод WebKit API для создания веб-представления Углерода. Как только Вы добавили представление к окну, необходимо загрузить и вывести на экран содержание URL использование собственных классов Какао.

Перед использованием любых веб-представлений необходимо вызвать WebInitForCarbon функция. Выполнение так инициализирует Какао, таким образом, можно получить доступ к WebKit из приложения Углерода.

Для создания веб-представления Вы просто вызываете HIWebViewCreate функция. Эта функция возвращает ссылку HIView, и как таковой, можно использовать любую из стандартных функций манипулирования HIView на ней. Например, можно встроить веб-представление в другом окне или просмотреть, изменить размеры его и т.д.

Например, следующий фрагмент кода создает веб-представление и встраивает его в окно:

    WindowRef       window;
    HIViewRef       webView, contentView;
    HIRect          bounds;
    CFURLRef        url;
 
    // Create your window here
 
    // Get a URL here, as a CFURL
 
    WebInitForCarbon(); // initialize WebKit
 
    HIWebViewCreate( &webView ); // create the web view
 
    // Now obtain the content view associated with the window
    HIViewFindByID( HIViewGetRoot( window ), kHIViewWindowContentID,
                     &contentView );
 
    // Set the bounds of the web view to be the same as the content view
    HIViewGetBounds( contentView, &bounds );
    HIViewSetFrame( webView, &bounds );
 
    // Embed the web view in the content view and make it visible
    HIViewAddSubview( contentView, webView );
    HIViewSetVisible( webView, true );
 
    // Make a call to load URL content */
    LoadURL( webView, url );

Для управления содержанием веб-представления Вам нужен доступ к фактическому представлению Cocoa. Вы получаете ссылку на объект веб-представления Какао путем вызова HIWebViewGetWebView функция. Можно тогда выполнить вызовы Objective C к WebKit с помощью того объекта. Функция в качестве примера LoadURL показывает, как Вы могли сделать это:

static void LoadURL( HIViewRef inView, CFURLRef inURL )
{
    WebView*            nativeView;
    NSURLRequest*       request;
    WebFrame*           mainFrame;
 
    nativeView = HIWebViewGetWebView( inView ); // get the Cocoa view
 
    // Use Objective-C calls to load the actual content
    request = [NSURLRequest requestWithURL:(NSURL*)inURL];
    mainFrame = [nativeView mainFrame];
    [mainFrame loadRequest:request];
}

См. WebKit C Ссылка для большего количества подробных данных об Углероде функции WebKit.