» »

VS C++

VS C++

Microsoft ::

Zanima me, če ima kdo kak primer v VS C++ napisanega programa, da bi bil nek enostavn program, pa da bi imel zraven vključen še vizualni del?

Rabil bi predvsem zato, da bi videl, kako je treba vse skupaj nastavit, da program bere vrednosti od "vizualnega dela" programa in kako posreduje informacije "vizulanem delu". Skratka predvsem kako narediti komunikacijo med vizualnim delom in med neko C kodo.

To rabim zato, da bi si ogledal zgradbo patega programa.

Pa še eno me zanima, kako naj dostopam do zvpčne kartice in kako naj vpisujem v njo. Kupil bi kako knjigo, če obstaja na to tematiko. Mogoče kdo pozna kaj takega? Pa glede tistega ASIO, kako naj to stvar nekako uporabim pri programiranju? Pa nikjer nisem točno zasledil, kaj to sploh je.

Pa kaj prdelagate, da začnem delat v tem Cju, da bi potem lahžje začel programirati programe, ki bodo delali z zvočno kartico?


by Miha
s8eqaWrumatu*h-+r5wre3$ev_pheNeyut#VUbraS@e2$u5ESwE67&uhukuCh3pr

BigWhale ::

Napisi hello worl application!

File | New Project | Console Application

odpres main.cpp

med

int main (...) {

in

}


napises: printf("Hello World\n");

prevedes in pozenes... Ce dela si na dobri poti... potem napises program, ki ti na ekran napise stevila od ena do deset...

Ko znas to, napises program, ki ti sesteje dve stevilki... ki jih uporabnik sam vnese... Potem pa nardis en class dog in ga najprej obudis in pol se ubijes.. tolk da vidis kako delajo objekti...
... no potem pa gres delat hello wolrd, ki je windows application...

tko nekak...

Ne da hoces laufat ampak letel bi rad, pa se hodit ne znas :P

Vesoljc ::

kaj hodit, puzat ;)

v tem oddelku maš temo C++ Povezave kjer lahko najdeš res ogromno tutorialov (sicer english), če pa ti to ni zadosti, pa pejt v kako tehniško knjižnico pa boš ziher najdu kej v slovenščini...
Abnormal behavior of abnormal brain makes me normal...

Microsoft ::

BigWhale, kar se tiče tistih programov, da sešteje neke številke pa pol prikaže sm jst že kr neki naredil. Ampak vsi so bili Console Application. Recimo, enega ki se zdele spomnim je, da izračuna ploščino pod funkcijo f(x)=x^2 od x€[0,1]. Mislim, da imam sedaj dovolj teh Console Application in kot si napisal, bi bilo potrebno sedaj iti na windows application.

In tu se mi sedaj vsa stvar ustavi. V šoli sem do sedaj delal vaje vse v Console Application in zato nevem, kako gre kaj stvar pri windows application. In ta korak zdej ne znam narediti. Recimo, tudi nevem, kaj je .dll (nek sem prebral, kaj kratica pomeni, ampak uporabljati pa ne znam...).

Obema pa: "Hočem letat v roku 10 let in ne že kar jutri. Imam samo nek dolgoročen cilj" ;)


by Miha
s8eqaWrumatu*h-+r5wre3$ev_pheNeyut#VUbraS@e2$u5ESwE67&uhukuCh3pr

Zgodovina sprememb…

Vesoljc ::

za začetek tole...
uganeš kje sem tole našel? 8-)

10 let praviš? po koliko ur na dan, pravim jaz... :P
Abnormal behavior of abnormal brain makes me normal...

Microsoft ::

Vesoljc, hvala za tole. Pogledal bom jutri, ker bom danes šel malo prej spat... Kolker sem usple pogleda, sem videl, da slike prikazujejo, kako izdelat neko okno, s katerim lahko potem kaj delaš. Hm, mislim, da bo tole dober začetek.8-)

Verjetno si našel s pomočjo googla, sm jst sm v tem iskanju tak nekot smota... Damn.;((

10 let po recimo 70 ur/teden. To nebo problem, ko jst enkrat "padem noter". S tem mislim to, da ko jst enkrat sistem pogruntam, pa ko lahka pol začnem pisat vsemogoče programe, ni problema bit za PCjem tolko časa.

Recimo, ko sem videl, kako grejo programi v Console Application, sm začel pisat vsemogoče programe, pa to ne za šolo, ampak tak za sebe. Recimo, kot sm že mal višje omenil, program, ki računa površino pod funkcijo (integral) pa zdele sm se še kr tak spomnu, pa naredu program, ki išče praštevila istočasno pa izpiše, s katerim števili so ostala števila deljiva.
Pač, to so bli neki taki uvodni programi, zdej bi pa pač rad šel na mal bolj... pač, tisto, od česar mislim nekoče živeti.;)


by Miha
s8eqaWrumatu*h-+r5wre3$ev_pheNeyut#VUbraS@e2$u5ESwE67&uhukuCh3pr

Zgodovina sprememb…

BBB ::

Tudi sam sem naletel na podoben problem, saj v sklopu samega jezika C++ ni nikakrsnih razredov za izdelavo graficnega vmesnika. Uporabljati je treba razrede, funkcije, lastnosti in konstante (MFC, Windows API), ki pa so del razvojnega okolja (prevajalnik jih doda v program) in so specificne za operacijski sistem Windows - program enostavno ni prenosliv med sistemi.

A MFC sploh se pride v postev pri Visual Studio .NET oz. kako je pri .NET resen graficni vmesnik?

Zgodovina sprememb…

  • spremenilo: OwcA ()

Microsoft ::

No, jst sm zdej začelučit, kak kej te programe delat....

Na tisti strani, ki jo je Vesoljc dal, nekaterih primerov (MFC) ne moreš dol potegnat, piše da so na nekem CDju. Če greš pol tam, da bi pogledal ali pa naročil CD, piše, da je stran še v izdelavi.

Stran je sej za mene vredu! Me pa za anprej zaniam, če obstaja kka CD/knjiga/www za nadaljne učenje izdelave takih programov?


by Miha
s8eqaWrumatu*h-+r5wre3$ev_pheNeyut#VUbraS@e2$u5ESwE67&uhukuCh3pr

Vesoljc ::

ja, reče se ji msdn :D
Abnormal behavior of abnormal brain makes me normal...

Microsoft ::

Vesoljc, in kje to lahka kupiš?

BBB ne uporablam eMule...;)


by Miha
s8eqaWrumatu*h-+r5wre3$ev_pheNeyut#VUbraS@e2$u5ESwE67&uhukuCh3pr

mare_ ::

Vesoljc ::

vse se da kupit... ;)
Abnormal behavior of abnormal brain makes me normal...

ElectricMan ::

na faksu FRI-ju lahko izposodiš zastonj, samo če si študent :D

d-mon ::

Ah...
Kje so ti casi, ko sem se sam ucil :)

No en manjsi tutorialcek kako pisat programe z MFC.
1. Startas Visual studio
2. Das new project
3. izberes MFC application
4. Nastavis na Dialog Based
5. Klikni Finish
--- zdej se ti pokaze dialog pa neki na njemu pise...zbrisi kar pise.
6. Narisi en gumb.
7. 2x klikni nanj (dodala se bo koda za klik)
8. pobrisi //TODO: komentar
9. Napisi AfxMessageBox("Oh, Oh, Oh, World...Helloooo");
--- pazi da bo res pisalo "Oh, Oh, Oh, World...Helloooo" za cim vecji ucinek.
10. Nabij tipko F5. Vprasa te ce bi rad se prej skompajlal, pa reci, da bi rad.
11. Klikn knof, ki si ga prej narisal.

Koncal ne tutorial "Oh, Oh, Oh, World...Helloooo" v MFCju.
Đabe.

Aja, pa tko, ce bo kdo kritiziral, da MFC ni dobr pa kej. Vecino Autodesk Autocad-a je pisanega v MFC, Worms World Pary je napisan v MFC. Pa se kej bi se naslo.
Tko da brez problema uporabljate.

Vizija v prihodnost: CIM PREJ NA .NET! Tam je programiranje windows aplikacij se vecje đabe kot pa v MFC.
[D-mon]

Microsoft ::

Zdej sm naredil že nekaj prvih korakov. Naletel sem pa na sledeč problem. Uro in datum lahko prikažem v okno. Ne znam pa narediti nekega osveževanja. Kako bi to izvedel?


by Miha
s8eqaWrumatu*h-+r5wre3$ev_pheNeyut#VUbraS@e2$u5ESwE67&uhukuCh3pr

d-mon ::

Ce je osvezevanje graficni del, potem lahko klices funkcijo InvalidateControl, ki prisili funcijo OnPaint, da se izvede, ko ti zelis.

Ce te mucijo problemi kako recimo spremeniti vrednost v kaksnem edit boxu ali pa kaj podobnega imas pa na razpolago UpdateData() (ce uporabljas DDE).
Ce ne uporabljas DDE, potem imas na razpolago funkcije v stilu SetDlgItemText().

Mislim, da obstaja tudi funkcija UpdateWindow za window refresh (ce InvalidateControl ne dela - ker ta dela na COM objektih).

MSDN Doc:
Ce se vedno delas v MFC potem pojdi gledat help za CWnd in za CDialog.
Ce ne delas, potem pojdi gledat pod Platform SDK: Windows User Interface.
[D-mon]

Microsoft ::

No, trenutno imam vse skupaj narejeno nekako takole.

V funkciji afx_msg void CMainWin::OnPaint() kličem dc.TextOut(15, 15, TimeString, strlen(TimeString)); . S tem se mi pač izpiše čes, datum, dan, ki pa je shranjen v TimeString.

Samo, da se mi prikaže čas, morem iti pod file, pa tam izbrati time. jaz bi pa enostavno rad napisal del programa, ki bi se izvajal recimo vsako sekundo.

Poskušal sem že tako, da bi si najprej shranil TimeString v TimeString2. Potem bi pa čakal tako dolgo, da se bi TimeString razlikoval v pimerjavi z TimeString2 (ko bi ura "skočla" za eno sekundo naprej) in bi takrat TimeString2 prepisal z TimeString, istočasno pa bi izpisal nov čas.

Druge ideje trenutno nimam. Me pa zanima, kako narediti funkcijo, ki se bo izvajala v določenih časovnih intervalih in ki bi lahko klicala druge funkcije. V mojem primeru bi to bilo osveževanje prikaza trenutnega časa.

Poskusil sem z InvalidateControl() in UpdateWindow(), vendar nevem, kaj naj te funkcije kličejo. Pa ali jih morem postaviti v kako drugo funcijo ali naj bo to funkcija čisto za sebe?

Imam pa tudi tako naredo, da ko prestavim miško, se spremenijo tudi koordinate le te in se seveda izpišejo. Vendar, pri tem se refreš zgodi takrat, ko miško pemaknem. Isto je z tipkovnico.
Jaz bi rad mel nek interni časovni referš. To je vse.;) Zaenkrat.:D


by Miha
s8eqaWrumatu*h-+r5wre3$ev_pheNeyut#VUbraS@e2$u5ESwE67&uhukuCh3pr

Zgodovina sprememb…

Vesoljc ::

lahko uporabiš gdi funkcijo InvalidateRect

BOOL InvalidateRect(
HWND hWnd, // handle of window with changed update region
CONST RECT *lpRect,
// address of rectangle coordinates
BOOL bErase // erase-background flag
);

Parameters
hWnd
Handle to the window whose update region has changed. If this parameter is NULL, the system invalidates and redraws all windows, and sends theWM_ERASEBKGND and WM_NCPAINT messages to the window procedure before the function returns.
lpRect
Pointer to a RECT structure that contains the client coordinates of the rectangle to be added to the update region. If this parameter is NULL, the entire client area is added to the update region.
bErase
Specifies whether the background within the update region is to be erased when the update region is processed. If this parameter is TRUE, the background is erased when the BeginPaint function is called. If this parameter is FALSE, the background remains unchanged.
Return Values
If the function succeeds, the return value is nonzero.

If the function fails, the return value is zero.

bo šlo?
Abnormal behavior of abnormal brain makes me normal...

Microsoft ::

Če napišem BOOL InvalidateRect(HWND CMainWin() , CONST RECT *lpRect, BOOL bErase); , mi napiše, redefinition. Vse skupaj se že nahaja v knjižici winuser.h .

Drgače pa nisem glih zastopil, kaj naj napiešm namesto hWnd, lpRect in bErase. Namesto hWnd sem dal CMainWin(). S to funkcijo ustvarim glavno okno.
Ne razumem pa točno, kaj morem namesto teh treh napisati? Sedaj sem napisal funkcije. Prva funkcija je tista, ki ustvari okno. Namesto lpRect in bErase sem napisal isto funkcijo. Tisto, v kateri se ura prenese v TimeString in istočasno izpiše dc.TextOut(15, 15, TimeString, strlen(TimeString));. Vendar stvar se ne osvežuje. Edino takrat, ko recimo prestavim miško...

Pa to funkcijo lahko recimo polem postavim čisto zunaj, da ni v nobeni funkciji?

In kaj potem ta funkcija točno dela? Kdaj bo obnovila okno oz. v mojem primeru čas?


by Miha
s8eqaWrumatu*h-+r5wre3$ev_pheNeyut#VUbraS@e2$u5ESwE67&uhukuCh3pr

Vesoljc ::

jah valda da ti napiše, da je redefinicja, če pa je funkcija že definirana... ti jo moraš samo klicat, nič več...

podat ji pa moraš, HWND, torej handle do windowa... najprej kreiraš window, "zveš" njegov hwnd, ter ga vržeš notri...

potem ji podaš še naslov od strukture RECT, ki predstavlja okvir/pravokotnik, ki bi ga rad ponovno izrisal... če se ne motim, moraš un tekst itaq izrisovat nekje, ponavadi kar v enem pravokotniku... samo koordinate ugotoviš, nafilaš eno novo spremenljivko tipa RECT, ter njen naslov podaš funkciji invalidate...
na koncu podaš še true in to je to...

sploh maš msdn?
Abnormal behavior of abnormal brain makes me normal...

Microsoft ::

Okno jaz kreiram takole:
CMainWin::CMainWin()
{
Create(NULL, "Krenki", WS_OVERLAPPEDWINDOW,
rectDefault, NULL, MAKEINTRESOURCE(IDR_MENU1));
...

Kako naj sedaj izvem njegov hwnd in kam noter ga nej zdej vržem?

Potem glede druge zadeve mi je še manj jasno. Uro izpisjuem takole: dc.TextOut(15, 15, TimeString, strlen(TimeString)); . Se pravi, da koordinate poznam (15, 15).
kak si pol mislu, da bi neki nafilal neko novo spremenljivko tipa RECT, pa da pol njen naslov podaš funkciji invalidate. Pa nakoncu da še true.

In kaj moram napisati tam, ko je BOO LbErase?

Pa stavr je okvirno recimo takela. V funkciji CMainWin::CMainWin() kreiram okno, v funkciji afx_msg void CMainWin::OnPaint() pa potem narišem. Sedaj bi samo rad, da se funkcija afx_msg void CMainWin::OnPaint() izvrš recimo vsako sekundo. To je to.0:)

MSDN nimam. Kaj je to? Bi si s tem lahko kaj pomagal pri programiranju? Se da DLjat? Kupit?


by Miha


p.s.: Se da s temle MFC ju narediti takšnole vizualizacijo? klik
s8eqaWrumatu*h-+r5wre3$ev_pheNeyut#VUbraS@e2$u5ESwE67&uhukuCh3pr

Zgodovina sprememb…

Vesoljc ::

jest nimam več moči...
klik
znajdi se...
Abnormal behavior of abnormal brain makes me normal...

slawc ::

Hm, se okna ne znas narest, ti bi pa vizualizacijo... :D
Mal se pocak.

zakaj ne pogledas help od funkcije Create? Sem skoraj preprican sem da ti vrne handle objekta, ki ga je kreiral, ce ne direktno pa preko parametra. CreateWindow ga namrec vrne.
Ce ne pa poisci metode in lastnosti objekta CMainWin, nekaj v stiluGetWinHandle() ali kaj
LP, Slawc

Zgodovina sprememb…

  • spremenil: slawc ()

Microsoft ::

Dej slawc, prosm nehi s takim, no. Nikjer nisem napisal, da sem se zdele tega lotil. Vprašal sem samo, če je možno z MFC kaj takega narediti. Ti si pa besede zdej kr obrnu na to, da sm se že kar take stvari lotil.

Drgač me pa zanima, od kje vam vsi ti podatki, kak pa kaj je treba narediti, da bo stvar pravilno delovala? Drgače pa kot že naslov dela, delam v Visual Studio 6.0 C++. Če sem prav razumel, naj potem tu v Helpu poiščem te stvari. Mi lahko data en konkreten primer. Morem rečt, da še nisem nič kaj gledal v Help... Se bom pa sedaj tega lotil.

Če je pa na tistih www straneh kaj takega, da bi moral vlko DLjat, pa trenutno ne bo šlo, ker sm sedajle na ISDN. Ko pridem na kabel, bo boljše. No, bomo videli.


by Miha

p.s.:Kaj prinaša VS .NET pri programiranju vizualizacij (linki, ki sem ga dal zgoraj) ?
s8eqaWrumatu*h-+r5wre3$ev_pheNeyut#VUbraS@e2$u5ESwE67&uhukuCh3pr

Zgodovina sprememb…

Vesoljc ::

če si dobil celoten paket visual studio6, mora biti zraven tudi MSDN na dveh cedejih...

primer bi rad?
VC6 -> Help -> Index -> v levo okence vpišeš recimo CreateWindowEx in že si prkloplen :|
Abnormal behavior of abnormal brain makes me normal...

Microsoft ::

Žal mam "odprtokodni" Visual Studio 6.0. Napiše mi: The MSDN collection does not exist.

Se prav, da bi mogu met še dva CDja, kjer je gor ta MSDN? Se da to kje kupt v Sloveniji? Cena?


by Miha
s8eqaWrumatu*h-+r5wre3$ev_pheNeyut#VUbraS@e2$u5ESwE67&uhukuCh3pr

Microsoft ::

No, zdele sm malo posurfal, pa sm našel, da si lahka v šoli izposodim Visual Studio 6.0 Enterprise Edition. Kaj ta že vsebuje tista dva CDja z MSDNjem?

Drgače si lahko pa še sposodim MSDN Library November 2001.Bo to vredu, glede na letnico 2001. Upam, da ni to kaj zastarelega...

Pa zanima me, če se v VS .NET isto programira, kot v VS 6.0? Predvsem izdelava vizualnega dela...


by Miha
s8eqaWrumatu*h-+r5wre3$ev_pheNeyut#VUbraS@e2$u5ESwE67&uhukuCh3pr

Zgodovina sprememb…

BigWhale ::

Instaliraj Linux, KDevelop in zacni delat v Qt (KDE) ju... Vsa dokumentacija je for free, pa se razvojna orodja!

Pa niti ne dela tako slabo...

Microsoft ::

BigWhale, lahko mogoče prlepiš gor kako slikco (PrintScreen) od kakega programa, kjer je naret kak vizualni del ali kaj podobnega narejenega v KDevelop?


by Miha
s8eqaWrumatu*h-+r5wre3$ev_pheNeyut#VUbraS@e2$u5ESwE67&uhukuCh3pr

Zgodovina sprememb…

BigWhale ::

www.kdevelop.org bi bil kar primeren kraj za iskanje screen shotov. Hm, kar sam kdevelop je narejen v kdevelopu... Precej delov kdevelopa je narejeno tam. :)

Sicer pa zadeva s pomocjo cygwin laufa tudi na windowsih... :)

slawc ::

Ocitno VS nima dobrega helpa kot nekateri govorijo. Ce ti pa KDevelop in Linux ne bosta vsec ti predlagam da presaltas na Delphi (pascal like) ali C++ Builder, kjer se s tezavami kot si jih opisal definitino ne bos srecal. 100% se bo spet nekdo nasel in zacel pluvat po men. :D Pa se slovenski Delphi forum imas.
Vse kar zelis bos naredil tudi s tema dvema orodjema, vsi windows APIji so to dostopni, delo z DirectX (torej zvok, video), xyz oblikami oken in podobno. Pa da ne omenim da F1 dela (ce pravis da ti nic ne najde). Pa koda bo do neke mere prenosljiva tudi na Linux(Kylix oz. Builder X) - pise spehu od Builderja, nisem pa sprobal.

Nacinov je vec, moras si poiskati najbolj primernega.
LP, Slawc

Microsoft ::

BigWhale, stvar izgleda zanimivo! Sicer sem zdele stvar samo preletel, ker se grem zdele mal bordat.8-)

Bi pa vseeno posatvil vprašanje, ki sem ga že večkrat: Katero programsko orodje mi priporočate za izdelovanje takih programov, ki bi obdelovali zvočni signal na vse možne načine? Se pravi, da je zahteva taka, da se more dati narediti vizualni del in potem še matematično ozadje posameznih efektov v enem programskem okolju, da je stvar zelo hitra, kvalitetna, pač profi.
Pa kot sem že povedal, to ni moj projekt, ki se ga bom lotil po 1h učenju. Gre samo za to, da hočem dobiti informacijo, katero programsko okolje se anj začnem učiti. Da se mi ne bo potem zgodilo, da ko bom že znal toliko, da bi lahko naredil kaj konkretnega, bi pa zevdel, da se to ne dela v tem programskem jeziku ampak onem...
Se pravi, kje začeti, da med potekom ne bom spreminjal platforme in programskega orodja (če seveda to gre) in da bom nato lahko končal tam, kjer se reče, da pa sedaj znam narediti kvaliteten software za obdelavo zvoka, pa naj bo še naročnik tako muhast?


by Miha
s8eqaWrumatu*h-+r5wre3$ev_pheNeyut#VUbraS@e2$u5ESwE67&uhukuCh3pr

Microsoft ::

Sm že nazaj. Sm se odloču, da bom rajš mal moči pršparu za jutri, ko bi naj zapadlo 10cm snega.;)

slawc, med pisanjem mojga posta si ti poslal post, tak da sem ga šele potem videl, ko sem jaz že poslal svoj post...

Glede Delphija in C++ Builderje, je pa takole. Imam Delphi 7.0 Enterprise, C++ Builderja pa nimam. Gelde Delphija je tak, da imam cimra, ki to malo obvlada (recimo, naerdu je program za chat, like mIrc), tako da nekaj osnovnih napotkov bi lahko dobil. Drgače pa v Pascalu nikoli nise nič delal, tako da nevem, kaka je koda. Bom inštaliral in pogledal, kako izgleda.
C++ Builder, če se rpav spomnem, je tudi produkt, Borlanda. Ko pridem na kabel, bom potegnil dol in pregledal, kaka je stvar. Predvidevam, da se piše v C kodi...

Potem, da pa ja kompatibilno tudi na Linuxu. Sicer se na operacijski sistem Linux in Unix ne spoznam, vendar bi potem bil možno narediti v Borlandovem programskem orodju nareediti software (na PCju), ki bi potem tekel tudi na MACu. Ali pa vsaj z malimi predelavami programske kode? To me zanima predvsem zaradi tega, ker sem zasledil, da je veliko (večino :\ ) studijev (audio) opremljenih z MACi za obdelavo zvoka.


by Miha
s8eqaWrumatu*h-+r5wre3$ev_pheNeyut#VUbraS@e2$u5ESwE67&uhukuCh3pr

slawc ::

No, ker sem ravno odgovoril na tvoje delphi vprasanje, ce ti bo kdo se najbolje pomagal bo to tvoj cimr. :D

Za MACe pa vem totalno nic. Bi bilo pa zanimo zvedet kako tam razvijajo aplikacije.
LP, Slawc

Vesoljc ::

portabilne aplikacije oziroma še bolj natančno, portabilno kodo se seveda da narest... ampak ni tako preprosto :D
Abnormal behavior of abnormal brain makes me normal...


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[C++] izris v [x,y]

Oddelek: Programiranje
131073 (775) DuleKrtola
»

c++ zapis funkcije

Oddelek: Programiranje
81133 (1056) Vesoljc
»

EditBox

Oddelek: Programiranje
121477 (1331) [MYTiX]
»

Win32 API in C++

Oddelek: Programiranje
131494 (1365) Monster
»

Odpiranje dat.exe v VB

Oddelek: Programiranje
122810 (2603) webblod

Več podobnih tem