2009-08-09 4 views
5

J'ai besoin de construire mon application GUI en utilisant HTML/CSS/JavaScript avec un backend C++ tout cross-plate-forme. J'ai fait des tests simples avec QtWebKit, XULRunner et Mozilla. Eh bien à partir des testicules simples, je remarque quelque chose qui est très et moi c'est la taille de déploiement des navigateurs libs/framework. C'est gros: 8 Mo et plus.Quel est le plus petit navigateur embarqué que je puisse utiliser en C++?

Y a-t-il une sorte de navigateur intégré plus petit qui me manque?

+2

Normalement, je suis très pro Qt, mais puisque vous avez besoin de petite, essayez de regarder Webkit, (pas QtWebkit), parce que les liaisons Qt (avec la bibliothèque Qt) peuvent ajouter inutilement à la taille. –

Répondre

3

Je pense que dillo nécessite c conventions d'appel, mais il pourrait faire pour vos besoins. Pas de javascript ou flash, ou ou ou, mais il supporte CSS. En lisant à nouveau la question, je vois que vous avez besoin de javascript, ce que dillo ne supporte pas actuellement. Pardon.

1

J'ai une suggestion qui pourrait résoudre le problème:

Sur Windows, utilisez le contrôle IE et Mozilla sous Linux utiliser (ce qui sera probablement disponible en tant que bibliothèque dynamique que vous pouvez charger). Cela rendra votre application la plus petite possible, mais vous devrez créer un wrapper autour d'IE/Mozilla pour les traiter facilement à partir du code et votre HTML/CSS/JS devra être cross-browser.

3

Je ne connais pas d'autres plates-formes, mais la façon la plus simple de le faire sous Windows est d'utiliser le contrôle de navigateur Web intégré au système. C'est basé sur COM, ce qui peut être assez compliqué à programmer. code suivant obtient une telle bête:

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); 

L'exemple de code ci-dessus est le fruit de plusieurs semaines d'essayer péniblement de comprendre cette chose COM. Eh bien, j'espère que vous trouverez cela utile en quelque sorte ...

Remarque: l'échantillon ci-dessus dépend de ATL (pas MFC).

0

Une autre approche, complètement non testée: Inclure un simple serveur web (par exemple Boost :: Asio a un tutoriel/exemple sur le sujet) dans votre programme, peut-être dans un thread séparé. Laissez ensuite le choix du navigateur Web de l'utilisateur naviguer sur le serveur Web que votre programme a démarré.

0

Le 8 Mo: vous parlez de la taille du fichier (ou du stockage flash)? Je m'attends à ce que les exigences de mémoire opérationnelle des navigateurs soient plus importantes que la base de code .... mais je ne vois pas cela dans votre question. Puisque vous faites référence à Qtwebkit, avez-vous d'autres bibliothèques Qt actives dans votre produit?

Cela dépend beaucoup de vos besoins; que diriez-vous de compatibilité, CSS, taille d'écran, performance? Logiciel libre ou sous licence? Quelles conditions de licence (c'est-à-dire GPL ou certainement pas). Peux-tu être plus précis?

Un navigateur performant et conforme aux normes coûtera facilement plus de 16 Mo. J'ai trouvé Opera, en particulier opera devices très intéressant; il est très standard, compacte, personnalisable et performant, mais son utilisation de la mémoire est également dans la région 16-32 MByte.

Questions connexes