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



1. Suche ein OpenGL SDK, da mir DirectX zu...naja... seltsam ist :/
2. Problem: in C++, MFC:
(aus #thewall.de )
will ein Bild haben welches auf Tastendruck ein anderes Bild anzeigt. Lösungsmöglichkeiten: LoadImage(...), LoadBitmap(...) oder ein Bitmap dingens in den Dialog platzieren und dann per zugewiesener CString Variable die ID der Bildresource ändern.
Frage: Was is am besten und wie macht man dieses? mit allen dreien hab ich mich schon 2 tage beschäftigt, klappt aber irgendwie net :/
3. hab vor ein paar Monaten s DirectX 8.0a SDK gesaugt, ziemlich lustig, nur versteh ich von der englischen Doku fast nichts :/
Frage: wo gibts was deutsches ?

--

zum Seitenanfang zum Seitenende Profil || Suche
001
01.09.2001, 18:49
Another1



1. OpenGL SDK gibbet nich, wenn du MSVC hast, hast du alles was du brauchst, geh zu: nehe.gamedev.net mach die grundlagen tuts und schon kanns losgehn
2. keine lust jetzt ;)
3. immernoch nicht

--

Another1

...relaxing..atm =)
... und Schweiz suckt!

zum Seitenanfang zum Seitenende Profil || Suche
002
01.09.2001, 20:56
blair



1. jc, lass die finger von nehe's site, man kann nicht zulassen das du die auch noch verdaust

2. Das du MFC verwendest war mir ja SO klar...

3.Frag mal ganz lieb bei microsoft an, die werden bestimmt gerne für die 0.5 Promille der Coder, die zu faul sind ein engisches zu lesen eine komplette SDK Doku übersetzen!

--

because our freedom sits at the end of a gun
we're all here getting beat up and held back
we're all here digging knives from our backs

zum Seitenanfang zum Seitenende Profil || Suche
003
01.09.2001, 22:13
mani



halt die schnauze blair
zu 1. ich schau mal a1; ich bin ja kein dau, also wie bzw. wer soll die site da verdauen?
zu 2. toll, du weißt es, sagst es mir aber nicht :/, bekomm mal n bisschen lust; was hast du gegen die MFC?
zu 3. wie meinen?; blair, ich bin keineswegs zufaul das zu lesen, im gegenteil, ich habs gelesen (das tut was da in der doku is) verstehs aber nicht :/

schema:
zu [Aufzählungsnummer]. [kommentar zu a1]; [kommentar zu blair]

--

zum Seitenanfang zum Seitenende Profil || Suche
004
01.09.2001, 23:01
mani



wer versteht das:
Quellcode:
// Lauter Zeugz zur Überprüfung verschiedener Dinge...
// AM BESTEN NICHTS MEHR ÄNDERN!
// Hauptsache es funzt, am 30.08.2001 hab ich mich hier drin noch reingefunden am 31. nicht mehr :(
//**************NOTHING TODO HERE**************//
if ( m_reg_AuswSchwer == "")
{
m_dOptions.m_rUnter = 0;
m_dOptions.m_rSchwer = 0;
}
else
{
int test_reg_Schwer, test_reg_Unter;
if ( m_reg_AuswSchwer == "1")
{
test_reg_Schwer = 1;
}
else
{
test_reg_Schwer = 0;
}
if ( m_reg_AuswUnter == "0")
{
test_reg_Unter = 0;
}
else
{
test_reg_Unter = 1;
}
m_dOptions.m_rUnter = test_reg_Unter;
m_dOptions.m_rSchwer = test_reg_Schwer;
}
if ( m_dOptions.DoModal() == IDOK )
{
m_AuswSchwer = m_dOptions.m_rSchwer;
m_AuswUnter = m_dOptions.m_rUnter;
m_AuswSave = m_dOptions.m_sSave;

if ( m_AuswSave != "Nein")
{
m_cNEW.EnableWindow(TRUE);
if ( m_AuswSchwer == 1)
{
disp_Schwer = "1";
}
else
{
disp_Schwer = "0";
}
if ( m_AuswUnter == 0)
{
disp_Unter = "0";
}
else
{
disp_Unter = "1";
}

CWinApp* pReg = AfxGetApp();

pReg->WriteProfileString(_T("TextAdventure"), _T("Difficult"), disp_Schwer);
pReg->WriteProfileString(_T("TextAdventure"), _T("Untertext"), disp_Unter);
}
}

achja, und wie lässt sich dieses wirwar vereinfachen?

--


Dieser Beitrag wurde am 01.09.2001 um 23:02 von mani bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
005
02.09.2001, 18:35
Prefect



Auaaa... der Code würde vielleicht eher in die italienische Küche passen.
Ich hab mir das jetzt nicht ganz angetan, weil das nur ein Logikproblem ist eigentlich, und Logikprobleme sollte man selber lösen können - außerdem weiß ich nicht, wie ich jemandem Logik beibringen soll, und jemandem einfach die Lösung vorwerfen werde ich auch nicht.

ABER:
if ( m_reg_AuswSchwer == "1")

Man vergleicht keine Strings mit == ! Man verwendet gefälligst strcmp, oder, wenn man MFC mit CString verwendet (*ambodenkrüm*) Compare.

cu,
Prefect

--

Widelands - Gemütliche Aufbaustrategie, Free Software
Noch ein Blog - Lerne, wie die Welt wirklich ist, aber vergiss niemals, wie sie sein sollte.

zum Seitenanfang zum Seitenende Profil || Suche
006
05.09.2001, 19:51
mani



nö, wieso auch? es funktioniert doch...
NUR, jez hab ich n anderes problem:
der liest meine registry irgendwie nicht mehr richtig aus :/
Quellcode:
BOOL CAdventure2App::InitInstance()
{
[...anderer code...]
/*kaputt
CWinApp::SetRegistryKey(_T("Mani Soft"));
m_reg_Unter_Ad2 = GetProfileString(_T("TextAdventure"), _T("Untertext"), _T("0"));
dlg.m_reg_AuswUnter_Ad2 = m_reg_Unter_Ad2;*/
[...anderer code...]
}

Dialog File:
Quellcode:
              // TÜTÜT alles kaputt hier, frage mich wieso der nur die Standardvalue
// (siehe adventure2.cpp) ausliest :(
//**************TODO**************//
/*MessageBox(m_reg_AuswUnter_Ad2);

if (m_reg_AuswUnter_Ad2 == "0")
{
m_Unter_Show.ShowWindow(FALSE);
             }*/

so, und bei der Msg Box zeigt der mir jez immer nur den bei GetProfileString als standard gesetzten wert an :(

achso, das mit der vereinfachung: ich fragte das nur weil mir fast keine bzw. nur wenige der ähm _verkürzten Schreibweisen_ bekannt sind, im übrigen erfüllt der code seinen zweck prefect, also versteh ich nicht was du da von logik beibringen redest/schreibst

bitte antworten zu 2.!!

und zu 4. :)

4. diesmal ohne den MFC (-hrhr-):
ach nein, is ja wieder nur ne logikfrage :/ syntax is ja korrekt :) na egal:
Quellcode:
#include <iostream.h>
#include <stdio.h>

class Autos
{
public:
Autos():TuerenZahl(4) {}
~Autos() {}
int GetAnzahlTueren() { return TuerenZahl; }
protected:
enum Art { Mercedes, Porsche, Audi };
int TuerenZahl;
};

class Wagen : public Autos
{
public:
int SetArt(char *setart2)
{
//Hier ist irgendwo der Fehler :)
if (setart2 == "Audi")
{
return Autos::Art(Audi);
}
else if (setart2 == "Mercedes")
{
return Autos::Art(Mercedes);
}
else if (setart2 == "Porsche")
{
return Autos::Art(Porsche);
}
else
{
cout<< "Diese Firma ist NICHT in der Datenbank enthalten"<<endl;
return 0;
}
return 0;
}
};

class GetType
{
public:
char *Type2;
void GetType2(int Type)
{
if ( Type == 0)
{
Type2 = "Mercedes";
}
if ( Type == 1)
{
Type2 = "Porsche";
}
else
{
Type2 = "Audi";
}
}
};

int main(void)
{
Wagen artd;
Autos Tueren;
GetType art2;
char *eingabe = "";
cout<< "Firma eingeben (Mercedes, Audi oder Porsche)"<<endl;
cin>> eingabe;
art2.GetType2(artd.SetArt(eingabe));
printf("Die Wagen der Firma %s haben %d Tueren \n", art2.Type2, Tueren.GetAnzahlTueren());
return 0;
}

Anmerkung: Dieser Code soll keinesfalls einen Sinn haben, es ist nur eine kleine Spielerei mit Klassen( ich hab das in irgendnem Buch gefunden und STARK ausgebaut) und wehe es sagt jmd. das ich header verwenden soll, das mach ich dann erst wenn alles fertig ist

--

zum Seitenanfang zum Seitenende Profil || Suche
007
06.09.2001, 15:57
Laser



Nochmal zu deiner dritten Frage:
Es gibt keine deutsche Doku aber massig DX 8 Tuts im Naetz wenn willst kannst du mir ne privat message schreiben und ich geb dir welche
cu laser

--

zum Seitenanfang zum Seitenende Profil || Suche
008
06.09.2001, 19:11
Killing Me Softly



mani, tipp mal folgenden code ab (oder kopier ihn)
Quellcode:
void main()
{
    char *c = "blub";

    if (c=="blub")
        printf("ein blub ist ein blub.\n");
    else
        printf("mani ist verwirrt!\n");
}

Progrämmchen kompilieren; kurz überlegen, welche Meldung erscheinen muss; Progrämmchen starten; irritiert sein und danach den Post von Prefect nochmals durchlesen.

--

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

zum Seitenanfang zum Seitenende Profil || Suche
009
06.09.2001, 22:36
Prefect



Die Sache ist, es _kann_ funktionieren, je nachdem, welche Compilersettings du verwendest. Normalerweise speichern die meisten Compiler explizite Stringkonstanten als const char[], was normalerweise speichersparend untergebracht wird, und damit teilen sich die beiden "blub"s den gleichen Speicherbereich. In diesem Fall gibt der obige Code "ein blub ist ein blub" aus.

Aber auf sowas darf man sich nicht verlassen, denn es könnte ja sein, daß sich der Compiler einfach mal dazu entschließt, den Speicherbereich halt nicht zu teilen, und schon funktioniert das Programm nicht mehr. Auf keinen Fall funktioniert das Programm, wenn der String irgendwo anders herkommt. Also wenn man im obigen Beispiel

char *c = "blub";

durch

char *c = strdup("blub");

ersetzt zeigt das c auf einen anderen Speicherbereich als das "blub", obwohl natürlich in beiden Speicherbereichen das gleiche drinsteht.
Deswegen _immer_ strcmp verwenden.

cu,
Prefect

--

Widelands - Gemütliche Aufbaustrategie, Free Software
Noch ein Blog - Lerne, wie die Welt wirklich ist, aber vergiss niemals, wie sie sein sollte.

zum Seitenanfang zum Seitenende Profil || Suche