在WebKit中禁用滚动条(平面框架模式)

时间:2010-05-31 14:15:28

标签: c++ windows webkit cairo

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

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

如何以编程方式禁用滚动条,在C ++中(没有Javascript黑客攻击)?


更新

我试着打电话给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
);

谢谢,

1 个答案:

答案 0 :(得分:1)

您是否正在重建webkit的开罗端口?

如果是这样,您可以修改 WebCore / css / html4.css WebCore / css / quirks.css 以在body标记中包含“overflow:hidden”

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