我在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
);
谢谢,
答案 0 :(得分:1)
您是否正在重建webkit的开罗端口?
如果是这样,您可以修改 WebCore / css / html4.css 和 WebCore / css / quirks.css 以在body标记中包含“overflow:hidden”
如果没有,我担心禁用滚动条的唯一方法是通过javascript。