Bild-Dateien mit C++ Programm öffnen
-
Hallo!
Ich habe vor, ein openGL Programm zu schreiben, dass "Minecraft Skins" zeigt. Dazu braucht man eigentlich nur die .png und meine .exe - Datei. Wenn man auf einfachen Bild-Dateien rechtsklickt, kann man "öffnen mit ..." auswählen und ich wollte wissen, wie ich dann eine .png Datei mit meiner .exe öffnen kann ( wie z. B. mit Paint ), ohne dass ich in meinem Code den Datei-Namen angeben muss.
Ich habe schon auf google gesucht und nichts Passendes gefunden.
Ich hoffe, ihr versteht, was mein Problem ist!
Lg
SFandler
-
Wie man Windows beibringt, dass Dein eigenes Programm im "öffnen mit"-Dialog für PNG-Bilder auftaucht, weiß ich nicht. Das ist Windows-spezifisch und hat nichts mit C++ zu tun.
Soweit ich weiß, ruft Windows Dein Programm, wenn Du das Bild per Drag'n'Drop auf die Exe ziehst, Dein Programm auf, wobei der Dateiname des Bildes ein Programmparameter wird, der der main Funktion übergeben wird.
-
Ok danke für die Antwort.
Ich müsste jetzt nur noch wissen, wie ich den Dateinamen der .png Datei erhalte!
-
Den kompletten Pfad bekommst du als Argument übergeben:
int main(int argc, char** argv) { if(argc>1) cout << argv[1] << endl; }
-
Hirn Einschalten
int main(int argc, char *argv[]) { ^^^^^^^^^^^^^^^^^^^^^^
-
lalelula schrieb:
Hirn Einschalten

-
Danke!

-
Ich habe es jetzt ausprobiert und wenn ich eine Datei auf die .exe ziehe, öffnet es sich, aber im argv steht trotzdem der Pfad der .exe - Datei. Ich glaube nicht, dass ich etwas falsch gemacht habe

-
Hast du denn das richtige argv-Element angesehen? argv[0] ist üblicherweise der Programm-Name, argv[1] etc die übergebenen Parameter.
-
SFandler schrieb:
Ich habe es jetzt ausprobiert und wenn ich eine Datei auf die .exe ziehe, öffnet es sich, aber im argv steht trotzdem der Pfad der .exe - Datei. Ich glaube nicht, dass ich etwas falsch gemacht habe

Der Name/Pfad des Programms steht in argv[0].
Die Parameter stehen demnach ab argv[1].
Wieviel Paramter es insgesamt sind, steht in argc.
1 bedeuted, es steht etwas in argv[0]
argc : ARGument Counter
argv : ARGument Vector
-
Für so ein Programm würde ich wxWidgets oder QT hernehmen. Google mal nach den beiden Libraries und auch hier im Forum gibts ne Menge Threads dazu.
-
yahendrik schrieb:
Den kompletten Pfad bekommst du als Argument übergeben:
int main(int argc, char** argv) { if(argc>1) cout << argv[1] << endl; }Und dann must du in die Windows-Registry einen Eintrag ins Kontextmenü von Windows schreiben, der dein Programm mit dem Pfad als Parameter aufruft.
-
Ok es funktioniert jetzt, Danke! :
