Programiranje?

Zanima me...
alexa-lol
Prispevkov: 380
Pridružen: 12.5.2006 19:57

Odgovor Napisal/-a alexa-lol »

moja koda :D

Koda: Izberi vse

#include <windows.h>

// Declare WndProcedure




LRESULT CALLBACK WndProcedure(HWND hWnd, UINT uMsg,
			   WPARAM wParam, LPARAM lParam);

INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
               LPSTR lpCmdLine, int nCmdShow)
{
	MSG        Msg;
	HWND       hWnd;
	HRESULT	   hRet;
	WNDCLASSEX WndClsEx;

	// Populate the WNDCLASSEX structure
	WndClsEx.cbSize        = sizeof(WNDCLASSEX);
	WndClsEx.style         = CS_HREDRAW | CS_VREDRAW;
	WndClsEx.lpfnWndProc   = WndProcedure;
	WndClsEx.cbClsExtra    = 0;
	WndClsEx.cbWndExtra    = 0;
	WndClsEx.hIcon         = LoadIcon(NULL, IDI_APPLICATION);
	WndClsEx.hCursor       = LoadCursor(NULL, IDC_ARROW);
	WndClsEx.hbrBackground = (HBRUSH)(COLOR_HIGHLIGHT+1);//(HBRUSH)GetStockObject(WHITE_BRUSH);
	WndClsEx.lpszMenuName  = NULL;
	WndClsEx.lpszClassName = "MyWindow";
	WndClsEx.hInstance     = hInstance;
	WndClsEx.hIconSm       = LoadIcon(NULL, IDI_APPLICATION);

	
 /* COLOURS :)
COLOR_ACTIVEBORDER
COLOR_ACTIVECAPTION
COLOR_APPWORKSPACE
COLOR_BACKGROUND
COLOR_BTNFACE
COLOR_BTNSHADOW
COLOR_BTNTEXT
COLOR_CAPTIONTEXT
COLOR_GRAYTEXT
COLOR_HIGHLIGHT
COLOR_HIGHLIGHTTEXT
COLOR_INACTIVEBORDER
COLOR_INACTIVECAPTION
COLOR_MENU
COLOR_MENUTEXT
COLOR_SCROLLBAR
COLOR_WINDOW
COLOR_WINDOWFRAME
COLOR_WINDOWTEXT 
*/
 
 
 
 // Register the class
	RegisterClassEx(&WndClsEx);





	// Create the window object
	hWnd = CreateWindow("MyWindow",
			  "Rich's Window",
			  WS_OVERLAPPEDWINDOW,
			  CW_USEDEFAULT,
			  CW_USEDEFAULT,
			  CW_USEDEFAULT,
			  CW_USEDEFAULT,
			  NULL,
			  NULL,
			  hInstance,
			  NULL);
			  




			  
			  
	
	// Verify window creation
	if( !hWnd ) // If the window was not created,
		return 0; // stop the application

	// Show the window
	ShowWindow(hWnd, SW_SHOWNORMAL);
	UpdateWindow(hWnd);

	//  message pump
	while( (hRet = GetMessage( &Msg, NULL, 0, 0 )) != 0)
	{ 
		if (hRet == -1)
		{
        // handle the error and possibly exit
		}
		else
		{
			TranslateMessage(&Msg); 
			DispatchMessage(&Msg); 
		}
	}

return 0;

}



LRESULT CALLBACK WndProcedure(HWND hWnd, UINT Msg,
			   WPARAM wParam, LPARAM lParam)
{
    switch(Msg)
    {
    case WM_DESTROY:
        // user wants to exit
        PostQuitMessage(WM_QUIT);
        break;
    default:
        // Hand off unprocessed messages to DefWindowProc
        return DefWindowProc(hWnd, Msg, wParam, lParam);
    }
    
    return 0;
}
to iz enga tutoriala

Uporabniški avatar
Aniviller
Prispevkov: 7263
Pridružen: 15.11.2004 18:16

Odgovor Napisal/-a Aniviller »

Aniviller napisal/-a:Glede postavitve prvega okna in manipulacijo gumbkov in podobnih reci je pa spet boljsi Linux in njegov QT, ki ga molce prevzamejo tudi Win uporabniki. Brez tega imas namrec spet opravka z mesano solato nekih nerazumljivih _HANDLE, HWND in HINSTANCE zadev...
S temle sem mislil natanko tole tvojo kodo. Zdaj pa naredi kaj ce mores. Windowsi so totalno barbarski do vsega kar ni Microsoft. Pa naj gre za DirectX ali pa za navadna okna. Predlagam ti da preklopis vsaj na tole:
QT/windows
dokumentacija
Mimogrede, poglej si QGLWidget klaso, ki ze lepo podpira OpenGL.
Tukaj pa vidis kako enostavno je biti 3D pospesen na odprti kodi:
en tutorial
boljsi tutorial
Prvi trikotnik imas ze takoj (inicializacijo in brisanje bufferja za zacetek skopiras iz tutoriala, ima pa se dodatnih 10 vrstic :) ):

Koda: Izberi vse

glBegin(GL_TRIANGLES);
glColor3f(1.0,0.0,0.0);
glVertex2f(-0.5,0.0);
glColor3f(0.0,1.0,0.0);
glVertex2f(0.5,-0.5);
glColor3f(0.0,0.0,1.0);
glVertex2f(0.5,0.5);
glEnd();
;

ges
Prispevkov: 45
Pridružen: 20.7.2006 22:11

Odgovor Napisal/-a ges »

Microsoft ima svoje strategije. DirectX ni poden ampak enakovreden OpenGLju in še izboljšuje se, medtem ko se tekmec bolj počasi. Mogoče je res OpenGL lažji za začetnike. So pa vse težkokategorne igre napisane z DirecX razen nekaj izjem(Doom, UT2k4, ...), Proti Visual Studiju se lahko druge stvari skrijejo, to ni subjektivno mneje. Express verzija je zasojn, odsotne pa so fukcije ki jih no boste rabili. Tako lahko sestavljate vse po vrsti in OpenGL normalno dela v MVS. Ter DirectX ima funkcije za input, zvok in take zadeve med tem ko je OpenGL grafic only.

Uporabniški avatar
Aniviller
Prispevkov: 7263
Pridružen: 15.11.2004 18:16

Odgovor Napisal/-a Aniviller »

Se popolnoma strinjam s tabo, DirectX je mocno orodje, ampak rabis tudi zaresno ekipo ljudi da ga obvlada. Za enega samega cloveka je dobro obvladljiva izbira OpenGL. Za Microsoft je pac berljivost in prijaznost kode zadnja briga. Pa lahko noc.

Uporabniški avatar
shrink
Prispevkov: 14610
Pridružen: 4.9.2004 18:45

Odgovor Napisal/-a shrink »

Iz lastnih izkušenj lahko rečem, da se da OpenGL osvojiti zelo hitro.

O DirectX ne morem ničesar reči, ker ga ne poznam oz. ga nisem še programiral.
ges napisal/-a:DirectX ni poden ampak enakovreden OpenGLju in še izboljšuje se, medtem ko se tekmec bolj počasi. Mogoče je res OpenGL lažji za začetnike. So pa vse težkokategorne igre napisane z DirecX razen nekaj izjem(Doom, UT2k4, ...)
Povsem verjamem, da DirectX prekaša OpenGL glede zmožnosti programiranja zahtevne grafike modernih iger, še posebej v Windows okolju. To sploh ni presentljivo, saj je DirectX Microsoftova knjižnica namenjena in prilagojena zgolj Windows okolju. Nasprotno pa je OpenGL strojno-neodvisen vmesnik med programsko kodo in grafičnim pospeševalnikom (torej neodvisen od platform in OS-ov) in povsem odprt standard (kljub temu da ga je za svoje delovne postaje razvil SGI).
Proti Visual Studiju se lahko druge stvari skrijejo, to ni subjektivno mneje.
Morda pa je to subjektivno mnenje tistih, ki uporabljajo le Microsoftova razvojna orodja v Microsoftovih okoljih. Sam sem tudi uporabljal Visual Studio in sem bil zelo razočaran nad slabo portabilnostjo kode med posameznimi verzijami. To je zelo slaba lastnost Microsoftovih produktov.

Glede programiranja grafike v OpenGL priporočam ogled naslednjih tutorialov:

http://nehe.gamedev.net/

ges
Prispevkov: 45
Pridružen: 20.7.2006 22:11

Odgovor Napisal/-a ges »

To da DirectX prekaša OpenGL je prevelik kompliment za DirectX. Obeje je dobra zadeva, samo uporabljati ju je potrebno pravilno. Anivillerov post pove dobro o tem.
Ko se govoril o IDEju sem mislil IDEvironment, ki pa res, roko na srce... Glede portabilnosti, je odvisno kaj in kak delaš. Ne vem kaj si delal, odvisno je kaj vse je potrebno za izvajanje programa. Če si prevajal z knjižnicami ki zahtevajo razne .dllje ali pa .net ki se je iz verzije 1.1 prešel v 2, ampak lahko se doseže cilj. Pa tudi portabilnost drugje ni dosti boljša kot je tukaj.

Uporabniški avatar
shrink
Prispevkov: 14610
Pridružen: 4.9.2004 18:45

Odgovor Napisal/-a shrink »

ges napisal/-a:To da DirectX prekaša OpenGL je prevelik kompliment za DirectX. Obeje je dobra zadeva, samo uporabljati ju je potrebno pravilno. Anivillerov post pove dobro o tem.
No, navezoval sem se zgolj na tvoj post, v katerem si trdil, da
So pa vse težkokategorne igre napisane z DirecX razen nekaj izjem(Doom, UT2k4, ...)
iz česar sem sklepal, da je DirectX v Windows okolju dosti bolj podprt in ima zato več prednosti pred OpenGL.
Glede portabilnosti, je odvisno kaj in kak delaš. Ne vem kaj si delal, odvisno je kaj vse je potrebno za izvajanje programa. Če si prevajal z knjižnicami ki zahtevajo razne .dllje ali pa .net ki se je iz verzije 1.1 prešel v 2, ampak lahko se doseže cilj.
Prevajanje kode (napisane v prejšnjih verzijah) je bilo v novejših verzijah problematično.
Pa tudi portabilnost drugje ni dosti boljša kot je tukaj.
S fortranskim compilerji nisem nikoli imel težav. Eklatanten primer za portabilnost pa je bilo povsem neproblematično (brez popravkov) prevajanje kode stare 40 let v najnovejši verziji compilerja.

ges
Prispevkov: 45
Pridružen: 20.7.2006 22:11

Odgovor Napisal/-a ges »

ges napisal/-a:DirectX ni poden ampak enakovreden OpenGLju
No ja, ne bi rekel da s tem dajem kateri strani prednost.
Ni fora v compilerjih.Tem je važna (logična :)) sintaksa. Problem je v linkerjih.
40 let stara koda:D, tole mi je rahlo smešno.

Uporabniški avatar
shrink
Prispevkov: 14610
Pridružen: 4.9.2004 18:45

Odgovor Napisal/-a shrink »

ges napisal/-a:
ges napisal/-a:DirectX ni poden ampak enakovreden OpenGLju
No ja, ne bi rekel da s tem dajem kateri strani prednost.
Hja no, potem pa ne vem, zakaj si sploh omenil, da so
ges napisal/-a:vse težkokategorne igre napisane z DirecX razen nekaj izjem
Če namreč to drži, potem ima očitno DirectX določene prednosti.

Ni fora v compilerjih.Tem je važna (logična :)) sintaksa. Problem je v linkerjih.
Kot "compilerje" sem mislil hkrati tudi linkerje. Skratka: imel sem v mislih celotno razvojno okolje, ki v končni fazi da delujoči program ali aplikacijo.
40 let stara koda:D, tole mi je rahlo smešno.
Če je koda napisana v FORTRAN4, potem lahko upravičeno trdim, da je stara.

Meni je pa smešno, da kode, ki sem jo napisal v MVS 2003 (in jo v njem brez težav prevedel), brez popravkov ne morem prevesti v MVS 2005. Kaj smešno, tragično!

Pri fortranskih razvojnih okoljih pa sem še vsak program ali aplikacijo (z vsemi vključenimi knjižnicami), ki sem ga napisal v starih verzijah (recimo tudi v Microsoftovemu Visual Fortranu), kasneje brez težav (beri: popravljanja kode) prevedel z novejšimi verzijami razvojnega okolja (recimo s Compaq-ovo).

ges
Prispevkov: 45
Pridružen: 20.7.2006 22:11

Odgovor Napisal/-a ges »

Glede prednosti med DirectX in OpenGL, nisem rekel da ima kateri prednost, s tem se očitno strinjaš. DirectX je bolj uporabljen v Windowsu, ker ima določene prednosti in določene slabosti, tako kot OpenGL. Ampak DirectXove prednosti tukaj pretehtajo. 90% trga na katerem je Windows, Vse DirectWovi APIji, ki poskrbijo za vse (sliko, zvok, input in ostale bombončke), podpora(kot "pomoč uporabnikom"), je pa vzrok tudi nekaj let nazaj (okoli 1997), takrat je DirectX nudil enostavno slikanje na zaslon, to kar so razvijalci potrebovali. Med tem ko je imel OpenGL težave z kompatibilnostjo med svojimi funkcijami in grafičnimi karticami. Pa tudi DirectX je bol usmerjen v igre OpenGL pa v bolj "znanstvene" vode, tudi tukaj se mi zdi da je slednjega malo manj kot prvega.
S tem da mi je rahlo smešno nisem mislil nič sarkastičnega. Samo 40 let, takrat C še obstajal ni. Kašna koda je potem to, sort of Assebly? Če bi povedal svoje mnenje :D bi rekel da ni napredka, kaj pomaga portabilnost kode med orodji, ko pa koda nič ne pomaga. Sam to me zanima v katere jeziku je tista koda pisana.

Uporabniški avatar
Aniviller
Prispevkov: 7263
Pridružen: 15.11.2004 18:16

Odgovor Napisal/-a Aniviller »

Fortran je delal ze na luknjanih karticah 8)

Uporabniški avatar
shrink
Prispevkov: 14610
Pridružen: 4.9.2004 18:45

Odgovor Napisal/-a shrink »

ges napisal/-a:Glede prednosti med DirectX in OpenGL, nisem rekel da ima kateri prednost, s tem se očitno strinjaš. DirectX je bolj uporabljen v Windowsu, ker ima določene prednosti in določene slabosti, tako kot OpenGL...
Povsem jasno je, zakaj se DirectX bolj uporablja v Windows okoljih: bil je namensko narejen za njih, kar pa za OpenGL ne moremo trditi.
Pa tudi DirectX je bol usmerjen v igre OpenGL pa v bolj "znanstvene" vode, tudi tukaj se mi zdi da je slednjega malo manj kot prvega.
To pa povsem drži. Brez OpenGL marsikateri CAD program danes ne bi bil to, kar je.
S tem da mi je rahlo smešno nisem mislil nič sarkastičnega. Samo 40 let, takrat C še obstajal ni. Kašna koda je potem to, sort of Assebly?
Sploh ne. Tekstovne datoteke v sintaksi FORTRAN4.

BTW: Če sem čisto natančen, je bila zadeva napisana v začetku 70-ih let, kar je malo manj kot 40 let. Takrat pa je C že obstajal.
Če bi povedal svoje mnenje :D bi rekel da ni napredka, kaj pomaga portabilnost kode med orodji, ko pa koda nič ne pomaga.
Morda se fortran res ne razvija tako, kot ostali jeziki oz. orodja, vendar je vseskozi (ne glede na spremembe standarda) podpiral še tako stare verzije. Za fortran pač (iz lastnih izkušenj) vem, da bom lahko stare kode brez težav prevedel v delujoči program. Za kakšen Basic (da ne rečem C) pa si stare kode ne bi upal vnašati v Microsoftove prevajalnike.
Sam to me zanima v katere jeziku je tista koda pisana.
To sem pa napisal že v prejšnjem postu: FORTRAN4.

ges
Prispevkov: 45
Pridružen: 20.7.2006 22:11

Odgovor Napisal/-a ges »

Ne vem zakaj komentiraš vsak skoraj vsak moj stavek, če se z njim ne strinjaš potem povej drugače. Aha, potem ni bilo 40 let (no offense here). Ko si že omenil C, je fora tudi v temu, ker se spreminja sam standard jezika npr ISO 99, ki se jih Microsoft bolj drži kot na primer gcc. Omenil si da se stvar prevede ne glede na standard, to mi gre pa v nos. Kašen smisel ima potem nadgrajevanje če se piše ista koda ki je ponavadi počanejša, ranljivejša, manj pregledna od trenutne. To je sedaj že zelo zašlo s tirnic v naslova, tako da ne bi veliko več o temu. Lahko je za nekoga dobro de ima koda dolgo življensko dobo. Ampak to se upošteva redko kje. VS 2003 in(ali) VS 6 je tudi sedaj popolnoma v redu zadeva .net na osebnih računalnikih bo imel vidnejšo vlogo v Visti. Prepričan sem da bi se dalo kodo prenesti med različnimi stopnjami orodji, tudi jezik po katerem sem spraševal je bil mišljen tisti v katerem si pisal v VS.

Uporabniški avatar
shrink
Prispevkov: 14610
Pridružen: 4.9.2004 18:45

Odgovor Napisal/-a shrink »

ges napisal/-a:Ne vem zakaj komentiraš vsak skoraj vsak moj stavek, če se z njim ne strinjaš potem povej drugače.
To je moj način (stil) debatiranja in ga ne mislim spreminjati. Če ti tak način debatiranja (z moje strani) ne ustreza, ti ni treba odgovarjati.
Aha, potem ni bilo 40 let (no offense here).
Fiziki pač zaokrožujejo(mo).
Omenil si da se stvar prevede ne glede na standard, to mi gre pa v nos.
Če nov standard podpira prejšnje, je to hvale vredna lastnost.
Kašen smisel ima potem nadgrajevanje če se piše ista koda ki je ponavadi počanejša, ranljivejša, manj pregledna od trenutne.
Sploh ni point v tem. FORTRAN4 in recimo FORTRAN2003 sta svetlobna leta daleč. Vendar slednji podpira vse prejšnje verzije, kar je (po mojem mnenju) dobra lastnost. Ne morem si predstavljati, da najnovejši fortran ne bi podpiral starih verzij, saj ne bi bilo možno uporabljati starih numeričnih knjižnic, kar bi bila velika katastrofa za znanstvenike.
To je sedaj že zelo zašlo s tirnic v naslova, tako da ne bi veliko več o temu.
Se strinjam.
Prepričan sem da bi se dalo kodo prenesti med različnimi stopnjami orodji, tudi jezik po katerem sem spraševal je bil mišljen tisti v katerem si pisal v VS.
Bil je Basic. In koda se je dala prenesti, vendar ne brez popravkov.

Uporabniški avatar
GJ
Prispevkov: 2635
Pridružen: 27.1.2003 22:08

Odgovor Napisal/-a GJ »

Bom še jaz..
shrink napisal/-a:
Aha, potem ni bilo 40 let (no offense here).
Fiziki pač zaokrožujejo(mo).
In pretiravajo..

40 let nazaj v Sloveniji / Jugi ni bilo programabilnega reačunalnika, sploh.. :lol:
(Razen če tukaj ne misliš na 'reh'nšiber', ki pa ni nikoli podpiral fortrana. :lol: )
shrink napisal/-a:Sploh ni point v tem. FORTRAN4 in recimo FORTRAN2003 sta svetlobna leta daleč. Vendar slednji podpira vse prejšnje verzije, kar je (po mojem mnenju) dobra lastnost.
Podpirata verzije to drži.
Pri strojni opremi pa se vsa stvar nekoliko zaplete..
Torej če moram pretipkati ali pa preko OCR obdelati pol strani dol programček izpred 40, let ga lahko v tem istem času prevedem v pascal ali pa c.
shrink napisal/-a: Ne morem si predstavljati, da najnovejši fortran ne bi podpiral starih verzij, saj ne bi bilo možno uporabljati starih numeričnih knjižnic, kar bi bila velika katastrofa za znanstvenike.
Katerih knjižnic? Izpred 40 let?
Knjižnica je logična je oblika zapisa, podobno kot sam stari fortran, ki je bil standardiziran zelo zgodaj ravno zaradi tega. Torej res ne vem v čem vidiš problem? Če je v ozadju standard jo lahko bereš iz katerega koli probramskega jezika. Je pa res,da zato potrebuješ pismenega programerja.

...

In morda še to, da se dotaknem teme..
Pozabljata, da vsi moderni programski jeziki podpirajo objektno programiranje. In prav raba objektov oziroma klicanje vmesnikov (interface) predstavlja večinski del sodobnega progrmiranja, ki pa direktno sloni na klicih APIja. Vsak sodoben programski jezik je v tem trenutku zgolj 'lupina' pod katero se skriv API, vse ostalo pa je bolj ali manj sintaksa oziroma standard jezika. To pa je tudi osnovni problem združljivosti programiranja na različnih platformah! Obstoj tega problema pa je seveda tržne narave..

Lep deževen dan želim..

Odgovori