Zum Inhalt springen

Kampfkartoffel

Mitglieder
  • Gesamte Inhalte

    77
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von Kampfkartoffel

  1. @ Klotzkopp, es sieht in der Tat so aus, als ob mein PropertySheet mein erstes Fenster ist. Die MinimizeBox zeigt er nun auch an. Danke dafür. Nur die Funktion macht er nicht, muss ich die über einen Handle selber schreiben? Gruß KK
  2. @Klotzkopp, bei dem Button, den ich auf die Ebene des Propertysheet gezeichnet habe und der das Minimieren codemäßig macht, über: SendMessage(WM_SYSCOMMAND, SC_MINIMIZE, 0); minimiert sich mein Programm in die Taskleiste. Daher muss es doch möglich sein diese Funktion über eine MinizeBox zu ersetzen, oder? Gruß KK
  3. Hi Hexagon, ja das macht Sinn. Ich habe den Code in mein Vaterfenster gesetzt. Die Basisklasse meines Vaterfensters ist CWinApp. Der Compiler sagt mir jedoch, dass PreCreateWindow kein Element von dieser Basisklasse ist. Noch mal zur Erklärung: Ich initialisiere in meinen Hauptprogramm (Programm.cpp) die PropertySheetklasse und adde Pages. Dann gehe ich über DoModal in das PropertySheet-Fenster rein. Gruß KK
  4. Hallo @ Hexagon: Danke für die Antwort,ich habe den Code integriert, er gibt keinen Fehler aus, zeichnet aber keine MinimizeBox ein. Mein Code: BOOL CParentSheet::PreCreateWindow(CREATESTRUCT &cs) { // Minimize-Button rein... cs.style |= WS_MINIMIZEBOX; if( !CPropertySheet::PreCreateWindow(cs) ) return FALSE; return TRUE; } @ Klotzkopp: Mein PropertySheet ist das Kind von der Hauptklasse. Da auf dem PropertySheet unten Buttons wie "Übernehmen" usw. auftauchen, dachte ich mir, dass man doch sicher oben auf der selben Zeichenebene die MinimizeBox setzen kann. Ich habe bisher einen eigenen Button geschrieben, den ich codemäßig nach oben rechts zeichne und der dann die Minimize-Funktion ausführt. Das sieht aber irgendwie amateurhaft aus. Ich bin zwar einer, aber das soll ja nicht jeder direkt sehen Gruß KK
  5. Ich habe das gerade bei meinem PropertySheet ausprobiert und da macht er es nicht. Wie kann ich denn meinem PropertySheet sagen, das er eine MinimizeBox einfügen soll? Sie ist ja kein Dialog mit Oberfläche. Gruß und vorzeitiger Dank KK
  6. Oh Mann, es geht zu Ende mit mir. Das kann jawohl nicht wahr sein. Da such ich und mach und tue und dann ist das ganze so einfach. Danke Klotzkopp, aber Du hättest Dir zumindest was Komplizierteres ausdenken können, um ein bisschen so zu tun als ob das ne große Sache wäre. Nochmal Danke und Gruß KK
  7. Hallo Klotzkopp, danke für die schnelle Antwort. Ich arbeite mit dem VisualStudio 2003 VC++.net. Meine jetzige Anwendung ist ein normales dialogbasierendes Projekt. Ich möchte dasselbe jedoch auch bei meinem PropertySheet-Projekt anwenden. Ich hoffe das beantwortet Deine Fragen. Gruß KK
  8. Hallo, ich habe ein Projekt erstellt und vergessen im VisualStudio die MinimierenBox zu aktivieren. Nun frage ich mich, wie man das codetechnisch nachschreiben kann. Oder anders, weiss jemand wo diese Information beim Erzeugen des Projektes hingeschrieben wird? Meine erste Idee war, die MinimierenBox genauso zu aktivieren, wie ich bei einem PropertySheet in einem anderen Projekt die Buttons des Sheets deaktiviert habe. Ich habe aber keine Ahnung über welche ID ich die MinimizeBox "packen" kann. Danke im Voraus KK
  9. Hallo Knapp, danke für Deine Antwort, ich habe mit der Vektorklasse noch nie gearbeitet, kannst Du genauer beschreiben, wie mir das helfen könnte? Danke KK
  10. Hallo an Alle, es wäre nett, wenn ihr mir bei meinem Programm einen kleinen Denkschubser geben könntet. Ich möchte zwei Textdateien miteinander vergleichen und die Unterschiede kenntlich machen. Dies geht jedoch nicht zeilenweise, sondern muss formatiert passieren. Ich glaube nicht, dass ich die vorherrschende Datenstruktur so einfach erklären kann, daher nur folgendes, ich glaube das einfachste für mein Programm wäre, wenn es im Abarbeiten des Vergleichs dynamisch neue Felder erstellen würde, die dieselbe Struktur haben, wie ein vorgegebenes. In diese Felder könnte ich dann immer die entsprechenden Werte speichern. Nur habe ich keine Ahnung wie das gehen könnte. Hat da jemand einen Tip? PS: Nun nochmal zum Versuch die Struktur ein bisschen klarzumachen: Die Struktur ist eine einzige große Verschachtelung von Oberbegriffen, die Unterbegriffe beinhalten, von diesen Unterbegriffen sind einige wieder Oberbegriffe für andere Unterbegriffe usw.. Einige Oberbegriffe können in ihrem eigenen Oberbegriff mehrfach vorkommen und nur über bestimmte ihrer Unterbegriffe identifiziert werden. Falls jetzt jemand ein bisschen verstanden hat, was ich meine und eine Idee hat, wie man sowas anpackt, würde ich mich freuen davon zu hören. Mit Dank und herzlichem Gruß KK
  11. Hallo Bubble, wieviele Felder es waren, habe ich nicht gezählt. Ich habe nun mein Design auch geändert, da das ganze mit Listboxen die man befüllt schöner aussieht und ich davon in diesem Fall nur sehr weinge brauche. Meine Frage war mehr interessenmäßig, da ich auf Verdeih und Gederb keine weiteren Editfelder erstellen konnte. Es muss jedoch mit der Größe des Dialogs zu tun haben, da ich in einem vorherigen Programm deutlich mehr EditFelder untergebracht habe. Bei diesem war der Dialog aber auch größer. PS: Über den Daumen müssen es so 190 EditFelder gewesen sein. Gruß KK
  12. Hallo an alle, ich habe einen Dialog auf dem sehr viele Editfelder platziert wurden. Nun brauche ich noch weitere Editfelder und stehe vor dem Problem, dass mir der Steuerelement-Editor von VC++ weitere Editfelder verweigert. Dabei ist es egal, ob ich schon vorhandene Editfelder kopiere und einfüge oder neu erstelle. Gibt es eine Höchstanzahl von Editfeldern, die man bezogen auf die Größe haben darf? Zur Info: Da ich meine Editfelder ID-technisch nummeriert habe um sie schleifen-fähig zu machen, kann ich ausschließen, dass das Feld irgendwo unter einem anderen Feld oder sonst nicht ersichtlich erstellt wird. Wenn mein letztes EditFeld z.B 200 ist, müsste das nächste 201 sein. Nach der scheinbaren Erstellung kann ich mein altes Feld aber ohne Fehlermeldung in 201 umbenennen. Wenn er was erstellt hätte, ginge dies nicht. Gruß KK
  13. Hallo Klotzkopp, mann, jetzt habe ich Idiot verstanden, was Du mir mitteilen wolltest. Da ich pDaten über HD zugewiesen habe, dann aber in Programm2.cpp den Dialog mit einer anderen Variable über DoModal aufgerufen habe, hat er natürlich nicht mehr die Adresse der Zuweisung, da es sich ja um eine ganz andere Variable handelt. Jetzt sehe ich im Debugger auch, dass der Pointer dieselbe Adresse hat. Dank Dir. Gruß KK
  14. Abbrechen mit EndDialog funktioniert nun einwandfrei. Danke noch mal KK
  15. Hallo Klotzkopp, gibt es irgendein Hilfstool, dass mir bei meiner Suche helfen kann? Die Instanzen mit denen ich arbeite, erstelle ich eigentlich nur einmal. Wenn dies so wäre, müsste das Programm jedoch die Adresse weitergeben und einwandfrei laufen, das sehe ich schon ein. Ich habe nur keine Ahnung wie ich jetzt weiter vorgehen soll. Ich habe in jeder Klasse einen Pointer zu CDaten erstellt. Ich finde halt auch keinen Unterschied zu meinem PropertySheet-Programm. Kann man sich in einem Hilfstool anzeigen lassen, wann das Programm etwas erstellt, um zu sehen wann er die anderen Instanzen erzeugt? Und ja, den globalen Zeiger habe ich nur erstellt um zu sehen ob das mit derselben Adresse passt. Muss zwar logisch so sein, aber zur Zeit ist Kontrolle für mich noch besser Mit Dank und Gruß KK
  16. Hallo nochmal, ich habe noch mal ein ähnliches Problem, wie bei meinem PropertySheet-Thread. Ich habe einen Hauptdialog, der 2 andere Dialoge aufruft. Da zwischen den Dialogen ein Datenaustausch stattfinden soll, möchte ich wieder über eine externe Datenklasse gehen. Ich habe alles so erstellt wie bei meinem PropertySheetprogramm und der Compiler gibt keinen Fehler. Wenn ich jedoch das Programm starte, sagt er mir sobald ich auf die Datenklasse zugreifen möchte: Zugriffsverletzung-Leseposition! Mein Code: Programm2.h #include "resource.h" // Hauptsymbole #include "Daten.h" ... CDaten *pDaten, mDaten; Programm2.cpp #include "stdafx.h" #include "Programm2.h" #include "Dialog1.h" #include "Dialog3.h" #include "Programm2Dlg.h" ... CDialog1 D1; CDialog3 D3; CProgramm2Dlg HD; pDaten=&mDaten; D1.pDaten=&mDaten; D3.pDaten=&mDaten; HD.pDaten=&mDaten; als Beispiel: Programm2Dlg.h #pragma once #include "afxwin.h" #include "afxtempl.h" ... CDaten *pDaten; Programm2Dlg.cpp #include "stdafx.h" #include "Programm2.h" #include "Dialog1.h" // Da der Hauptdialog, Dialog1 und Dialog3 modal aufruft #include "Dialog3.h" // stehen sie vor dem Hauptdialog #include "Programm2Dlg.h" #include ".\programm2dlg.h" Wenn ich mir den Programmablauf im Debugger anschaue, sehe ich, dass er bei der Adressenzuweisung in Programm2.cpp (HD.pDaten=&mDaten) immer dieselbe Adresse vergibt, wenn ich jedoch in der Klasse von der Variablen HD bin, dann hat der Pointer "pDaten" die Adresse nicht übernommen und zeigt an, ihm wäre keine Adresse zugewiesen worden. Ich schicke also im Programm2.cpp dieselbe Adresse an alle Pointer und diese zeigen sie mir dort auch an. Aber in den Klassen selbst ist sie nicht mehr da. Ich habe zwar den Code von meinem Propertysheetprogramm vorliegen, finde aber keinen Fehler. Weiss jemand woran das liegen könnte? Gruß KK
  17. Ja danke Klotzkopp, das hört sich deutlich besser an. Das werde ich ausprobieren. Jetzt habe ich auch endlich den Sinn der Syntax von EndDialog verstanden. Du scheinst ja auf dem Programmiersektor ziemlich fit zu sein. Kannst Du mal sagen, wie Du zu diesem Wissen gelangt bist? Kannst Du gute Bücher oder irgendeine bestimmte Herangehensweise empfehlen? Ich will ja nicht auf ewig so dämliche Fragen stellen müssen Gruß KK
  18. Hallo Klotzkopp, soll also heissen, wenn ich den zweiten Dialog mit z.B. EndDialog(1) beende, dann kann ich auf diesen Wert mit einer if-Abfrage in meinem HauptDialog reagieren und ihm sagen, dass er den Hauptdialog auch schließen soll? Gruß KK
  19. Hallo baba007 und Klotzkopp, exit funktioniert wunderbar, jedoch arbeite ich mit CList-Objekten, die eine automatische Lebensdauer haben. Mein Programm besteht aus einem Dialog, der aus Dateien inhaltlich Datenpfade liest und checkt, ob diese Datenpfade existieren. Wenn die Datenpfade existieren, werden sie in eine Liste eingetragen. Sobald ein Pfad nicht existiert wird ein anderer Dialog aufgerufen, der fragt, wie der User damit umgehen möchte, ob er den Pfad löschen, beibehalten oder neu suchen möchte. Die Firma für die ich das Programm schreibe, möchte in diesem Dialog auch noch einen Button, der das gesamte Programm sofort beendet. Ich habe bisher noch keinen Befehl gefunden, der das komplette Programm unverzüglich schließt. Wenn ich mit EndDialog oder OnOK arbeite, macht das Programm erst mal weiter und schließt den Hauptdialog bedeutend später. Gruß KK
  20. Hallo baba007, danke für die schnelle Antwort. Ich werde das morgen direkt ausprobieren. Gruß KK
  21. Hallo, kennt einer von Euch einen Befehl, der sofort das laufende Programm unterbricht? Die Befehle, die ich gefunden habe sind: OnOK, OnCancel oder EndDialog. Diese beenden jedoch nicht direkt das komplette Programm. Gibt es nicht irgendeinen Holzhammerbefehl, so eine Art Arnold Schwarzenegger? Dank und Gruß KK
  22. Wollte nur kurz mitteilen, dass es läuft. Dank an Anybody Gruß KK
  23. Danke Anybody, ich denke dann komme ich erstmal klar Gruß KK
  24. Hallo, dachte ich es mir doch Es ist eine MFC-Anwendung @Anybody Danke für die Hinweise, ich werde mich da mal durcharbeiten. Kannst du mir vielleicht noch mitteilen, in welcher Registry-Datei dieses Programm auftauchen muss? Gruß KK
  25. Hallo, folgender Sachverhalt: Ich habe ein Programm geschrieben und möchte, dass wenn ich auf eine Datei klicke, die das Programm einlesen kann, dieses Programm gestartet und automatisch die Datei eingeladen wird. Meine Frage ist nun, wie ich im Programm selber die Parameter auslesen kann, mit denen es gestartet wurde. Als Beispiel: Wenn ich auf c:\ die "Text.txt" anklicke, die mit dem Notepad geöffnet wird, dann wird ja sehr wahrscheinlich das Notepadprogramm mit "Notepad.exe C:\Text.txt" angesprochen und Notepad weiss damit, dass er direkt die Datei C:\Text.txt einlesen soll. Wie kann ich nun diese Startparameter in meinem Programm abfragen, um direkt die angeklickte Datei einlesen zu können? Hat sich damit schon mal jemand befasst? Gruß KK

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...