2

我将 WebKit 嵌入到 Windows C++ 应用程序中。我正在使用开罗港口。它工作正常。

当客户区可以显示更多数据时,我想禁用出现的滚动条。和 iPhone 一样,iPhone 没有滚动条,滚动的实现方式不同。

如何在 C++ 中以编程方式禁用滚动条(无 Javascript hack)?


更新:

我试着打电话HRESULT IWebFrame::setAllowsScrolling(BOOL flag)。为了获得 IWebFrame 接口,我调用了HRESULT IWebView::mainFrame(IWebFrame **frame). 这似乎不起作用。滚动条仍然出现。我究竟做错了什么?这不是我主要感兴趣的主要框架吗?


更新:

我尝试启用这样的平面框架模式:

IWebPreferences *Preferences;
hr = pWebView->preferences(&Preferences);
if (FAILED(hr))
    goto exit;

IWebPreferencesPrivate *PrivatePreferences = 0;
hr = Preferences->QueryInterface(IID_IWebPreferencesPrivate, (void **)&PrivatePreferences);
if (FAILED(hr))
    goto exit;
hr = PrivatePreferences->setFrameSetFlatteningEnabled(TRUE);
if (FAILED(hr))
    goto exit;

代码运行良好,但似乎没有任何反应。我在这里做错了什么?


更新:

我收到了在创建主窗口时可能包含 WS_VSCROLL 的建议。不是这种情况:

MainWindow = CreateWindow(
    WindowClass,
    WindowTitle,
    WS_OVERLAPPEDWINDOW,
    CW_USEDEFAULT,
    0,
    iPhoneXRes + 16 + 20,
    iPhoneYres + 110,
    NULL,
    NULL,
    hInstance,
    NULL
);

谢谢,

4

1 回答 1

1

你在重建 webkit 的 Cairo-port 吗?

如果是这样,您可以修改WebCore/css/html4.cssWebCore/css/quirks.css以在正文标记中包含“溢出:隐藏”。

如果没有,恐怕禁用滚动条的唯一方法是通过javascript。

于 2010-10-05T18:39:50.197 回答