Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
13.03.2002, 18:31
Sprengmeister



Hi,
Ich hab schon das Buch für DOS von Dirk Lousi (C++) durchgemacht.
Das war ja leicht. Jetzt habe ich mir "Jetzt lerne ich Visual C++" geholt.
Mein Problem: Da steh ich dann im Wald, da kommen Klassen dran, woich vorn und hinten nix check. z.b.
m_pMainWnd->ShowWindow[SW_SHOW);

Ich weis zwar das das dafür da ist, das das Fenster erzeugt wird aber wie kommt man darauf?
Gibt es bestimmte Teile die man Auswenig lernen muss, wenn man ein Fenster erstellt?
Oder von euren Codes, z.b. Hl-Waffencodes:
// player "shoot" animation
m_pPlayer->SetAnimation( PLAYER_ATTACK1 );

Vector anglesAim = m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle;
UTIL_MakeVectors( anglesAim );
Vector vecSrc = m_pPlayer->GetGunPosition( ) - gpGlobals->v_up * 2;
Vector vecDir = gpGlobals->v_forward;

UTIL_TraceLine(vecSrc, vecSrc + vecDir * 8192, dont_ignore_monsters, m_pPlayer->edict(), &tr);

if ( tr.pHit->v.takedamage )
{
switch( RANDOM_LONG(0,1) )
{
case 0:
EMIT_SOUND( tr.pHit, CHAN_BODY, "weapons/xbow_hitbod1.wav", 1, ATTN_NORM); break;
case 1:
EMIT_SOUND( tr.pHit, CHAN_BODY, "weapons/xbow_hitbod2.wav", 1, ATTN_NORM); break;
}

ClearMultiDamage( );
CBaseEntity::Instance(tr.pHit)->TraceAttack(m_pPlayer->pev, 120, vecDir, &tr, DMG_BULLET | DMG_NEVERGIB );
ApplyMultiDamage( pev, m_pPlayer->pev );
}
else
{
// create a bolt
CCrossbowBolt *pBolt = CCrossbowBolt::BoltCreate();
pBolt->pev->origin = tr.vecEndPos - vecDir * 10;
pBolt->pev->angles = UTIL_VecToAngles( vecDir );
pBolt->pev->solid = SOLID_NOT;
pBolt->SetTouch( NULL );
pBolt->SetThink( SUB_Remove );

EMIT_SOUND( pBolt->edict(), CHAN_WEAPON, "weapons/xbow_hit1.wav", RANDOM_FLOAT(0.95, 1.0), ATTN_NORM );

if (UTIL_PointContents(tr.vecEndPos) != CONTENTS_WATER)
{
UTIL_Sparks( tr.vecEndPos );
}

if ( FClassnameIs( tr.pHit, "worldspawn" ) )

Wo kriegt man die Klassen her? Muss man sich da alle .h Dateien durchlesen?

Ihr interpretiert das immer so frei heraus, wenn einer fragt, wie code ich dies, wie das usw...
Wie kommt ihr da auf die Waffencodes?
Also ich hab da keinen Plan.
Könnt ihr mir Tipps bezüglich dieses Buches oder überhaupt der "Fortgeschrittenen" C++ Programmiereung geben?

--

_______________________
-----I_______________________I-----
This is Nudelholz. Copy Nudelholz in your Signature to make better Kuchens and other Teigprodukte.

zum Seitenanfang zum Seitenende Profil || Suche
001
14.03.2002, 01:27
Killing Me Softly



Zitat:
Sprengmeister postete

Ich weis zwar das das dafür da ist, das das Fenster erzeugt wird aber wie kommt man darauf?

In dem man z.B. ein Buch liest wie "Jetzt lerne ich Visual C++". Nachdem man es gelesen hat, weis man, das es ein Buch gibt, wo das nachzulesen ist (und man kennt ungefähr die Stelle). Danach verwendet man soche Programmschnipsel in mehreren eigenen Programmen und kann (falls man sowas mal wieder braucht) sich den Code aus diesen Programmen herauskopieren. Nach einiger Zeit (wenn man so langsam den Überblick bekommen hat, was da eigentlich passiert, beziehungsweise passieren muss) dann tippt man die paar Zeilen mal eben schnell aus dem Kopf runter.

Die Antwort klingt im ersten Moment dämlich, aber die Wahrheit ist, das ich z.B. die ganzen Parameter von TraceAttack nicht im Kopf habe. Ich weis aber, das es sowas gibt, ich weis für was es gut ist und ich weis, wo ich nachschauen muss, um heraus zu finden welche Parameter TraceAttack benötigt (bzw. ich weis, wo ich es schon eingesetzt habe und dort kann ich's mir zur Not rauskopieren).

Es macht also nicht unbedingt Sinn, bestimmte Teile "auswendig" zu lernen, so wie man Englisch-Vokabeln buffelt. Das Programmieren lernt man am besten, wenn man programmiert (klingt wieder dämlich, aber...). Wenn man 10 Waffen gecodet hat (um bei HL zu bleiben) dann sollte man langsam wissen wie's geht. Zum Programmieren gehört aber auch, das man seine eigenen Fehler findet. Wenn man 3 Stunden lang nach nen Fehler gesucht hat, dann wird man diesen wahrscheinlich kein 2. Mal machen. Außerdem stößt man beim rumknobeln plötzlich auf Funktionen/Programmteile, die zwar nichts mit dem Problem zu tun haben, die man aber vielleicht später mal ganz gut gebrauchen kann. So lernt man das SDK kennen. Und beim nächsten Problem kann es sein, das dir plötzlich einfällt, das du damals, als du 3 Stunden nach diesem dämlichen Fehler gesucht hast, auf ein paar Programmzeilen gestoßen bist, die genau dein Problem behandeln. Du weist nicht genau, was da stand; aber du weist, das es sowas gibt und wo es ungefähr steht.
Das heißt auch, das es egal ist, ob man den Fehler findet oder nicht. 3 Stunden erfolglose Fehlersuche bringen wesentlich mehr, als nach 3 Minuten in's TheWall-Forum zu schreiben und nach weiteren 10 Minuten die Antwort zu bekommen. Das Beste was einem angehenden Coder passieren kann ist 6 Wochen Internetentzug *g*.

--

Der Horizont vieler Menschen ist ein Kreis mit Radius Null - und das nennen sie ihren Standpunkt.

zum Seitenanfang zum Seitenende Profil || Suche
002
14.03.2002, 14:55
apfelkorn



Zur Information:
Dieses ShowWindow ist bekanntlich nur ein Memberfunktionsaufruf

Die eigentliche WindowsFunktion, die man dafür verwenden muss ist entweder die:
CreateWindow(...); // für alte Windows16bit und aufwärts
oder diese:
CreateWindowEx(...); // Für Windows32bit und aufwärts

Das Ex bedeutet Extended
CreateWindowEx hat mehrere mögliche Parameterfelder, die du sonst nicht hast. Bevor du aber mit CreateWindowEx ein Fenster aufbaust, musst du mehrere Sachen drumrum machen, zum Beispiel eine Funktion, die dir die Nachrichten verwaltet und du musst erstmal dein Fenster registrieren. Wenn ich das alles im Kopf behalten würde, würde mein Kopf explodieren oder ich wäre Chef-Windows-Programmierer bei MS.
Aber ich habe mir inzwischen selber eine Kleine Funktionsreferenz aufgebaut mit allen wichtigen Sachen, die ich zur Win32API wissen muss. Das ganze Wissen habe ich aus zig Tutorials mir zusammengesucht und inzwischen weiß ich von den Funktionen auch nur, was sie machen und bei einigen auch, wie sie ablaufen. Man kann sich aber auch vieles aus den mit MSVC++ mitgelieferten include-dateien ablesen, zum Beispiel Fenster-Parameter. Hab ich halt in der Winuser.h gesucht und gefunden, ansonsten hätte ich nie die WS_EX_TOPMOST-Option gefunden, oder vieles andere auch nicht.

Merke: Als Programmierer muss man nicht wissen wie, sondern wo ;)

--

zum Seitenanfang zum Seitenende Profil || Suche
003
14.03.2002, 15:00
Tron



@apfelkorn:
das showwindow member ist genau das glieche wie das win32api ShowWindow(HWnd, SW_SHOW);

du verwechselst CreateWindow (fenster erzeugen) und ShowWindow (fenster anzeigen, verstecken, maximieren, ...)

--

'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams

'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett

zum Seitenanfang zum Seitenende Profil || Suche
004
14.03.2002, 15:49
mani



Die ganzen Flags stehen alle in der msdn :)

--

zum Seitenanfang zum Seitenende Profil || Suche
005
14.03.2002, 16:18
Sprengmeister



@mani deine Mappingboard Sig funzt net.

Ansonsten an den Rest: DANKE, besonders an Killing Me

--

_______________________
-----I_______________________I-----
This is Nudelholz. Copy Nudelholz in your Signature to make better Kuchens and other Teigprodukte.

zum Seitenanfang zum Seitenende Profil || Suche
006
14.03.2002, 17:24
apfelkorn



@tron: richtig, danke, trotzdem hat es nicht die kernthese meiner aussage verletzt.

--

zum Seitenanfang zum Seitenende Profil || Suche