2009-08-09 7 views
5

Ho bisogno di compilare la GUI dell'applicazione utilizzando HTML/CSS/JavaScript con un backend C++ su tutta la piattaforma. Ho fatto dei semplici test con QtWebKit, e Mozilla.Qual è il browser incorporato più piccolo che posso usare in C++?

Bene dai testicoli semplici noto qualcosa che è molto batters me ed è la dimensione di distribuzione dei browser libs/framework. È grande: 8 MB e oltre.

C'è qualche tipo di browser incorporato più piccolo che mi manca?

+2

Normalmente sono molto professionale Qt, ma dal momento che avete bisogno di piccoli, provate a guardare il normale Webkit, (non QtWebkit), perché i collegamenti Qt (insieme alla libreria Qt) potrebbero aggiungersi inutilmente alle dimensioni. –

risposta

3

Penso che dillo richieda convenzioni di chiamata c, ma potrebbe fare per le proprie esigenze. No javascript o flash, o o o, ma supporta i CSS.

Alla lettura della domanda di nuovo, vedo che è necessario javascript, che dillo attualmente non supporta. Scusate.

1

Ho un suggerimento che potrebbe risolvere il problema:

Su Windows usano il controllo IE e su Linux utilizzare Mozilla (che sarà probabilmente disponibile come una libreria dinamica che è possibile caricare).

Ciò renderà la tua app la più piccola possibile, ma dovrai creare un wrapper attorno a IE/Mozilla per gestirli facilmente dal codice e il tuo HTML/CSS/JS dovrà essere cross-browser.

3

Non conosco altre piattaforme, ma il modo più semplice per eseguirlo su Windows è utilizzare il controllo del browser Web incorporato nel sistema. È basato su COM, che può essere abbastanza complicato da programmare. A seguito di codice che ottiene una bestia del genere:

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'esempio di codice di cui sopra è il frutto di più settimane di dolorosamente cercando di capire questa cosa COM. Bene, spero lo trovi utile in qualche modo ...

Nota: il campione sopra dipende da ATL (non da MFC).

0

Un altro approccio, completamente non testato: includere un semplice server Web (ad esempio Boost :: Asio ha un tutorial/esempio sull'argomento) nel programma, magari in un thread separato. Quindi lascia che il browser Web dell'utente scelga di navigare sul server Web appena avviato dal tuo programma.

0

Gli 8 MB: stai parlando della dimensione del file (o della memoria flash)? Mi aspetto che i requisiti di memoria operativa dei browser siano più significativi del codice base ... ma non lo vedo nella tua domanda. Dato che ti riferisci a Qtwebkit hai altre librerie Qt attive nel tuo prodotto?

Dipende molto dalle vostre esigenze; che ne dici di compatibilità, CSS, dimensioni dello schermo, prestazioni? Software libero o concesso in licenza? Quali condizioni di licenza (ad es. GPL o no). Può essere più preciso?

Un browser che è ben funzionante e conforme agli standard costa facilmente 16+ MByte. Ho trovato Opera, in particolare opera devices molto interessante; è molto conforme agli standard, personalizzabile e performante, tuttavia l'utilizzo della memoria è anche nella regione 16-32 MByte.