Register for your free account! | Forgot your password?

Go Back   elitepvpers > MMORPGs > Flyff > Flyff Private Server
You last visited: Today at 11:47

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[HowTo] Fenster in Flyff programmieren

Discussion on [HowTo] Fenster in Flyff programmieren within the Flyff Private Server forum part of the Flyff category.

Closed Thread
 
Old   #1
 
elite*gold: 0
Join Date: May 2009
Posts: 122
Received Thanks: 160
[HowTo] Fenster in Flyff programmieren

Dies ist ein unvollständiges Tutorial der Fensterprogrammierung mit der MFC und Flyff, welches ich schnell mal in 10 min zusammengeschrieben habe, also erspart mir bitte jedgliches geflame.

1. Grundstruktur eines Fensters:
1.1 Headerdatei:
Hier werden die Funktionen und Variablen, die in der cpp Datei verwendet werden definiert. --> siehe Klassenkonzept
1.2 Quellcodedatei
Hier wird in die einzelnen Funktionen einer Klasse hineingeschrieben, was gemacht werden soll
Ein Funktionsname setzt sich zusammen aus: DatenTyp NameSpace::Funktionsname( Datentyp Parametername ... )

Damit ist bereits ein Fenster programmiert, und wenn es irgendwo im Client erzeugt und initialisiert wird, wird es im Spiel erscheinen:

2. In das oben erzeugte Fenster Tabs einfügen


Dazu müssen wir uns obiges Fenster als Container vorstellen, in welchen weitere Fenster eingebettet werden, die dann durchgeschaltet werden... Jeder Tab ist ein neues Fenster
2.1 Die Headerdatei

2.2 Die Quellcodedatei


2.3 Das Tab einfügen
um jetzt das Tab zu erzeugen müsst ihr in der CWndTest ein bischen was verändern:
in der Headerdatei folgendes hinzufügen:


und in der Quellcodedatei müsst ihr die OnInitialUpdate Funktion verändern:


Der Rest wird von der CWndBase automatisch erledigt...
Wenn ihr Näheres wissen wollt, dann seht euch die CWndCommItem Klasse an... da steht alles wichtige drin^^

Hier wird eine Liste mit allen Funktionen kommen, die ich von Zeit zu Zeit hinzufügen werde:

Funktionen:

Was vielleicht noch kommt : Fortschrittsleiste programmieren
Krustenkäse is offline  
Thanks
16 Users
Old 01/03/2012, 16:11   #2
 
elite*gold: 4
Join Date: Mar 2010
Posts: 3,148
Received Thanks: 1,535
hatte auch sowas schon vor naja aber so gut wie du hätt ich das net hingekriegt da ich kp von den tabs hab

Du könntest aber auhc noch OnDropIcon und so für die nicht so erfahrenen davon erklären. und OnLButtonUp damit man auch mehr nutzen kann als nur maus klicks ^^
Jopsi332 is offline  
Old 01/03/2012, 17:37   #3
 
elite*gold: 0
Join Date: May 2009
Posts: 122
Received Thanks: 160
Habe jetzt n paar Funktionen hinzugefügt
Krustenkäse is offline  
Old 01/03/2012, 17:43   #4



 
Sedrika's Avatar
 
elite*gold: 18
The Black Market: 103/0/0
Join Date: Sep 2009
Posts: 20,177
Received Thanks: 14,471
Hab es dem Index beigefügt, sehr interessant.
Sedrika is offline  
Thanks
1 User
Old 01/03/2012, 17:48   #5
 
elite*gold: 455
Join Date: Jun 2009
Posts: 1,601
Received Thanks: 1,103
Gefällt mir - Mal ein Tutorial was den Leuten die kein Plan von C++ haben (sowie ich ;D)
und sich damit doch ein wenig im Bereich Flyff damit auseinander setzen wollen hilft.
Flash! is offline  
Old 01/03/2012, 18:05   #6
 
elite*gold: 0
Join Date: Oct 2010
Posts: 271
Received Thanks: 206
Ich muss auch mal ein Lob aussprechen, solche TuTs sind echt was wert, da man auch selber überlegen muss nicht einfach nur c&p.
Incestus is offline  
Old 01/03/2012, 18:08   #7
 
elite*gold: 4
Join Date: Mar 2010
Posts: 3,148
Received Thanks: 1,535
ich habs mal mit den tabs ausprobiert spuckt haufen von errors aus. :C
Jopsi332 is offline  
Old 01/03/2012, 18:13   #8
 
elite*gold: 0
Join Date: Jun 2008
Posts: 198
Received Thanks: 72
Quote:
Ich muss auch mal ein Lob aussprechen, solche TuTs sind echt was wert, da man auch selber überlegen muss nicht einfach nur c&p.
Das ist nicht wahr du könntest es einfach alles kopieren einfügen, fertig.
Wird sicherlich einige voranbringen, aber auch noch mehr Fragen erzeugen,

Was du vll.t ändern solltest Funktionen haben am Anfang einen Rückgabewert, der aus einem Datentyp besteht, würden deklaration und funktionsdefinierung einen unterschiedelichen rückgabetyp haben würde die funktion nicht funktionieren. Das ist n Unterschied.
killerooo is offline  
Thanks
1 User
Old 01/03/2012, 18:17   #9
 
elite*gold: 0
Join Date: Dec 2011
Posts: 206
Received Thanks: 224
Schlecht erklärt. Alles was du da aufzählst lässt sich schon durch pures anglotzen anderer codes erklären. Dazu kommt das die meisten deklarationen sich selbsterklären wie z.b private: und public: dazu kommt das es noch protected: etc gibt...

Aber wieso wie und wozu bestimmte sachen da sind erklärst du garnicht und wo wird denn OnInitialize Initialize OnDraw etc gecallt? O_O
yannickFlyff is offline  
Old 01/03/2012, 18:19   #10
 
elite*gold: 0
Join Date: May 2009
Posts: 122
Received Thanks: 160
Quote:
Originally Posted by Jopsi332 View Post
ich habs mal mit den tabs ausprobiert spuckt haufen von errors aus. :C
Wäre vllt hilfreich die Errors zu posten

Quote:
Originally Posted by killerooo
Was du vll.t ändern solltest Funktionen haben am Anfang einen Rückgabewert, der aus einem Datentyp besteht, würden deklaration und funktionsdefinierung einen unterschiedelichen rückgabetyp haben würde die funktion nicht funktionieren. Das ist n Unterschied.
hm... irgendwie ist das selbstverständlich --> Klassenkonzept
Krustenkäse is offline  
Old 01/03/2012, 18:19   #11
 
elite*gold: 0
Join Date: Oct 2010
Posts: 271
Received Thanks: 206
Quote:
Originally Posted by killerooo View Post
Das ist nicht wahr du könntest es einfach alles kopieren einfügen, fertig.
Wird sicherlich einige voranbringen, aber auch noch mehr Fragen erzeugen,

Was du vll.t ändern solltest Funktionen haben am Anfang einen Rückgabewert, der aus einem Datentyp besteht, würden deklaration und funktionsdefinierung einen unterschiedelichen rückgabetyp haben würde die funktion nicht funktionieren. Das ist n Unterschied.
Ju, lässt sich kopieren und einfügen.
Aber versuch das mal zu builden.

PHP Code:
 DrawIrgendwasp2DRender, &ptxnScroll );    //Die Funktion übernimmt eine Referenz ( DrawIrgendWas( C2DRender* p2DRender, CPoint* pPoint, int x, int &nScroll ) ) 
Mr.Oberschlau.
Incestus is offline  
Old 01/03/2012, 18:27   #12
 
elite*gold: 0
Join Date: May 2009
Posts: 122
Received Thanks: 160
Quote:
Originally Posted by yannickFlyff View Post
Schlecht erklärt. Alles was du da aufzählst lässt sich schon durch pures anglotzen anderer codes erklären. Dazu kommt das die meisten deklarationen sich selbsterklären wie z.b private: und public: dazu kommt das es noch protected: etc gibt...

Aber wieso wie und wozu bestimmte sachen da sind erklärst du garnicht und wo wird denn OnInitialize Initialize OnDraw etc gecallt? O_O
Sorry, aber bei so ner klugscheisserei platzt mir echt der kragen...
1. ich habe diesen text in vllt 30 min jetzt zusammengeschrieben
2. wenn du wissen willst, wie die einzelnen funktionen aufgerufen werden, dann setz dich mit windows messages und der mfc auseinander... darüber gibt es bücher, die 150 seiten fett sind und noch lange nicht alles beinhalten
3. ist es nicht zweck dieses threads das klassensystem zu erläutern, weswegen du dir dein scheiss protected sonstwo hinstecken kannst
4. ist das hier eine erklärung, wie ein dialog aufgebaut ist und natürlich ist das für dich selbsterklärend... es gibt allerdngs leute, die in diesem bereich keine ahnung haben und für die ist dieser thread gedacht
5. habe ich zu den einzelnen funktionen hingeschrieben, wann sie aufgerufen werden o.o
Krustenkäse is offline  
Thanks
4 Users
Old 01/03/2012, 18:57   #13
 
elite*gold: 0
Join Date: Dec 2011
Posts: 206
Received Thanks: 224
Code:
CWndTest::CWndTest()
{
           //wird aufgerufen, wenn ich eine Variable des Typs CWndTest anlege
           //gut um Variablen zu initialisieren
}
Falsch.

Wird aufgerufen wenn man diese Klasse initialisiert.

Code:
CWndTest::~CWndTest()
{
           //wird aufgerufen, wenn die Variable gelöscht werden soll
           //gut um Speicher wieder freizugeben, falls Variablen wie Pointer oder andere Klassen ohne Destruktor verwendet werden
}
Falsch.
Wird aufgerufen wenn man diese Klasse wieder löscht also den Speicherbereich leert.

Code:
void CWndTest::OnDraw( C2DRender* p2DRender  )
{
           //Hier wird das Fenster gezeichnet
           //wichtig ist der Parameter p2DRender, über ihn können Icons u.ä. gerendert werden
Willst du nicht erklären was p2DRender ist? und über ihn werden nicht Icons usw gerendert. Auf ihn wird das ganze Window DRAUF gerendert.

Code:
           p2DRender->TextOut( m_nCtrlId[i].right-11,  GetWndCtrl( WIDC_CB_OPEN03 )->rect.bottom-11 , szTemp, 0xff1010ff );
           //Dieser Codeabschnitt rendert eine Zahl an das Itembild
}
Falsch.

In diesem Codeabschnitt wird einfach ein String auf die Neuz gerendert (auf p2DRender). Man gibt die Position an (in dem fall auf dem Icon) und dort wird der String gerendert.

Quote:
Originally Posted by Krustenkäse View Post
Sorry, aber bei so ner klugscheisserei platzt mir echt der kragen...
1. ich habe diesen text in vllt 30 min jetzt zusammengeschrieben
2. wenn du wissen willst, wie die einzelnen funktionen aufgerufen werden, dann setz dich mit windows messages und der mfc auseinander... darüber gibt es bücher, die 150 seiten fett sind und noch lange nicht alles beinhalten
3. ist es nicht zweck dieses threads das klassensystem zu erläutern, weswegen du dir dein scheiss protected sonstwo hinstecken kannst
4. ist das hier eine erklärung, wie ein dialog aufgebaut ist und natürlich ist das für dich selbsterklärend... es gibt allerdngs leute, die in diesem bereich keine ahnung haben und für die ist dieser thread gedacht
5. habe ich zu den einzelnen funktionen hingeschrieben, wann sie aufgerufen werden o.o
Bist'n noob der ein hauch mehr ahnung hat als 1% der community und keine Kritik ab kann.

Wenn du so ein schwachsinn innerhalb von nur 30 minuten hinkleisterst musst du dich nicht wundern das du bis ins Rückenmark kritisiert wirst.
yannickFlyff is offline  
Old 01/03/2012, 19:07   #14



 
Sedrika's Avatar
 
elite*gold: 18
The Black Market: 103/0/0
Join Date: Sep 2009
Posts: 20,177
Received Thanks: 14,471
Bevor ihr hier weiter "Krieg" führt mich ich mich mal ein.

Wenn ihr übertreiben wollt macht das per IM oder sonst wo aber nicht öffentlich.
Für die Hater: Ich werde jeglichen Spam ab jetzt reporten
Sedrika is offline  
Thanks
1 User
Old 01/03/2012, 19:14   #15
 
elite*gold: 0
Join Date: May 2009
Posts: 122
Received Thanks: 160
Quote:
Code:
CWndTest::CWndTest()
{
           //wird aufgerufen, wenn ich eine Variable des Typs CWndTest anlege
           //gut um Variablen zu initialisieren
}
Falsch.

Wird aufgerufen wenn man diese Klasse initialisiert.
...wenn ich eine variable anlege initialisiere ich sie auch gleich:
Code:
 CWndTest * pWndTest = new CWndTest;
oder bist du etwa jmnd der aus einer Zeile Code 2 macht?
CWndTest* pWndTest;
pWndTest = new CWndTest;
Quote:
Code:
CWndTest::~CWndTest()
{
           //wird aufgerufen, wenn die Variable gelöscht werden soll
           //gut um Speicher wieder freizugeben, falls Variablen wie Pointer oder andere Klassen ohne Destruktor verwendet werden
}
Falsch.
Wird aufgerufen wenn man diese Klasse wieder löscht also den Speicherbereich leert.
verrate mir bitte wo der unterschied zwischen deiner und meiner formulierung liegt... außer du meinst, dass ich statt dem wort klasse variable verwendet habe...
1. ist das dann korintenkackerei
2. ist eine angelegte klasse auch eine variable... guck dir mal bitte an was eine variable ist, dann können wir hier weiterreden

Quote:
Code:
void CWndTest::OnDraw( C2DRender* p2DRender  )
{
           //Hier wird das Fenster gezeichnet
           //wichtig ist der Parameter p2DRender, über ihn können Icons u.ä. gerendert werden
Willst du nicht erklären was p2DRender ist? und über ihn werden nicht Icons usw gerendert. Auf ihn wird das ganze Window DRAUF gerendert.
ach und icons sind also kein teil des sogenannten windows... und das is sowieso falsch, da nicht das komplette Fenster draufgerendert wird, sondern nur die GUI u.ä. und an die DirectX Environment weitergegeben werden. Objekte werden zB von der CObject3D Klasse gerendert, die ihrerseits wieder an DirectX weitergibt

Quote:
Code:
           p2DRender->TextOut( m_nCtrlId[i].right-11,  GetWndCtrl( WIDC_CB_OPEN03 )->rect.bottom-11 , szTemp, 0xff1010ff );
           //Dieser Codeabschnitt rendert eine Zahl an das Itembild
}
Falsch.

In diesem Codeabschnitt wird einfach ein String auf die Neuz gerendert (auf p2DRender). Man gibt die Position an (in dem fall auf dem Icon) und dort wird der String gerendert.
...siehe oben

und zum Abschluss:



//Edit: @Sedrika... habe deinen Post zu spät gesehen
Krustenkäse is offline  
Thanks
3 Users
Closed Thread

Tags
fenster, fenster programmieren, flyff, mfc


Similar Threads Similar Threads
[HOWTO]Chatfunktion finden + Spamer programmieren in C++
09/13/2011 - Metin2 Hacks, Bots, Cheats, Exploits & Macros - 46 Replies
Da ich jetzt pennen muss wegen meiner morgigen Zwischenprüfung, hier das Prerelease von meinem neuen Howto In diesem Howto finden wir die SendChatPacket-Funktion in Ollydbg und benutzen sie anschließend für einen Spamer Alles auf Metin2-DE ;) Part 1: YouTube - Chatfunktion finden + Spamer programmieren in C++ PART 1/3 Part 2: YouTube - Chatfunktion finden + Spamer programmieren in C++ PART 2/3
[HOWTo]VB Bot Programmieren
07/05/2011 - Coding Tutorials - 11 Replies
Hallo Com, :D Ich mach mal ein Theard auf wie man mit VB Bots Programmieren kann... Ich werde vllt hin und wieder andere TuTs dazu edieren da steht dann immer drunter von wem das ist. Ich fang auch gleich an: VB Tasten klicken lassen Funktion:



All times are GMT +2. The time now is 11:53.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.