Falls es noch jemanden interessiert:
http://www.galileocomputing.de/openbook/visual_csharp/
Beiträge von Herb
-
-
Einfach ein neues Projekt anlegen (von einzeilnen Dateien will VC nichts wissen), als Typ Konsolenanwendung angeben, dann erhählts du ein Projekt und normalerweise wird dann eine erzeugt und geöffnet, in der die main() drinsteht. Diese Datei bearbeiten, übersetzen und ausführen.
Das "Problem" ist, dass VC eine Entwicklungsumgebung und nicht einfach nur ein Compiler ist. Wenn du damit arbeiten willst, kommst du nicht drum herum dich ein wenig damit zu beschäftigen (obwohl es sich in Grenzen hält). -
-
Warum es nicht funktioniert kann ich nicht sagen, da hast du doch ein bisschen wenig beschrieben. Eine normales "Hello World" in C++ sieht in etwa so aus:
C#include <iostream> #include <conio.h> int main() { std::cout << "Hello World"; getch(); return 0; }
Wenn du managed C++ verwendest, siehts so oder so ähnlich aus (weiß grad nicht auswendig)
Code#using <mscorlib> // .h? int main() { System::Console::Out::Writeln ("Hello World"); System::Console::In::Readln(); return 0; }
Allerdings musst du bei managed c++ noch Verweise in den Projekteinstellungen vornehmen. Vermutlich liegt auch darin dein Fehler, wenn sich dein Code übersetzen aber nicht ausführen lässt (gilt für managed und "normales" c++).
Hoffe es Hilft die irgendwie weiter. -
Aus Erfahrungen mit C# (managed C++ habe ich noch nie Programmiert) weiß ich, dass einem der Designer Änderungen an manchen Stellen im generierten Code ziemlich übel nimmt (Genau die von dir genannte Fehlermeldung). Kann gut sein, dass er Änderungen an Headerdateien in managed C++ auch nicht mag. Wenn's garnicht geht, schreib doch eine eigene Headerdatei und binde sie in den ein wo du deine Struktur benötigst. Hoffe es Hilft Dir weiter, hab wie gesagt noch nicht mit managed C++ gearbeitet.
-
Also ich kenn ja dein WndProc nicht, aber zur DefWindowProc wird normalerweise gesprungen, wenn du ein Ereignis innerhalb des switch / case Blocks nicht bearbeitest (was im Normalfall recht viele sein dürften).
Aber versuch doch mal, deinen Breakpoint vor das switch zu setzen. Wenn das nicht geht, mach halt ein paar Dummyzeilen wie
davor, dort sollte ein Haltepunkt auf jeden Fall funktionieren. Außerdem solltest Du darauf achten, wirklich genau den case - Block zu debuggen, der dich gerade interessiert, so hängst du dich mit anderen Messages (vor allem WM_PAINT) auf. -
Die benötigten Header stehen (meistens) unten in der Hilfe.
Zu den includes bleibt zu sagen:
C#include "dateiname mit Erweiterung" //Bei Absoluten Pfadangaben #include <dateiname mit Erweiterung> // Dateien in einem Verzeichnis, das in VS (im Projekt) als Includeverzeichnis angegeben ist
d.h. in deinem Beispiel würde ich malversuchen. Bei manchen includes muss die dateinamenerweiterung allerdings weggelassen werden, z.b:
. Ich hab keinen blassen schimmer wieso, vermutlich hat die datei keine Erweiterung.
Wichtig ist auch, auf namespaces zu achten, und die stehen, glaube ich, nicht in der Hilfe. Du musst zum Beispiel
schreiben anstatt:.
Oder du gibst vorher an, dass du einen Bestimmten Namespace benutzen willst:
Namespaces sind C++ standard, allerdings kenne ich keine IDE oder Compiler, die das bei Standardbibliotheken haben will, und ist auch in keinem Buch das ich kenne so beschrieben (Ist wohl wieder eine Eigenheit von VS.net, bei VS 6 gings noch ohne).
Ich hoffe es hat die irgendwie geholfen.
Ich hoffe es hat dir ein wenig geholfen. -
Also ich hab mir gerade mal die Beschreibung von Resource Hacker durchgelesen. Damit ist es anscheinend wirklich möglich einen Dialog als Resource in ein Programm zu integrieren. Soweit so so gut. Jetzt musst du deinem Programm nur noch irgendwie klar machen, wann es den Dialog anzeigen soll, wie es auf Ereignisse (z.B. Klick auf einen Button usw.) reagieren soll.
Und da hab ich so meine Zweifel dass der Resource Hacker sowas kann.
Und - jetzt nicht böse sein - was hat das alles mit (Visual) C++ zu tun? -
Nein, ist nicht möglich. Du könntest höchstens ein Programm schreiben, das eine Fenster öffnet und dann das eigentlich Installationsprogramm dann startet, z.B
Code#include "windows.h" int main() { MessageBox("Meldung", "Titel", MB_OK); //fehlt da was? createProcess(..."datei.exe"...); //weiß nicht auswendig, was da alles rein muss return 0; }
Wird allerdings schwierig, wenn du nicht Programmieren kannst.
Oder es gibt Tools, die sowas können. Oder du kennst dich sehr, sehr gut aus, dann kannst du es vielleicht auch hacken.
Wieso willst du an ein fremdes Programm überhaupt was anhängen? -
Bei Qt ist kein Compiler dabei. Es ist ja nur eine Lib. Übersetzen musst du das Ganze mit deinem Compiler, also Borland C++ Designer.
Was bei Qt dabei ist ist der Designer - was du damit erstellst wir mit einem Tool (weiß den Namen grad nicht mehr, ist aber dabei ) zu C++ Code übersetzt.
Am besten du suchst nach einem Tutorial für Qt. Wie es jetzt mit dem Borland C++ Builder genau funktioniert weiß ich nicht, arbeite selbst mit Visual Studio.
Den Designer brauchst du allerdings nicht unbedingt, du kannst den Code für die Oberfläche auch selbst erstellen, und das ist fast schon Java mäßig, so à la:
Das das jetzt 100%ig korrekt ist glaube ich nicht, hab schon länger nicht mehr mit Qt gearbeitet, aber so ähnlicht müsste das aussehen. Ist doch auf jeden Fall gemütlicher als mit der Win32 API.
Wenn du mit Events arbeitest (Signals und Slots) musst du außerdem einen Benutzerdefinierten Buildschritt (moc.exe) einfügen - ist so eine bereits erwähnte Eigenheit von Qt.
Wenn du allerdings erstmal weisst, wie die Konfiguration im C++ Builder aussieht, ist Qt wirklich sehr angenehm zu programmieren.