C# Win32 API

poruka: 83
|
čitano: 9.002
|
moderatori: XXX-Man, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
15 godina
offline
Re: C# Win32 API
Bitanga kaže...
NiGHT_RiDER92 kaže...

Aha, sad kuzim, nisam znao ovo za resource.

 

Pa "svugdje", gdje god se programiraju neke ozbiljnije aplikacije, igre, embedded sistemi, svugdje kazu da je C++ tu glavni.

 

Gle, zaboravi te sheme "koriste ovo ili ono". Tesko mozemo znati zasto su izabrali koji programski jezik u tom trenutku, a sigurno nisu birali na nacin koji im je ljepsi.

Moras se fokusirati na ono sto te zanima. Ako su to industrijska rjesenja, C++ ti je vjerojatno bolji zbog bolje manipulacije memorijom i vece kontrole nad njom, industrijski uredjaji vecinom nemaju swap diskove i silna cuda virtualne memorije, nesto slicno kao danasnji mobiteli.

 

No, ono sto moras znati, da danas programer mora biti kompletan. U zivotu ces raditi sa hrpom programskih jezika, ovisno o trenutnoj potrebi.

Fokusiranje na jedan je ok za pocetak, a za ucenje kako funkcionira to sve, bolje kreni sa C#-om. Ili kako bi kasnije znao cijeniti .NET, pocni sa C++om ;-)

Da, najviše što me smeta je to što Visual Studio 2010 nema Intellisense za C++, a ako bi vec krenuo sa C++ onda bi to bio managed C++, detaljnije učenje Win32 API-ja nema smisla, osim da skuzim kako zapravo rade programi (inače sam vec radio sa Win32, proucavao nesto), a MFC mi se opet čini kompliciran jako, a nema nekih kontrola za njega u toolboxu u VS, a sad za Win32 mi se jedino čini da se rabi kad se programiraju 3D engine-i i takve stvari ili se varam!?

15 godina
neaktivan
offline
Re: C# Win32 API
NiGHT_RiDER92 kaže...

Aha, nisam to nikad vidio dosad, ali cekaj ti kazes da ovi u Microsoftu to sve ručno pišu, što bi ovakav program mogao izgenerirati ako sam te dobro shvatio !?

Ne, i oni koriste vizualne editore za definiranje izgleda prozora, ono sto je ispod je otipkano rucno.

 

Sto bi takav program mogao izgenerirati?

Dvije datoteke, resource datoteku koja opisuje izgled prozora, i header datoteku koja sadrzi ID-ove svake kontrole u prozoru.

 

Resource datoteka: lol.rc

#include "resource.h"
#include <windows.h>
#include <commctrl.h>
#include <richedit.h>


//
// Dialog resources
//
IDD_DIALOG1 DIALOG 0, 0, 206, 113
STYLE DS_3DLOOK | DS_CENTER | DS_MODALFRAME | DS_FIXEDSYS | WS_VISIBLE | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_POPUP | WS_SYSMENU
CAPTION "Dialog"
FONT 8, "Ms Shell Dlg"
{
    DEFPUSHBUTTON   "OK", IDOK, 150, 5, 50, 14
    PUSHBUTTON      "Cancel", IDCANCEL, 150, 25, 50, 14
    EDITTEXT        IDC_EDIT1, 5, 5, 140, 80, ES_AUTOHSCROLL
    COMBOBOX        IDC_COMBO1, 150, 47, 50, 14, CBS_DROPDOWN | CBS_HASSTRINGS
    LTEXT           "Pozdrav Bug forumu!", IDC_STATIC, 7, 90, 67, 8, SS_LEFT
}

 

Header datoteka: resource.h

#ifndef IDC_STATIC
#define IDC_STATIC (-1)
#endif

#define IDD_DIALOG1                             100
#define IDC_EDIT1                               1002
#define IDC_COMBO1                              1003

 

Vise o svemu tome pogledaj ovdje, jer je preopsirno za forum.

Look at you, hacker. A pathetic creature of meat and bone, panting and sweating as you run through my corridors. How can you challenge a perfect, immortal machine?
Poruka je uređivana zadnji put čet 24.2.2011 19:53 (rustweaver).
15 godina
offline
Re: C# Win32 API
Bitanga kaže...
NiGHT_RiDER92 kaže...

Aha, sad kuzim, nisam znao ovo za resource.

 

Pa "svugdje", gdje god se programiraju neke ozbiljnije aplikacije, igre, embedded sistemi, svugdje kazu da je C++ tu glavni.

 

Gle, zaboravi te sheme "koriste ovo ili ono". Tesko mozemo znati zasto su izabrali koji programski jezik u tom trenutku, a sigurno nisu birali na nacin koji im je ljepsi.

Moras se fokusirati na ono sto te zanima. Ako su to industrijska rjesenja, C++ ti je vjerojatno bolji zbog bolje manipulacije memorijom i vece kontrole nad njom, industrijski uredjaji vecinom nemaju swap diskove i silna cuda virtualne memorije, nesto slicno kao danasnji mobiteli.

 

No, ono sto moras znati, da danas programer mora biti kompletan. U zivotu ces raditi sa hrpom programskih jezika, ovisno o trenutnoj potrebi.

Fokusiranje na jedan je ok za pocetak, a za ucenje kako funkcionira to sve, bolje kreni sa C#-om. Ili kako bi kasnije znao cijeniti .NET, pocni sa C++om ;-)

 

Manipulacije memorijom, koriste se pointeri za to, jeli tako? Ali koliko ja znam i C# podržava upotrebu pointera u unsafe modu.

16 godina
online
Re: C# Win32 API
NiGHT_RiDER92 kaže...

 a sad za Win32 mi se jedino čini da se rabi kad se programiraju 3D engine-i i takve stvari ili se varam!?

 

Za to bi radio u OpenGLu ili DirectXu. DirectX mozes iz C# isto pisati, dobit ces malo manje FPSa.

Win32 je API, nema veze s programskim jezikom. Isto kao sto je .NET Framework API, odnosno kao sto je MFC API.

Samo sto u .NETu mozes pisati u bilo kojem programskom jeziku koji podrzava CLR (odnosno CLI - Common Language Infrastructure, i CTS - Common Type System)

15 godina
offline
Re: C# Win32 API

Aha, meni to nije bilo baš jasno, jer sam vidio neke tutoriale za DirectX i svugdje su koristili Win32 API pa sam mislio da se opcenito Win32 koristi kad se igre pišu pa se to miješa sa DirectX-om, nisam to nikad radio niti vidio nekoga da bilo sto tako radi pa zato i pitam, a po netu svasta ima pa ni sam neznam sta je tocno pa bolje pitati nekoga tko se vise razumije u to :)

16 godina
online
Re: C# Win32 API
NiGHT_RiDER92 kaže...

 

Manipulacije memorijom, koriste se pointeri za to, jeli tako? Ali koliko ja znam i C# podržava upotrebu pointera u unsafe modu.

 

Mislim prvenstveno na to sto u C++u moras rucno alocirati memoriju i brinuti se da ju otpustis dok ti vise ne treba, inace izazoves memory leakove i na kraju srusis aplikaciju (ranije i windowse - al su to sad malo poboljsali).

.NET ima Garbage Collection (ukljucujuci i managed C++), di se garbage collector, odnosno sam CLR runtime brine o tome da dok vise ne koristis taj objekt (nema nijedne reference na njega) da ga obrise i oslobodi memoriju. To ti je super u 90% slucajeva i ubrzava razvoj enormno. Naravno, ako ti to nije dovoljno, uvijek mozes koristiti unsafe mode.

Poruka je uređivana zadnji put čet 24.2.2011 20:13 (Bitanga).
16 godina
online
Re: C# Win32 API
NiGHT_RiDER92 kaže...

Aha, meni to nije bilo baš jasno, jer sam vidio neke tutoriale za DirectX i svugdje su koristili Win32 API pa sam mislio da se opcenito Win32 koristi kad se igre pišu pa se to miješa sa DirectX-om, nisam to nikad radio niti vidio nekoga da bilo sto tako radi pa zato i pitam, a po netu svasta ima pa ni sam neznam sta je tocno pa bolje pitati nekoga tko se vise razumije u to :)

 

Svakako ti je najbolje kupiti/skinuti neku noviju knjigu, to je problem kod programiranja, sto sve to toliko brzo napreduje po svim frontama, da ne stignes pratiti dok radis svoj posao.

Kupis knjigu, ni ne procitas ju, vec ima nova verzija i tako. Na kraju se sve svede na hrpu googlanja :-) Onda dok ti rikne net, ili si negdje na terenu bez interneta, onda si u banani :-D

15 godina
offline
Re: C# Win32 API

Pa da, ali ispada da onda ustvari sa C# možeš potpuno sve isto napraviti što i sa C++ kad se može Win32 koristiti, možeš koristiti pointere i takve stvari, jedino što ne izradi inline assembly kod koji je kolega maloprije spomenuo, jel?

15 godina
offline
Re: C# Win32 API
Bitanga kaže...
NiGHT_RiDER92 kaže...

Aha, meni to nije bilo baš jasno, jer sam vidio neke tutoriale za DirectX i svugdje su koristili Win32 API pa sam mislio da se opcenito Win32 koristi kad se igre pišu pa se to miješa sa DirectX-om, nisam to nikad radio niti vidio nekoga da bilo sto tako radi pa zato i pitam, a po netu svasta ima pa ni sam neznam sta je tocno pa bolje pitati nekoga tko se vise razumije u to :)

 

Svakako ti je najbolje kupiti/skinuti neku noviju knjigu, to je problem kod programiranja, sto sve to toliko brzo napreduje po svim frontama, da ne stignes pratiti dok radis svoj posao.

Kupis knjigu, ni ne procitas ju, vec ima nova verzija i tako. Na kraju se sve svede na hrpu googlanja :-) Onda dok ti rikne net, ili si negdje na terenu bez interneta, onda si u banani :-D

Da, to se slažem s tobom, mene je jedino najviše mučilo to što sam mislio i primjetio nekako da su C# programeri podcijenjeniji jer kao C++ je jači, C++ je ovo, C++ je ono tako da...

15 godina
neaktivan
offline
Re: C# Win32 API
NiGHT_RiDER92 kaže...

Pa da, ali ispada da onda ustvari sa C# možeš potpuno sve isto napraviti što i sa C++ kad se može Win32 koristiti, možeš koristiti pointere i takve stvari, jedino što ne izradi inline assembly kod koji je kolega maloprije spomenuo, jel?

Ovo uzmi sa zrnom soli, ja *mislim* da C# ne podrzava inline assembly, ali nisam siguran.

Look at you, hacker. A pathetic creature of meat and bone, panting and sweating as you run through my corridors. How can you challenge a perfect, immortal machine?
15 godina
offline
Re: C# Win32 API
rustweaver kaže...
NiGHT_RiDER92 kaže...

Pa da, ali ispada da onda ustvari sa C# možeš potpuno sve isto napraviti što i sa C++ kad se može Win32 koristiti, možeš koristiti pointere i takve stvari, jedino što ne izradi inline assembly kod koji je kolega maloprije spomenuo, jel?

Ovo uzmi sa zrnom soli, ja *mislim* da C# ne podrzava inline assembly, ali nisam siguran.

Pa ali recimo da podržava (makar nebi rekao) onda se praktički doslovno sve može s njime napraviti što i sa C++, ne !?

15 godina
neaktivan
offline
Re: C# Win32 API
NiGHT_RiDER92 kaže...

Pa ali recimo da podržava (makar nebi rekao) onda se praktički doslovno sve može s njime napraviti što i sa C++, ne !?

Ako mislis na pisanje OS-a onda opet ne. Prvo bi morao dobari dio .net frameworka implementirati (i to u nekom low level jeziku), da bi se C# mogao izvrsavati.

 

Gledaj kako to ide:

Assembly -> nativni strojni jezik.

C -> nativni strojni jezik.

C++ -> nativni strojni jezik.

 

C# -> CIL -> nativni strojni jezik.

Managed C++ -> CIL -> nativni strojni jezik.

 

Inace, nema smisla da C# podrzava inline assembly zato sto bi se i assembler kôd morao prevoditi u CIL, pa tek onda u nativni kôd sto bi ponistilo sve moguce dobitke kod koristenja assemblyja.

Look at you, hacker. A pathetic creature of meat and bone, panting and sweating as you run through my corridors. How can you challenge a perfect, immortal machine?
Poruka je uređivana zadnji put čet 24.2.2011 20:22 (rustweaver).
16 godina
online
Re: C# Win32 API
NiGHT_RiDER92 kaže...

Pa da, ali ispada da onda ustvari sa C# možeš potpuno sve isto napraviti što i sa C++ kad se može Win32 koristiti, možeš koristiti pointere i takve stvari, jedino što ne izradi inline assembly kod koji je kolega maloprije spomenuo, jel?

 

C# je jezik, ako netko napise kompajler za PLC, za linux, za rover, onda ces moci i u njemu programirati tamo :-)

C# je vrlo mocan jezik, u 4.0 inkarnaciji poprilicno.

 

Jedina razlika izmedju C++a i C#a koju bih ovako istakao je da C# dozvoljava samo single inhertiance, tj svakak klasa se moze naslijediti iz samo jedne klase, dok C++ dozvoljava naslijedjivanje od n klasa.

To je po CTS specifikaciji. Ustvari, ako cemo bas biti fer, C# dozvoljava naslijedjivanje od dvije klase. One koju nasljedjujes i System.Objecta, jer se sve naslijedjuje iz Objecta.

 

U C#u mozes sve, to je cinjenica. Kod ce biti malo memorijski neefikasan, i zbog JIT kompajlera zericu sporiji (iako bi se dalo dosta diskutirati oko toga), ali to ima i svoje prednosti kao i nedostatke, pa nije upitno.

JIT kompajler omogucava da ti se isti kod izvrsava na razlicitim arhitekturama bez da kompajliras 10 vrsta EXE fileova za svaku platformu.

Svi .NET kompajleri kompajliraju kod u MSIL (MS Intermediate Language), low level medjujezik, koji prilikom izvodjenja JIT kompajler kompajlira u native kod prilagodjen procesoru na kojem se izvodi .NET CLR (Common Language Runtime).

 

Eto ti sad puno novih termina :-P

 

15 godina
offline
Re: C# Win32 API

Aha, puno stvari mi je jasnije sad, znaci onda ustvari kojim god jezikom da "za stvarno" krenem, necu pogrijesit a opet da naucim i C# znaci onda da znam i Javu jel?

16 godina
online
Re: C# Win32 API
NiGHT_RiDER92 kaže...

Aha, puno stvari mi je jasnije sad, znaci onda ustvari kojim god jezikom da "za stvarno" krenem, necu pogrijesit a opet da naucim i C# znaci onda da znam i Javu jel?

 

Po meni, bitnije je da naucis razmisljati, kao programer :-)

Nakon toga, u stvarnom zivotu ce ti biti puno lakse jer ces ovisno o projektu vrlo lako svladati bilo koji jezik ako ce trebati.

Naravno, ima puno toga i u iskustvu, al s necim moras poceti.

 

Mislim da se ipak trazi puno vise developera poslovnih rjesenja, nego da sad zivis u nekoj zabludi da ces programirati OSove ili industrijske uredjaje.

To je manja sansa, al ne znaci da neces ako budes htio :-)

15 godina
offline
Re: C# Win32 API

Pa u Hrvatskoj svakako ne, ali cujem da se u inozemstvu traže programeri (doduše s iskustvom) industrijskih uređaja i takvih stvari, pa zašto ne !? :)

16 godina
protjeran
offline
C# Win32 API

Mozda najbolje da probas sve, da se ne zderes poslije sto nisi ni probao. Ali najvjerovatnije ces se najbolje osjecati u nekom C#, ti stari jezici iz "predratnog" (lol) razdoblja su zastarjeli u ovim win7 okruzenjima..

 
1 0 hvala 0
14 godina
offline
C# Win32 API
Koliko se i gdje traze Java programeri?
 
0 0 hvala 0
15 godina
offline
Re: C# Win32 API
bnaci kaže...

Mozda najbolje da probas sve, da se ne zderes poslije sto nisi ni probao. Ali najvjerovatnije ces se najbolje osjecati u nekom C#, ti stari jezici iz "predratnog" (lol) razdoblja su zastarjeli u ovim win7 okruzenjima..

Mozda i jesu iz "predratnog" razdoblja, ali mene zanima šta se s njima moze, netreba mi da ucim jezik u kojem nemogu nesto konkretno napravit, koji je jako ograničen.

15 godina
neaktivan
offline
Re: C# Win32 API
NiGHT_RiDER92 kaže...

Mozda i jesu iz "predratnog" razdoblja, ali mene zanima šta se s njima moze, netreba mi da ucim jezik u kojem nemogu nesto konkretno napravit, koji je jako ograničen.

Tu se uglavnom govori o programskim jezicima opce namjene, tako da svi mogu sve. Kad bi za C# postojao compiler kao i za C i C++ tada bi i u njemu mogao pisati drivere, OS i slicno...

Moras shvatiti da nije jezik sam po sebi ogranicenje, nego cesto alati koji su za njega nacinjeni.

Recimo Python je interpretirani jezik i zbog toga moze samo sanjati o brzini kakvu imaju compilirani jezici, ali to ne znaci da netko ne moze napisati compiler za Python cime bi bio potpuno konkurentan ostalim compiliranim jezicima.

Look at you, hacker. A pathetic creature of meat and bone, panting and sweating as you run through my corridors. How can you challenge a perfect, immortal machine?
16 godina
online
Re: C# Win32 API
KKristijan kaže...
Koliko se i gdje traze Java programeri?

 

Ha cuj, ne znam za sto su se do sad trazili, al sad ce se traziti sve vise s obzirom na prodor Androida u sve i svasta.

Tako da je Java jako dobila na popularnosti u zadnjih godinu dana.

14 godina
offline
C# Win32 API
Eto,ja radim godinu dana cpp,a o njemu pojma nemam.Nisam se makao od konzolnih appova,samo sam naucio malu gomilu algoritama i sad bih htio nesto vise,tj.pozabavit se OOPom,necim u praksi.Programiranje me kao takvo zanima,ali sam za ista dalje od matematickih zadacica totalni njab.E sad bih trebao pomoc oko puta dalje..cpp ili nesto drugo?
logika ne postoji.
 
0 0 hvala 0
15 godina
neaktivan
offline
Re: C# Win32 API
KKristijan kaže...
Eto,ja radim godinu dana cpp,a o njemu pojma nemam.Nisam se makao od konzolnih appova,samo sam naucio malu gomilu algoritama i sad bih htio nesto vise,tj.pozabavit se OOPom,necim u praksi.Programiranje me kao takvo zanima,ali sam za ista dalje od matematickih zadacica totalni njab.E sad bih trebao pomoc oko puta dalje..cpp ili nesto drugo?

To te ne ogranicava C++, i u Javi bi jednako zaglavio na konzolnim programcicima. Ako te zanima GUI onda se pozabavi WinAPI-jem, MFC-om, QT-om i slicnim bibliotekama za rad s GUI-em. Ako je 3D grafika u pitanju onda je Direct3D ili OpenGL ono sto trazis. Za jednostavnu 2D grafiku imas SFML i SDL. Za zvuk OpenAl...

 

Pitanje je, sto ti zapravo zelis raditi s tim C++-om koji si naucio?

Look at you, hacker. A pathetic creature of meat and bone, panting and sweating as you run through my corridors. How can you challenge a perfect, immortal machine?
14 godina
offline
C# Win32 API
GUI appovi,a i 3D :p.Al opet..nemam pojma odakle to nauciti,sto koristit..Samo znam ukljucit dev i rjesavat zadatke s natjecanja
logika ne postoji.
 
0 0 hvala 0
15 godina
neaktivan
offline
Re: C# Win32 API
KKristijan kaže...
GUI appovi,a i 3D :p.Al opet..nemam pojma odakle to nauciti,sto koristit..Samo znam ukljucit dev i rjesavat zadatke s natjecanja

Za 3D ti je potrebno dobro znanje matematike, a za GUI programiranje (znaci samo sucelje), ti treba samo malo strpljenja.

 

Nacin izrade GUI aplikacije ce ti uvelike diktirati IDE koji koristis. Ako koristis nesto tipa DevCPP ili Code::Blocks onda si zaglavio sa WinAPI-jem, ili nekom od portable GUI biblioteka (WXwidgets, GTK, QT). Visual Studio ce ti puno olaksati izradu GUI aplikacija na Windows platformi.

 

Sto se 3D-a tice, to je uglavnom svugdje isto i prilicno jednostavno (ako te matematika ne hebe). Za npr. OpenGL ti je dovoljno includeati par OpenGL headera i linkati sa par biblioteka kojima pripadaju ti headeri i spreman si.

 

Za OpenGL imas super tutoriale na NeHe-ovom siteu. Direct3D tutoriale bi isto trebalo biti lako naci. Googlas "Directx C++ programming" ili nesto slicno i dobit ces svasta.

Look at you, hacker. A pathetic creature of meat and bone, panting and sweating as you run through my corridors. How can you challenge a perfect, immortal machine?
Poruka je uređivana zadnji put pet 25.2.2011 1:02 (rustweaver).
16 godina
neaktivan
offline
Re: C# Win32 API
KKristijan kaže...
GUI appovi,a i 3D :p.Al opet..nemam pojma odakle to nauciti,sto koristit..Samo znam ukljucit dev i rjesavat zadatke s natjecanja

  Poviri na http://nehe.gamedev.net/ za tutoriale vezane uz openGL

14 godina
protjeran
offline
Re: C# Win32 API
rustweaver kaže...
NiGHT_RiDER92 kaže...

Mozda i jesu iz "predratnog" razdoblja, ali mene zanima šta se s njima moze, netreba mi da ucim jezik u kojem nemogu nesto konkretno napravit, koji je jako ograničen.

Tu se uglavnom govori o programskim jezicima opce namjene, tako da svi mogu sve. Kad bi za C# postojao compiler kao i za C i C++ tada bi i u njemu mogao pisati drivere, OS i slicno...

Moras shvatiti da nije jezik sam po sebi ogranicenje, nego cesto alati koji su za njega nacinjeni.

Recimo Python je interpretirani jezik i zbog toga moze samo sanjati o brzini kakvu imaju compilirani jezici, ali to ne znaci da netko ne moze napisati compiler za Python cime bi bio potpuno konkurentan ostalim compiliranim jezicima.

Već je i napisan kompajler za python - py2exe koji radi svoj posao odlično.

Drago mi je.
14 godina
offline
Re: C# Win32 API
rustweaver kaže...
KKristijan kaže...
GUI appovi,a i 3D :p.Al opet..nemam pojma odakle to nauciti,sto koristit..Samo znam ukljucit dev i rjesavat zadatke s natjecanja

Za 3D ti je potrebno dobro znanje matematike, a za GUI programiranje (znaci samo sucelje), ti treba samo malo strpljenja.

 

Nacin izrade GUI aplikacije ce ti uvelike diktirati IDE koji koristis. Ako koristis nesto tipa DevCPP ili Code::Blocks onda si zaglavio sa WinAPI-jem, ili nekom od portable GUI biblioteka (WXwidgets, GTK, QT). Visual Studio ce ti puno olaksati izradu GUI aplikacija na Windows platformi.

 

Sto se 3D-a tice, to je uglavnom svugdje isto i prilicno jednostavno (ako te matematika ne hebe). Za npr. OpenGL ti je dovoljno includeati par OpenGL headera i linkati sa par biblioteka kojima pripadaju ti headeri i spreman si.

 

Za OpenGL imas super tutoriale na NeHe-ovom siteu. Direct3D tutoriale bi isto trebalo biti lako naci. Googlas "Directx C++ programming" ili nesto slicno i dobit ces svasta.

 

Eto nemoj te se smijat...ali sta je to WinAPI ?{#}

 

logika ne postoji.
15 godina
neaktivan
offline
Re: C# Win32 API
Bypass kaže...

Već je i napisan kompajler za python - py2exe koji radi svoj posao odlično.

To nije compiler nego binder...

Look at you, hacker. A pathetic creature of meat and bone, panting and sweating as you run through my corridors. How can you challenge a perfect, immortal machine?
15 godina
neaktivan
offline
Re: C# Win32 API
KKristijan kaže...

Eto nemoj te se smijat...ali sta je to WinAPI ?{#}

Ogroman set sistemskih funkcija windowsa za sve i svasta.

 

Idu od funkcija za alokaciju memorije, rad sa datotekama, do GDI poziva.

Pogledaj vise o tome: ovdje.

Look at you, hacker. A pathetic creature of meat and bone, panting and sweating as you run through my corridors. How can you challenge a perfect, immortal machine?
Nova poruka
E-mail:
Lozinka:
 
vrh stranice