Alle Beiträge von Klotzkopp
-
Ordner erstellen
Unter Windows (außer 9x) kannst du SHCreateDirectory benutzen, das hat den Vorteil, dass fehlende "Zwischenordner" gleich mit erstellt werden. Wenn es auch mit Windows 95/98 funktionieren soll, kannst du CreateDirectory benutzen.
-
? CTreeCtrl ?
Die Frage verstehe ich nicht. TVIF_IMAGE ist ein Flag für die Maske. Dieses Flag hast du in deinem ersten Beitrag bereits benutzt. Du hast nur die Indexwerte für die Bilder nicht gesetzt: TV_INSERTSTRUCT tvinsert; tvinsert.hParent = NULL; tvinsert.hInsertAfter = TVI_LAST; tvinsert.item.mask = [b]TVIF_IMAGE[/b] | TVIF_SELECTEDIMAGE | TVIF_TEXT; tvinsert.item.hItem = NULL; tvinsert.item.state = 0; tvinsert.item.cchTextMax = 6; tvinsert.item.cChildren = 0; tvinsert.item.lParam = 0; [b]tvinsert.item.iImage = 1; tvinsert.item.iSelectedImage = 2;[/b] //* SERVER tvinsert.item.pszText = "SERVER"; HTREEITEM hWurzel = m_CtrlTree.InsertItem(&tvinsert); [/CODE] Damit wird für den Server, wenn er nicht ausgewählt ist (iImage), das zweite Bild aus der ImageList verwendet, und wenn er ausgewählt ist (iSelectedImage), das dritte Bild. Wenn du keine unterschiedlichen Bilder für ausgewählt/nicht ausgewählt brauchst, setzt du einfach beide auf denselben Wert. Hast du überhaupt dem Tree Control die ImageList zugewiesen, mit CTreeCtrl::SetImageList?
-
? CTreeCtrl ?
Das ist ganz böse, das solltest du dir schnellstens abgewöhnen. Mit dem Cast stellst du den Compiler ruhig, damit sagst du quasi: "Halt den Mund, ich weiß es besser als Du". Der Compiler ist brav und denkt sich, Filou wird schon wissen, was er tut. Das ist aber nicht der Fall Also: Casts nur dann, wenn es einen guten Grund gibt. Nicht, um Compilerfehlermeldungen loszuwerden.
-
? CTreeCtrl ?
Wenn du beim Anlegen der Items TVIF_IMAGE angibst, musst du auch tvinsert.item.iImage und tvinsert.item.iSelectedImage zuweisen. Das sind die Indizes auf die ImageList. Wie schon gesagt, ich empfehle, alle Item-Bilder nebeneinander in eine Bitmap-Ressource zu packen. Dann brauchst du gar kein Add mehr. Auch in deinem Beispiel ist Add unnötig, weil das Icon schon durch den Create-Aufruf in der ImageList landet. Wenn du wirklich mehrere Icons einzeln mit Add hinzufügen willst, dann schau dir LoadImage an.
-
? CTreeCtrl ?
Den "besten" wage ich zu bezweifeln, den "Freak" nehme ich dir übel (), und die multiplen Satzzeichen finde ich furchtbar "Funktioniert nicht" ist keine ausreichende Fehlerbeschreibung. Sag, was du gemacht hast - wenn möglich, mit Code - und beschreib genau, wie sich der Fehler äußert. Ja bitte. Ein Thema - ein Thread, ein Thread - ein Thema.
-
? CTreeCtrl ?
Andere hier sind auch hilfreich, ist ja keine Ein-Mann-Show Ganz genau. Wenn die Bilder schon zur Compilezeit bekannt sind, lädst du die Imagelist am einfachsten aus einer einzigen Bitmapressource, die alle Bilder nebeneinander enthält. Du musst bei InsertItem das HTREEITEM des Elternknotens angeben. Tust du das nicht, wird TVI_ROOT genommen, damit wird das neue Item unterhalb des (unsichtbaren) Wurzelknotens eingefügt.
-
C++ MFC Dialoganwendung - Startparameter
CWinApp::ParseCommandLine sollte das sein, was du suchst.
-
Snap In für Microsoft Management Console
MMC Programmer's Guide
-
Screensaver
Es sollte ausreichen, die .exe-Datei in .scr umzubenennen.
-
Label in einem Listenfeld editieren
EditLabel tut nichts weiter, als ein Eingabefeld zum Editieren anzuzeigen. Den Text im ListControl musst du schon selbst ändern. Als erstes musst du dazu die Nachricht abfangen, die gesendet wird, wenn der Benutzer das Editieren beendet: LVN_ENDLABELEDIT.
-
Unterschiede : Visual C++ x.x zu .net
Und ich bin mir ziemlich sicher, dass es erlaubt ist, Programm, die mit der Standard-Edition erstellt wurden, zu vertreiben, und das schon seit VC++6. Ich habe gerade keine SE-EULA hier, aber ich kann es in den nächsten Tagen prüfen. Was meinst du mit "gescannt"? Eines der Features, die bei der Standard-Edition fehlen, ist der optimierende Compiler. Das ist schon ein gewaltiger Unterschied.
-
CMD Text ausgeben
Wenn du den cmd-Prozess mit CreateProcess erstellst, hast du die Möglichkeit, dem Prozess neue Handles mitzugeben, die dieser für STDIN, STDOUT und STDERR benutzt. Wenn du dafür Pipe-Handles benutzt, kannst du die Konsole "fernsteuern" und die Ausgabe wie aus einer Datei lesen.
-
Automatische Systemmeldung bei leerem Diskettenlaufwerk
Ist kein Problem. Du kannst ja zur Laufzeit die Windowsversion prüfen und gegebenenfalls eine DLL mit den WMI-Funktionen laden.
-
UTF-8 Konverterfunktion
Das entsprechende Sprachpaket muss installiert sein.
-
Automatische Systemmeldung bei leerem Diskettenlaufwerk
Das ist jetzt mehr ein Schuss ins Blaue, aber du könntest unter NT/2000/XP versuchen, ob du mit Windows Management Instrumentation (WMI) bessere Ergebnisse erzielst. Die WMI-Klasse Win32_DiskDrive hat ein Member MediaLoaded, das könnte das sein, was du suchst.
-
Target einer Verknüpfung auslesen.
Windows bietet Funktionen, um solche Links aufzulösen. Ich könnte dir sagen, wie es mit C++ geht, aber ich bin nicht sicher, ob dir das weiterhilft. Stichworte sind die Interfaces IShellLink und IPersistFile und deren Methoden IShellLink::Resolve IShellLink::GetPath IPersistFile::Load
-
calc und string
Zu deinem ersten Problem: Du kannst einen C-String nicht einfach in eine Zahl umwandeln, indem du int() drumherum schreibst. Du kannst - je nach Sprache - Stringstreams oder Funktionen wie atoi oder sscanf benutzen. Zu deinem zweiten Problem: 1. String aufteilen, Einzelteile in Liste speichern. 2. Nach Minuszeichen suchen 3. Wenn ein Minuszeichen gefunden wird, den "Sammeleintrag" aufteilen und durch mehrere "Einzeleinträge" ersetzen. Wo genau hakt's?
-
UTF-8 Konverterfunktion
Verstehe ich das richtig, dass du den String "Häuser" als Eingabe für die Konvertierung UTF8 nach ANSI benutzt? Wie kommst du darauf, dass "Häuser" ein gültiger UTF8-String ist? Unter Windows ist ä hex E4, also 1110 0100. Damit müsste das Sonderzeichen durch eine Drei-Zeichen-Repräsentation dargestellt werden. Bei den nachfolgenden zwei Zeichen 'u' und 's' ist aber das MSB nicht gesetzt -> ungültiger UTF8-String.
-
UTF-8 Konverterfunktion
Dein erster Codeausschnitt funktioniert bei mir: Eingabe: "ABCdefÄÖÜäöüéÉ" Ausgabe: "ABCdefÄÖÜäöüéÉ"
-
Funktion zum schreiben in ein html formular
Je detaillierter die Informationen sind, die du lieferst, desto besser kann man dir helfen. Siehe mein letzter Beitrag: Was meinst du damit? Ist das eine Schätzung? Ist es abwechselnd? Falls abwechselnd, klappt es beim ersten oder beim zweiten Mal? Hängt das Verhalten vom Feld oder vom Inputtyp ab? Was ist mit dem Rückgabewert von put_value? Ist der in Ordnung?
-
UTF-8 Konverterfunktion
So wird das nichts. Du musst zuerst aus dem ANSI-String einen Unicode-String machen. Den kannst du dann nach UFT8 konvertieren: char m[MAX_PATH]={0}; WCHAR w[MAX_PATH]={0}; CString text; int erg=0; strcpy(m, "ABCdefÄÖÜäöüéÉ"); erg=MultiByteToWideChar(CP_ACP, 0, m, -1, w, sizeof(w) / sizeof(WCHAR)); erg=WideCharToMultiByte(CP_UTF8, 0, w, -1, m, sizeof(m), 0, 0); text=m; [/CODE]
-
Funktion zum schreiben in ein html formular
Hast du den Debugger benutzt, um zu prüfen, ob das Programm auch wie erwartet in die if-Blöcke springt? Falls nicht, welches if schlägt fehl? Oder wird die Funktion vielleicht nur jedes zweite Mal überhaupt aufgerufen? Ist es genau jedes zweite Mal (also immer abwechselnd), oder ist das eine Schätzung? Das sind alles Informationen, die du liefern musst, bevor dir jemand sinnvoll helfen kann. Einfach nur den Code hinzuklatschen, noch dazu ohne Code-Tags, bringt bei logischen Fehlern nicht viel.
-
Listview mit autom. Zeilenumbruch
LabelWrap bezieht sich nur auf die Symbol-Ansicht des ListView. In der Report-Ansicht (also der mit den Spalten) unterstützt das Windows-Standard-ListView-Steuerelement keinen Umbruch und keinen mehrzeiligen Text.
-
Timer als Thread in C++
Mit Wait ist es ok. Ich war mir nicht sicher, ob dir klar war, dass deine Threads sofort wieder beendet werden, wenn main beendet ist. Wenn es dir nur um die Zeitmessung geht, und du sowieso nur unter Windows zu Gange bist, brauchst du keine Threads. Du kannst mit GetTickCount aus windows.h die verstrichenen Millisekunden seit dem Start des Systems heraus finden. Wenn du diesen Wert zweimal holst und die Werte voneinander abziehst, hast du den zeitlichen Unterschied der Aufrufe. Beachte aber, dass die Auflösung von GetTickCount auch nur bei etwa 50 ms liegt. Wenn du es genauer brauchst, musst du das wieder anders machen. Stichwort PerformaceCounter. Wenn es nicht nur um die Zeitmessung geht, dann solltest du dir die üblichen Synchronisierungsobjekte anschaufen: Critical Section, Mutex, Semaphore, Event. Macht ja nichts
-
gleichungen mit phyton
Dazu musst du zuerst die Formel nach x auflösen. Was danach stehen bleibt, kannst du praktisch 1:1 als Code übernehmen.