CCEngine
-
Hey ich glaube ich mach mal wieder was.
Mir ist gestern eingefallen , das eig. was ziehmlich praktischen/nützliches fehlt.
Mouse/Keyboard support.Ich hab schon ein bisschen rumprobiert , sehr weit noch nicht , aber es gehtsetMouseButtonArea(int h,int w,COORD pos,MOUSE_BUTTON);
Ein problem das ich hab , was in meinem kopf kursiert , ist die auszuführende aktion , wenn man in diesen Bereich drückt.Ich habe mir überlegt , einen platz für eine benutzerdefinierte funktion zu schaffen
setMouseButtonArea(int h,int w,COORD pos,MOUSE_BUTTON,yourvoid());
Ob das so geht muss ich noch sehen , wenn jemand ne gute idee hat , wäre ich ihm sehr verbunden.
Was ich noch mache ,
die nervenden namespaces entfernen ,
und die Klassen namen umändern ,
so wie ein bugfix , das beisetCenterBox();
auftritt , bei den coord. für den text ist 0 1 , 1 2 usw , warum auch immer.
Wenns soweit fertig ist , stell ich download rein.
Bis denn
-
Was genau soll deine Funktion, die du in deinem letzten Beitrag erwähnt hast, denn machen? Soll diese einen Bereich auf dem Desktop(?) setzen und reagieren, wenn die jeweile Maustaste in diesem Bereich gedrückt wurde?
Und scheinbar willst du eine Funktion als Parameter übergeben, verstehe ich das richtig? Wenn dem so ist, kannst du dir mal boost::function anschauen.
Dann könntest du sowas in der Art machen:setMouseButtonArea(int heigth, int width, COORD pos, MOUSE_BUTTON mb, boost::function<void ()> action);
Wobei ich vielleicht noch eine/mehrere Überladung/en anbieten würde, bei der die Koordinaten an die zu ausführende Funktion mit übergeben werden. Je nach Anwendungsfall, oder Sinn deiner Idee, könnte man sowas brauchen, um spezifischer darauf zu reagieren. Oder man will eventuell etwas anders reagieren wenn die linke oder rechte Maustaste gedrückt wurde.
Aber wie gesagt, dass solltest du mal näher erläutern.
-
Ok da der erste post von dir nicht gelesen wurde , du hast aber trotzdem recht , werd ich noch mal sagen , das das alles für die console ist, MOUSE_BUTTON ist nur ein enum , hab ich hier schlecht dargestellt.
Das mit boost werde ich mir mal ansehen , auch wenn ich lieber was ohne boost bevohrzuge(nicht das boost schlecht ist !!!)
Im großen und ganzen will ich
setMouseButtonArea(int h,int w,COORD pos,MOUSE_BUTTON); if mouse_button == key.pressed (hier nur mit den 3 maustasten halt) dievoiddiedannausgeführtwerdensoll();
-
Sozusagen hier soll fff durch say ersetzt werden
void ausf(void fff){ fff();} void say(){cout << "sda\n";} int main() { ausf(say()); }
durch ausf() soll nun say() ausgeführt werden
-
Wenn du kein boost willst, musst du es halt per Hand machen. Schau dir Funktionspointer an.
Ein Funktionspointer wird folgendermaßen definiert://Rückgabetyp (*Name)(Parameter, ...) = &Funktion; void (*functionpointer)() = &say; ausf(functionpointer);
Bei deinem Beispiel wurde das dann so aussehen:
void ausf(void (*fp)()) { fp(); } void say() { std::cout << "sda\n"; } int main() { ausf(&say); }
Oder auf deine Funktion übertragen:
setMouseButtonArea(int h, int w, COORD pos, MOUSE_BUTTON mb, void (*action)()) { //... action(); }
Aber da schaust du am besten nochmal selbst nach.
-
Wow das ist echt genial.
Ich muss ehrlich sagen , das ich das nicht hinbekommen hätte , und wenn sicher nicht so schön.Vielen dank man
Ich werd jetzt mal die cpp referenz ansehen und mir das aneigene.
Danke nochmal
-
Muhahaha....
Ok ich bin gerade dabei , eine Homepage für das ganze zu entwerfen
Nein sie ist nicht fertig.
Könnt ja mal vorbeischauenArbeite außerdem gerade an einem neuen release 1.2 ...
-
Aus welchem Homepagebaukasten haste die denn ausgebuddelt? Und höre bitte auf zu plenken, das ist schrecklich...
Btw: Es heißt "kompetent"
-
Kóyaánasqatsi schrieb:
Ich habe mal schnell was getibbelt; So in etwa stelle ich mir ein FileSystem vor: (Ist natürlich nicht vollständig)
http://codepad.org/Au4TJEtd
Und durch den "m_AbleToOpen"-State könnte man später sogar nochmal einen assert() aufrufen, wie man will... nur so als Tipp.Also ich sehe nur Nachteile gegenüber std::fstream (und davon einen Haufen!). Was willst du also damit`