2009-08-09 33 views
5

Tôi cần xây dựng GUI ứng dụng của mình bằng HTML/CSS/JavaScript với chương trình phụ trợ C++ tất cả nền tảng chéo. Tôi đã thực hiện các thử nghiệm đơn giản với QtWebKit, XULRunner và Mozilla.Trình duyệt nhúng nhỏ nhất mà tôi có thể sử dụng trong C++ là gì?

Cũng từ những tinh hoàn đơn giản, tôi nhận thấy một cái gì đó rất là đánh bại tôi và đó là kích thước triển khai của các trình duyệt/khung hình lib2/lib. Nó lớn: 8 MB trở lên.

Có một số loại trình duyệt nhúng nhỏ hơn mà tôi bị thiếu không?

+2

Thông thường tôi rất chuyên nghiệp Qt, nhưng vì bạn cần nhỏ, hãy thử xem Webkit thông thường, (không phải QtWebkit), vì ràng buộc Qt (cùng với thư viện Qt) có thể thêm không cần thiết vào kích thước. –

Trả lời

3

Tôi nghĩ rằng dillo yêu cầu các quy ước gọi điện thoại, nhưng có thể phù hợp với nhu cầu của bạn. Không có javascript hoặc flash, hoặc hoặc, nhưng nó hỗ trợ CSS.

Khi đọc lại câu hỏi, tôi thấy rằng bạn cần javascript, mà dillo hiện không hỗ trợ. Lấy làm tiếc.

1

Tôi có một ý kiến ​​cho rằng có thể giải quyết vấn đề:

Trên Windows sử dụng kiểm soát IE và trên Linux sử dụng Mozilla (mà có lẽ sẽ có sẵn như một thư viện động mà bạn có thể tải).

Điều này sẽ làm cho ứng dụng của bạn nhỏ nhất có thể nhưng bạn sẽ phải tạo trình bao bọc xung quanh IE/Mozilla để giải quyết chúng dễ dàng từ mã và HTML/CSS/JS của bạn sẽ phải là trình duyệt chéo.

3

Tôi không biết về các nền tảng khác, nhưng cách nhỏ nhất để thực hiện trên Windows là sử dụng Trình kiểm soát trình duyệt web tích hợp sẵn. Nó dựa trên COM, có thể khá phức tạp cho chương trình. Mã sau đây giúp bạn trở thành một con thú như vậy:

HWND htmlWindow = ::CreateWindowExA(
    dwExStyle, 
    ATLAXWIN_CLASS, 
    "about:blank", 
    dwStyle, 
    x, y, w, h, 
    hwndParent, 
    NULL, 
    hInstance, 
    NULL 
); 

CAxWindow2 helperWindow; 
helperWindow.Attach(htmlWindow); 
CComPtr<IWebBrowser2> theWebBrowserControl; 
HRESULT hr = helperWindow.QueryControl(&theWebBrowserControl); 

Mẫu mã trên là kết quả của nhiều tuần cố gắng thấu hiểu điều COM này. Vâng, hy vọng bạn thấy nó hữu ích bằng cách nào đó ...

Lưu ý: mẫu trên phụ thuộc vào ATL (không phải MFC).

0

Một cách tiếp cận khác, hoàn toàn chưa được kiểm tra: Bao gồm máy chủ web đơn giản (ví dụ: Boost :: Asio có hướng dẫn/ví dụ về vấn đề) vào chương trình của bạn, có thể trong một chuỗi riêng biệt. Sau đó, cho phép người dùng lựa chọn trình duyệt web lướt web-server chỉ cần bắt đầu bằng chương trình của bạn.

0

8 MB: bạn đang nói về kích thước tệp (hoặc bộ nhớ flash)? Tôi mong đợi yêu cầu bộ nhớ hoạt động của các trình duyệt có ý nghĩa hơn so với cơ sở mã .... nhưng tôi không thấy điều này trong câu hỏi của bạn. Vì bạn đang đề cập đến Qtwebkit, bạn có các thư viện Qt nào khác đang hoạt động trong sản phẩm của mình không?

Phụ thuộc rất nhiều vào nhu cầu của bạn; làm thế nào về khả năng tương thích, CSS, kích thước màn hình, hiệu suất? Phần mềm miễn phí hoặc được cấp phép? Điều kiện giấy phép nào (nghĩa là GPL hoặc chắc chắn là không). Bạn có thể cụ thể hơn không?

Trình duyệt hoạt động tốt và tuân thủ các tiêu chuẩn sẽ dễ dàng tốn 16+ MByte. Tôi thấy Opera, cụ thể là opera devices rất thú vị; nó là tiêu chuẩn rất compiant, tùy biến và performant, tuy nhiên nó sử dụng bộ nhớ cũng là trong khu vực 16-32 MByte.

Các vấn đề liên quan