játékfejlesztés.hu
FórumGarázsprojectekCikkekSegédletekJf.hu versenyekKapcsolatokEgyebek
Legaktívabb fórumozók:
Asylum:    5468
FZoli:    4892
Kuz:    4455
gaborlabor:    4449
kicsy:    4304
TPG:    3402
monostoria:    3284
DMG:    3172
HomeGnome:    2919
Matzi:    2524

Pretender:    2498
szeki:    2440
Seeting:    2306
Geri:    2193
Orphy:    1893
Joga:    1791
Bacce:    1783
MaNiAc:    1735
ddbwo:    1654
syam:    1491
Frissebbek | Korábbi postok
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [15] [20] [25] [30] [35] [40] [45] [50] [55] [60] [65] [70] [75] [80] [85] [90] [95] [100] [105] [110] [115] [120] [125] [130] > 132 < [135] [140] [141]
ShAdeVampirE - Törzstag | 1313 hsz       Online status #8222   2006.04.22 00:39 GMT+1 óra  
ok, főleg azért kellett volna, mert az osztály Contruktorában használom, amit szerettem volna a header-be átrakni, de akkor marad az eddigi felállás, és cpp-ben lesz a construktor is.
   
WToma - Szerkesztő | 635 hsz       Online status #8050   2006.04.20 10:31 GMT+1 óra  
De így bárhol használhatod.
Ha még télleg csak abban az 1 fileban kell használni akkor meg minek headerbe rakni?
Toma
Ez nem bug, hanem feature!
http://sohivatal.uw.hu
   
kiskami - Tag | 265 hsz       Online status #8041   2006.04.20 10:00 GMT+1 óra  
Ha nem használja más, akkor nincs értelme külön header-be rakni.
[Silent Vertigo] { Solarah }
http://www.silentvertigo.hu
   
ShAdeVampirE - Törzstag | 1313 hsz       Online status #8040   2006.04.20 09:51 GMT+1 óra  
Birmacher: Nemnem, de az miért fontos?

extern-eset tudtam, de akkor ugyan ott vok, mint eddig (csak abban a file-ban használom)
   
Birmacher - Törzstag | 516 hsz       Online status #8025   2006.04.20 08:52 GMT+1 óra  
mellesleg ue ezt a sort nem törölted:

#ifndef...
#define...
#endif...

   
WToma - Szerkesztő | 635 hsz       Online status #8014   2006.04.20 08:03 GMT+1 óra  
Ez azért van, mert a .h-t ugye mind includeolja, ergo a .cpp-k fordításánál mindben benne lesz a kérdéses sor, tehát a fordÍtó reakciója teljesen érthető. Amit csinálhatsz: a kérdéses .h-ban így adod meg:
Kód:
extern CDoserEngine* pC_MyApp;

Aztán egy tetszés szerint választott .cpp fileban írod:
Kód:
CDoserEngine* pC_MyApp = NULL;

A többiben pedig szépen dolgozhatsz vele.
Toma
Ez nem bug, hanem feature!
http://sohivatal.uw.hu
   
ShAdeVampirE - Törzstag | 1313 hsz       Online status #8001   2006.04.20 07:27 GMT+1 óra  
Lehet, hogy ez a kérdés nevetségesen egyszerű, de nekem valahogy nem esik le...
Szal van egy ilyen sorom (Dive or Die-ból, csak épp rendezgetem a kódot, meg fejlesztjük tovább )
Kód:
CDoserEngine* pC_MyApp = NULL;

Ez eddig a DoserEngineApp.cpp-ben volt (CDoserEngine-re kellett hivatkozni vele CDoserEngineApp-ból), de most rendezésnél át akarom rakni .h-ba, mert ott lenne a helye. Ha viszont átrakom, akkor ilyen hibákat kapok:
Kód:
Game.obj : error LNK2005: "class CDoserEngine * pC_MyApp" (?pC_MyApp@@3PAVCDoserEngine@@A) already defined in DoserEngineApp.obj

És ezt minden egyes olyan file-ról kiírja, ahonnan van include DoserEngineApp.h felé, azaz ahova áthelyeztem a pointert. Remélem érthető a bajom, mert elég idegesítő, és jó lenne, ha tudna vki segíteni...
   
Eagle_Lor - Tag | 54 hsz       Online status #7895   2006.04.19 11:35 GMT+1 óra  
Idézet
CsanyiL :
Hi! Gondban vagyok a C++-al. Ha felteszem a progit még normálisan működik minden, de ha egyszer már bezárom akkor nem lehet újra megnyitni . . .



A c++ nem egy program, hanem egy nyelv. Valamelyik c++hoz készült fejlesztőkörnyezettel lehet gondod, de ha nem írod le, h. mi a neve és verziója, akkor csak találgatni tudunk.

   
Birmacher - Törzstag | 516 hsz       Online status #7889   2006.04.19 11:18 GMT+1 óra  
Sz@r a crack amit használsz -> töltsd le a MSVC++ 2005 Express Editiont az ingyenes

   
CsanyiL - Tag | 12 hsz       Online status #7888   2006.04.19 11:14 GMT+1 óra  
Hi! Gondban vagyok a C++-al. Ha felteszem a progit még normálisan működik minden, de ha egyszer már bezárom akkor nem lehet újra megnyitni . . .

   
CsanyiL - Tag | 12 hsz       Online status #7886   2006.04.19 11:11 GMT+1 óra  
Hi! Tudja valaki miért nem műxik a c++ normálisan?? Gond= Ha felteszem akkor még minden ok,első futtatásig.Csak, ha kilépek nem tudom újra megnyitni . . . Egyszerűen nem nyílik meg . . .

   
Kredisoft - Guests | hsz       Online status #5158   2006.02.01 06:38 GMT+1 óra  
Szerintem a konstruktorokbvan szereplő kifejezések úgy kell felépüljenek, hogy kiegészitsék egymást és ne fölülírják egymást. Ha viszont mindkettőben használsz azonos fv.-t akkor azt overrideolni kell, és ha közös változót használsz benne akkor pedíg a new-t kell használni az új paraméter létrehozásánál. Kb erre jutottam.




   
Kredisoft - Guests | hsz       Online status #5157   2006.02.01 06:28 GMT+1 óra  
hü már a constructorbuildert nézegetem, ajaj ennyire azért nem mély


   
Kredisoft - Guests | hsz       Online status #5156   2006.02.01 06:26 GMT+1 óra  
Próbáld meg ezt: A kulcs a new a függvény előtt. Remélem neked is müködni fog Nállam ez a kód hiba nélkül fordul;

namespace ConsoleApplication1
{
class Program
{
class szulo
{
public string teststring = null;
public szulo()
{
teststring = "szulo";
}

internal void kiir()
{
Console.WriteLine(this.teststring);
}
}

class gyerek : szulo
{
public gyerek()
{
this.teststring = "gyerek";
}

internal new void kiir()
{
Console.WriteLine(this.teststring);
}
}

static void Main(string[] args)
{
szulo parent = new szulo();
parent.kiir();
gyerek child = new gyerek();
child.kiir();
Console.ReadKey();
}
}
}


   
tigrisss - Guests | hsz       Online status #5155   2006.02.01 06:21 GMT+1 óra  
Igen, valószínűsítem, hogy a konstruktorban lévő dolgok nem virtualizálhatók.


   
Kredisoft - Guests | hsz       Online status #5154   2006.02.01 06:10 GMT+1 óra  
Fura ez nekem na megyek kipróbálom C#-ban, de ez nekem egyébként nem tűnik rendellenes viselkedésnek.


   
tigrisss - Guests | hsz       Online status #5153   2006.02.01 05:58 GMT+1 óra  
Köszi!
Most kicsit máskép közelítem meg a dolgot:
Ebben az esetben a _Fuggveny() override működik (ha deklaráltuk a CDerive classban a kimenet CHILD, ha nem, akkor használja a CBAse classbeli PARENT kiírást).

De! Ha én már használok egy konstruktort a CBase class-ban, amiben meghívom a _Fuggveny()-t, akkor már nem jo (ekkor ugye nem használjuk a mainban a: Proba->_Fuggveny()



class CBase
{
public:
virtual void _Fuggveny() { cout "PARENT" endl;};
};

class CDerived : public CBase
{
public:
void _Fuggveny() { cout "CHILD" endl; }; Kikommnetezve a CBase beli hívódik meg
};

void main()
{
CBase* Proba = new CDerived;
Proba->_Fuggveny();
delete Proba;
};


   
Kredisoft - Guests | hsz       Online status #5152   2006.02.01 05:13 GMT+1 óra  
Két dolog jutott eszembe hirtelen, az egyik nagy valszeg nem jó de ideirom
1. A parent objektum destruktora már meghívódott a child objektum constructora előtt, tehát egybeágyazni kellene??
2. Ezt valószinüsítem inkább, hogy a child osztályban valahogyan meg kellene azt mondani hogy te az előző _függvényt szeretnéd fölülbirálni, C#-ban ez az override-al megy tudtommal van valami ilyesmi C++-ban is.


   
tigrisss - Guests | hsz       Online status #5151   2006.02.01 04:00 GMT+1 óra  
Sziasztok, van egy láma kérdésem:
A kimeneten azt szerettem volna kapni, hogy azt modja a másodszor, hogy "(child)En mar utod vagyok!".
Most így hirtelen nem értem miért nem jó.

class CParent
{
public:
CParent() { cout "(parent)Constructor hit" endl; _Fuggveny();};
~CParent() { cout "(parent)Destructor hit" endl; };
protected:
virtual void _Fuggveny() { cout "(parent)En vagyok az ososztaly!" endl; };
};

class CMy : public CParent
{
protected:
void _Fuggveny() { cout "(child)En mar utod vagyok!" endl;};
};

void main()
{
CParent* Parent = new CParent();
delete Parent;

CMy* My = new CMy();
delete My;
};

Kimenet:
(parent)Constructor hit
(parent)En vagyok az ososztaly!
(parent)Destructor hit
(parent)Constructor hit
(parent)En vagyok az ososztaly!
(parent)Destructor hit

EDIT: a dualkacacsőrt képzeljétek oda, mert nem jelenik meg (Módosította tigrisss 2006.02.01. 12:02-kor)

   
Brooklyn - Guests | hsz       Online status #5150   2006.01.31 07:29 GMT+1 óra  
Ok damaniac82 megfogadom a tanácsod. azt nem tudot véletlenül h honnan lehetne leszedni a mobilok által futtatott symbian op.rendszert??



   
nagyy - Guests | hsz       Online status #5149   2006.01.31 04:38 GMT+1 óra  
beast: Ez már nálam is volt jópárszor. A baj általában az, hogy valahol túlindexelted a vektort, de más hasonló hiba is okozhatja. (Egyébként, ha például Release módban indítod el a progit, akkor van olyan eset, amikor szó nélkül lefut... persze ez nem megoldás)
Mikor WORD helyett int típusú a vektor, akkor valszeg azért működik, mivel így dupla akkora mem terület lett lefoglalva, és nincs túlindexelés.
A hiba megtalálásához pedig csak sok sikert tudok kívánni.

nagyy

   
beast - Guests | hsz       Online status #5148   2006.01.31 03:10 GMT+1 óra  
Hali!
Kérdés a köv. lenne:
Van egy WORD* valami;, és mikor lefoglalom neki a memóriát valami = new WORD[128]; (a 128 csak példa), szal eddig minden ok, de mikor törölni akarom delete[] valami; , akkor dob egy ilyet:
"DAMAGE: after Normal Block (#67) at 0x00AE51C0"
De ha átirom a tipust pl. int-re akkor semmi gond, lefoglalja és törli is.
Valakinek vmi ötlete?


beast

   
Baz - Guests | hsz       Online status #5147   2006.01.29 11:49 GMT+1 óra  
pff, az nem 1 ingyenes dolog...
de
www.torrentspy.com
vagy dc

Üdv: --==[B@z]==--

   
Brooklyn - Guests | hsz       Online status #5146   2006.01.29 04:35 GMT+1 óra  
Hali mindenki. nemtudna valaki egy olyan oldalt anánlani amelyről lelehetne szedni a Visual C++ 6.0.-t thx


   
ShAdeVampirE - Guests | hsz       Online status #5145   2006.01.10 23:05 GMT+1 óra  
OK, köszi, gondoltam, h vmi ilyesmi, mert egy kódban láttam és ott így használták, csak nem tudtam pontosan. De mindent megválaszoltál a témában MÉg 1x ThX

------------------------------------------------
([url="http://shadevampire.uw.hu">ShAdeVampirE otthona a neten...[/url])

   
damaniac82 - Guests | hsz       Online status #5144   2006.01.10 11:57 GMT+1 óra  
Nem, rakhatsz bele natúr non-static cuccot is, csak nem tudod összehozni a static-cal amiatt, amit írtam. Amúgy én így csináltam meg a singleton-t. (pl. a Kernel az singleton). Hogy miért? Mert a generált kód klasszisokkal gyorsabb, mintha nekiállsz egy singleton template-tel bűvészkedni.

Egy static method hívása pont annyi idő, mint egy globális függvényé, ezzel szemben egy sima hívás ennél jóval lassabb, egy virtual pedig hozzá sem mérhető sebességben...

------------------------------------------------------------
[url=http://maniac.iceglow.com> OpenGL Tutorials & iNSANEX DevBlog[/url]

   
nagyy - Guests | hsz       Online status #5143   2006.01.10 10:25 GMT+1 óra  
"Az enginemben pl. erre épül a Kernel, ami egyetlen, szép nagy statikus osztály."

Ilyent csak úgy lehet csinálni, hogy az osztály mindegyik tagját "static" -nak definiáljuk, vagy van valami szebb megoldás is?

Pl.: az Ogre3D is használ teljesen statikus osztályt, de ott ezt singleton technikával oldották meg, az meg annyira nem tetszik nekem.

nagyy

   
damaniac82 - Guests | hsz       Online status #5142   2006.01.10 09:01 GMT+1 óra  
Na, ma Shade napot tartok! (Mázlista vagy, hogy egy regressziós tesztem fut a háttérben így most fél órára ráérek teljesen )

Szóval, static. Gondolom classon belül static memberre gondolsz, ha már C++ a topic és nem C (bocsi, de ezegyszer én vok lusta tökig visszaolvasni mindent!)

Szóval a static cuccok kicsit másként viselkednek, mint az egyéb változók, függvények. Vegyük először a változókat...

Egy osztályon belül egy static változó mindig létrejön, ha létrejön az osztály. Tök mindegy, hány példányt csinálsz, mindegyik ugyanazt az értéket osztja közösen. Ha az egyik megváltoztatja, változik mindenhol. Legegyszerűbb azt mondani, hogy rohadt módon utánozza egy globális változó viselkedését. Mivel azonban az osztályon belül van, csinál mást is! Tehát, egy osztály változóját (OOP terminológiával élve field-jét) valahogy így éred el:
OsztalyPeldany.field = ...
v, ha dinamikusan hoztad letre:
OsztalyPeldany->field = ...
Ha static az artatlan, akkor igy is lehet:
OsztalyTipus::field = ...
Ha megnezed, kiemeltem, hogy itt nem peldanyrol van szo. Azert, mert itt nem is csinaltam peldanyt! Ugyanis, ha fogsz egy osztalyt, teszel bele egyetlen kis static dolgot akar, akkor az osztalybol un. static class lesz es mindjart a progi indulasanal letrejon belole egy peldany, amit a fenti modon tudsz elerni. BÁRHONNAN! Nincs visibility scope, etc. Akárhonnan! Az enginemben pl. erre épül a Kernel, ami egyetlen, szép nagy statikus osztály. Ez tartalmazza a logolást, etc. És ki is használom keményen, hogy el lehet érni bárhonnan. (Persze magának a típusnak abban a környezetben léteznie kell!)

A másik: függvények is lehetnek statikusak. A lényegük nagyjából ugyanaz. Egy példa:

ifxKernel::log("Írok a logba ";

Itt egy statikus osztály statikus metódusát hívtam fel. fontos, hogy statikus metódusok korlátozottan nyúlhatnak hozzá változókhoz. Csak az alábbiakat használhatják:
- internal (a fgv.-en belül definiáltad)
- global
- static (másik statikus osztályé vagy saját osztályé)
Bye-bye non-static field! Emiatt célszerű - ha csinálsz egy static class-t - mindent static-ká tenni benne és nem lesz kavarodás. Persze jól gondold át, hogy mit teszel static-ká, mert mindig, mindenhol kell (pl. logger, kernel) vagy csak néha (pl. Player osztály - ezekből is egy van, de hülyeség lenne őket static-ká tenni!)

Na, ennyi volt a mese mára, remélem segített!

------------------------------------------------------------
[url=http://maniac.iceglow.com> OpenGL Tutorials & iNSANEX DevBlog[/url]

   
ShAdeVampirE - Guests | hsz       Online status #5141   2006.01.10 08:08 GMT+1 óra  
Mire jó a static?

------------------------------------------------
([url="http://shadevampire.uw.hu">ShAdeVampirE otthona a neten...[/url])

   
ShAdeVampirE - Guests | hsz       Online status #5140   2005.12.24 23:07 GMT+1 óra  
Igen, így már azthiszem világos, köszi. Ha lesz még, akkor úgyis jövök megint nyafogni

------------------------------------------------
([url="http://shadevampire.uw.hu">ShAdeVampirE otthona a neten...[/url])

   
nagyy - Guests | hsz       Online status #5139   2005.12.24 09:38 GMT+1 óra  
Ahogy kiskami írta, mindent neked kell felszabadítani, ami memória le lett foglalva. Ha egy struct tartalmaz mutatókat, akkor, mikor a strukt törlődik, a tagjai által mutatott memóriaterületek továbbra is megmaradnak. Emiatt ezek felszabadítását is meg kell oldani.

A legjobb erre, ha a strukt-nak is megírtod a destroktuorát! Igen... ilyet is lehet, mert valójában a struct { ... }; -ot úgy kezelik a C++ fordítók, mintha class { public : ... }; -ot írnánk be.

Ha a struct-nak van saját destruktora, amiben a tagjai által mutatott területek felszabadítása meg van írva, akkor elég a struct-ra egy "delete strukturara_mutato_pointer;" parancsot kiadni.

Viszont ha tömbként lett a memória lefoglalva:
pl.: "int *pIntTomb = new int[10];", akkor ennek felszabadításakor nem elég a "delete pIntTomb;", hanem a "delete[] pIntTomb;"-ot kell használni. (ugyanez igaz mindegyik típusból létrehozott din. tömbre is)

Remélm segítettem

nagyy

   
ShAdeVampirE - Guests | hsz       Online status #5138   2005.12.24 07:13 GMT+1 óra  
És ha pl. úgy néz ki, h:

CMy_Class
és ennek van változója:
SGroup* groups_array;
de SGroup sima Struct, ami megint tartalmaz dinamikus elemeket
struct SGroup {
SFace* va_faces;

akkor itt elég az, ha destruktornak kiadok egy delete groups_array parancsot? Mármint, akkor ez már pl. va_faces-t is kinullázza?

------------------------------------------------
([url="http://shadevampire.uw.hu">ShAdeVampirE otthona a neten...[/url])(Módosította ShAdeVampirE 2005.12.24. 15:14-kor)

   
kiskami - Guests | hsz       Online status #5137   2005.12.24 06:39 GMT+1 óra  
a pointereid álltal mutatott objektumokat muszály neked kezelni destruktorban, ha nem akarsz memleak-et, az stl konténerei jólneveltek, és a bennük tárolt dinamikus dolgok destruktorait meghívják, amikor ők kimúlnak, ha minden igaz

Üdv,
Kami

   
ShAdeVampirE - Guests | hsz       Online status #5136   2005.12.24 03:00 GMT+1 óra  
Kicsit új még nekem a dinamikus adatkezelés komolyabb alkalmazása, ezért lehet ez elég triviális kérdés lesz, de most lényeges, így pls ne nézzetek hülyének...

Szal ha van egy objektumom, amit dinamikusan hozok létre, és abban vannak szintén adatszerkezetek amiket dinamikusan kezelek, akkor elég csak az objektumot megsemmisíteni, vagy minden egyes dinamikus részét külön megkell szüntetni?

------------------------------------------------
([url="http://shadevampire.uw.hu">ShAdeVampirE otthona a neten...[/url])

   
nagyy - Guests | hsz       Online status #5135   2005.12.18 04:08 GMT+1 óra  
Hááát nem tudom. A VC6-ban így tuti hogy működik, mert most próbáltam ki.

typedef int (*FunctionType)();


void Draw( FunctionType func )
{
// ...
func();
}


int Cube() { /* ... */ return 0; }


int main( void )
{
Draw( Cube ); return 0;
}

nagyy

   
nagyy - Guests | hsz       Online status #5134   2005.12.18 01:17 GMT+1 óra  
Ha jól értelmezem, akkor vmi olyat szeretnél, hogy a paraméterbe egy függvényt adsz, és később ezt meghívod...
Ezt így kellene:

typedef void (*FunctionType)();

void Cube() { ... }

void DrawFunc(FunctionType Func) //itt rajzol
{
glTranslatef(2, 0, 0);
Func();
}

...és akkor a DrawFunc -ot így hívod a későbbiekben...

pl.: DrawFunc( Cube );

... az viszont fontos, hogy a FunctionType típusnak csak olyan függvényeket lehet adni, amelyek "visszatérési értéke" void, és nincs paramétere.

nagyy

   
Eagle_Lor - Guests | hsz       Online status #5133   2005.11.16 18:07 GMT+1 óra  
Olvasd el a főoldalon a híreket, a Visual Studio 2005-ösben ott a link.


   
bolyzsolt - Guests | hsz       Online status #5132   2005.11.16 10:20 GMT+1 óra  
Idézet
TheProGamer írta:
(bolyzsolt írta:
Helló!

Egy hülye kérdés: le lehet-e szedni a Microsoft Visual C++ 6-os verzióját, lehet próbaprogi is, de lehessen használni, és ha igen, honnan?

Kösz a válaszokat

Zsolti - a haladó kezdő )Nem lehet csak a VC++ 8 egy verzióját lehet letölteni ha minden igaz.

[url=http://theprogamer.uw.hu/ > http://theprogamer.uw.hu/ [/url] Updated:2004.10.25
Kösssszzzzzzi, esetleg nem tudnál egy címet?

Zsolti - a haladó kezdő

   
TPG - Guests | hsz       Online status #5131   2005.11.16 08:44 GMT+1 óra  
Idézet
bolyzsolt írta:
Helló!

Egy hülye kérdés: le lehet-e szedni a Microsoft Visual C++ 6-os verzióját, lehet próbaprogi is, de lehessen használni, és ha igen, honnan?

Kösz a válaszokat

Zsolti - a haladó kezdő
Nem lehet csak a VC++ 8 egy verzióját lehet letölteni ha minden igaz.

[url=http://theprogamer.uw.hu/ > http://theprogamer.uw.hu/ [/url] Updated:2004.10.25

   
bolyzsolt - Guests | hsz       Online status #5130   2005.11.16 05:10 GMT+1 óra  
Helló!

Egy hülye kérdés: le lehet-e szedni a Microsoft Visual C++ 6-os verzióját, lehet próbaprogi is, de lehessen használni, és ha igen, honnan?

Kösz a válaszokat

Zsolti - a haladó kezdő

   
TPG - Guests | hsz       Online status #5129   2005.11.15 14:45 GMT+1 óra  
Idézet
nagyy írta:
A bit kikapcsolásához kell egy maszkolás (ÉS művelet), és egy komplementer képzés...

pl.:

DWORD tesz = 400 | 20 | 10;
DWORD kizarando_bitek = 400;
teszt &= ~kizarando_bitek;


nagyy
Ah kösz. Az a baj hogy ez nekem is eszembe jutott csak valamiért nem működött. Így most megerősítettél abban hogy mást csesztem el a kódban nem a bitműveleteket.

[url=http://theprogamer.uw.hu/ > http://theprogamer.uw.hu/ [/url] Updated:2004.10.25

   
nagyy - Guests | hsz       Online status #5128   2005.11.15 14:25 GMT+1 óra  
A bit kikapcsolásához kell egy maszkolás (ÉS művelet), és egy komplementer képzés...

pl.:

DWORD tesz = 400 | 20 | 10;
DWORD kizarando_bitek = 400;
teszt &= ~kizarando_bitek;


nagyy

   
TPG - Guests | hsz       Online status #5127   2005.11.15 13:41 GMT+1 óra  
Kérdés: adott egy 32-bites DWORD változó amibe bitenkénti vagyal tettem bele értékeket (Pl: DWORD teszt = 400|10|20). Melyik bitenkénti operátorral tudom az egyiket kizárni a DWORD-ból (Pl:tesztből szeretném a 400-at kizárni úgy hogy a 10 és a 20 érintetlen maradjon).

[url=http://theprogamer.uw.hu/ > http://theprogamer.uw.hu/ [/url] Updated:2004.10.25(Módosította TheProGamer 2005.11.15. 21:41-kor)

   
Eagle_Lor - Guests | hsz       Online status #5126   2005.11.13 11:01 GMT+1 óra  
Lazarus:
Ha Windowsos üzentekkel oldottad meg az inputot akkor [url=http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/userinput/virtualkeycodes.asp>itt[/url] találod a virtual keycodeok listáját, a következő kódrészlet lekérdezi egy billentyű nevét:
//MessageProc-ba
char keyname[64];
switch(msg){
case WM_KEYDOWN:
GetKeyNameText(lParam, keyname, 256);
break;
//többi message
}

Ha DirectInputot használsz akkor
[url=http://msdn.microsoft.com/library/default.asp?url=/library/en-us/directx9_c/Keyboard_Device.asp>itt[/url] találod a DIK_ konstansok listáját. A következő kód lekérdezni a billentyű nevét:

DIPROPSTRING keyname;
keyname.diph.dwSize = sizeof(DIPROPSTRING);
keyname.diph.dwHeaderSize = sizeof(DIPROPHEADER);
keyname.diph.dwObj = DIK_DELETE; //ide jön a lekérdezendő konstans
keyname.diph.dwHow = DIPH_BYID;
DInputDev->GetProperty(DIPROP_KEYNAME, &keyname.diph);
//A keyname.wsz-ben lesz unicode stringként az eredmény, ha ascii stringgé akarod alakítani akkor a wcstombs függvényt használhatod


   
Eagle_Lor - Guests | hsz       Online status #5125   2005.11.13 10:10 GMT+1 óra  
Asylum:
A Microsoft oldaláról elérhető legújabb (2005 októberi) DirectX SDK-t is lehet Dev-C++al használni, csak a .lib fájlokat konvertálni kell. Én a következő módszerrel állítottam be:

-legújabb DX SDK-t leszedtem az MStől és felinstalláltam, pl. a c:dxsdk könyvtárba

-le kell szedni a [url=http://www.mingw.org/download.shtml>MinGW[/url] honlapjáról a mingw-utilst és binutilst, majd ezeket kicsomagolni és a bin könyvtárukat egy könyvtárba másolni

-másold ebbe a könyvtárba a c:dxsdkLibx86-ból az összes .lib fájlt

-minden átmásolt .lib fájlra meg kell hívni a letöltött mingw-utilsból a reimp nevű progit. Ezzel a .bat fájllal egyszerűbb:

@echo off
REM mentsd le pl. konvert.bat-ként majd indítsd el
FOR %%x in (*.lib) do (
echo konvertalas: %%x
reimp %%x
)
echo A konvertalas kesz

-ha a konvertálás elkészült letörölheted a reimp könyvtárából a .libeket és a létrehozott fájlokat másold be a végleges helyükre (pl. Cev-CppLibdx9)

-a Dev-C++ban Tools/Compiler Options/Directories a librariesnál add hozzá az új fájlokat tartalmazó könyvtárat, a c++ includesnál pedig a c:dxsdkInclude-t add hozzá, mindkét helyen mozgasd legfelülre az újonnan hozzáadott bejegyzéseket

-kész is vagyunk, innentől lehet a Dev-C++al a legújabb directx sdkt használó programokat fordítani

(Módosította Eagle_Lor 2005.11.13. 18:11-kor)

   
Lazarus - Guests | hsz       Online status #5124   2005.11.13 05:24 GMT+1 óra  
Köszi

netspirit.srv.hu

   
Lazarus - Guests | hsz       Online status #5123   2005.11.12 18:34 GMT+1 óra  
Vagy legalább abban segítsen vlki hogy mire keressek rá google-vel?

"c++ windows typed" "typing characters" "read characters"
Ezekre telejesen más dolgok jönnek ki

netspirit.srv.hu

   
Lazarus - Guests | hsz       Online status #5122   2005.11.12 13:36 GMT+1 óra  
Hali!

Már régebben is feltettem ezt a kérdést és felteszem még1x

Windowsos chat készítéséhez, hogyan lehet elérni azt hogy a leütött billentyűket beolvassa és egy tömben tárolja? Csak simán írkálni akarok... remélem érthető a kérdés

netspirit.srv.hu

   
lyahim - Guests | hsz       Online status #5121   2005.11.12 08:53 GMT+1 óra  
A probléma bővebben kifejtve: Nem használom a frameworköt,
lehet hogy a command lineban van a hiba, de viszont mikor egy
Vc 6-os projectet importáltam akkor is fenn állt a probléma.
A proci optimalizálás valószinüleg nem rossz mert a tesóm P2 400-as gépén, futott míg nekem duronom van, de másnál már nem fut.
Esetleg ha vhogy el lehetne a c++ projectbeállitásból tüntetni
a clr opciót az lehet hogy segítene,de ezt pedig nem találtam meg.
Lyahim


   
Hacker - Guests | hsz       Online status #5120   2005.11.12 03:24 GMT+1 óra  
De amúgy a Dev-C++ -nak van egy remek online frissítő programja ami a letöltés után már automatikusan települ is a Dev-be. Innen is le lehet tölteni a DirectX 9 SDK-t.

Programozz ne háborúzz!!!

   
Frissebbek | Korábbi postok
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [15] [20] [25] [30] [35] [40] [45] [50] [55] [60] [65] [70] [75] [80] [85] [90] [95] [100] [105] [110] [115] [120] [125] [130] > 132 < [135] [140] [141]