Linkinf22 (Normal User)
Rookie
Messaggi: 59
Iscritto: 28/06/2009
|
Chi di voi del forum sa creare finestre ben fatte (intendo che sa fare più di semplici esempi) in C++?
è da un po' che mi piacerebbe imparare perchè alla fine per fare applicazioni con finestre devo sempre usare C#, che è facile da "decompilare" e visualizzare il codice da terze parti, cosa che mi fa spiacere.
Inoltre è anche una mia curiosità capire come si utilizzano le API di windows e quindi creare finestre in C++.
Perciò, non vi chiedo di spiegarmelo direttamente, ma chi ne è capace come ha imparato?
Mi potreste dare tutte le fonti (titoli di libri, siti web ecc) che avete pensato vi siano state utili per imparare?
Sarebbe anche per un progetto ambizioso che mi spiacerebbe fare in C# permettendo a chiunque volesse di leggere il codice.
Grazie in anticipo.
|
|
()
Newbie
Messaggi:
Iscritto:
|
Non ho capito, vuoi usare le API di windows?
Perchè sono molto complesse
Esistono librerie più semplici da usare e anche multipiattaforma...
Io per esempio so le GTK+, che hanno una grafica anche molto bella.
Comunque se vuoi usare le API di windows su internet si trova di tutto, anche sul sito di microsoft
|
|
()
Newbie
Messaggi:
Iscritto:
|
qui non ho il compilatore ma credo che vada,
è un esempio:
Codice sorgente - presumibilmente C++ |
# include <windows> #include <condefs.h> LRESULT CALLBACK myWndProc(HWND hWindow, UINT msg, WPARAM wParam, LPARAM lParam) { if (msg==WM_PAINT) { PAINTSTRUCT ps; const HDC hDC = BeginPaint(hWindow,&ps); RECT rect; GetClientRect(hWindow,&rect); DrawText(hDC,TEXT("HELLO WORLD"),-1,&rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER); EndPaint(hWindow,&ps); return 0; } else if (msg==WM_DESTROY) { PostQuitMessage(0); return 0; } return DefWindowProc(hWindow,msg,wParam,lParam); } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { const static TCHAR appName[] = TEXT("Hello world"); WNDCLASSEX myWin; myWin.cbSize = sizeof(myWin); myWin.style = CS_HREDRAW | CS_VREDRAW; myWin.lpfnWndProc = myWndProc; myWin.cbClsExtra = 0; myWin.cbWndExtra = 0; myWin.hInstance = hInstance; myWin.hIcon = 0; myWin.hIconSm = 0; myWin.hCursor = 0; myWin.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); myWin.lpszMenuName = 0; myWin.lpszClassName = appName; //Register if (!RegisterClassEx(&myWin)) return 0; const HWND hWindow = CreateWindow( appName, appName, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, 0, 0, hInstance, 0); ShowWindow(hWindow,iCmdShow); UpdateWindow(hWindow); { MSG msg; while(GetMessage(&msg,0,0,0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return (int)msg.wParam; } }
|
|
|
Linkinf22 (Normal User)
Rookie
Messaggi: 59
Iscritto: 28/06/2009
|
Be ma siccome è per un bel progetto non si sa mai che se riesco a farlo avrò una "ricompensa", ma con le GTK+ non so se posso farlo closed source rivolgermi a qualcuno per venderlo, credo che con le GTK+ non si possa fare niente a scopo di lucro.
|
|
()
Newbie
Messaggi:
Iscritto:
|
non so... credo di no, però forse con wxWidget si.. anche se preferisco l'interfaccia e i temi delle gtk...
Con le win api invece si può fare roba vendibile è vero,però sono quasi incomprensibili!
io quando sono passato alle gtk dalle api, non credevo che i codici potessero funzionare!
|
|
Linkinf22 (Normal User)
Rookie
Messaggi: 59
Iscritto: 28/06/2009
|
Quando hai detto che sul sito di microsoft si trova qualcosa intendi su msdn?
Se si mi sapresti dare il link che in msdn non riesco mai a trovarmici.
|
|
()
Newbie
Messaggi:
Iscritto:
|
|
|
()
Newbie
Messaggi:
Iscritto:
|
Comunque sul menu a sinistra trovi i link con tutte le spiegazioni, dacci un'occhiata!
|
|
Linkinf22 (Normal User)
Rookie
Messaggi: 59
Iscritto: 28/06/2009
|
Quello in italiano tratta solo di visual basic, linguaggio che non conosco per niente.
Quello in inglese sembra faccia al caso mio ed anche se è in inglese non credo di avere problemi, ne ho letti tanti di libri di informatica in inglese.
Ci sono cose del C++ che ancora non conosco, sono abituato al C#, quindi forse è un po' presto per le API.
Quando penso sarò più pronto consulterò il link che mi hai dato (l' ho salvato nei preferiti) e spero questo momento arrivi presto
Grazie per l' aiuto!
|
|