Zum Inhalt springen

Klotzkopp

Mitglieder
  • Gesamte Inhalte

    9912
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    3

Alle Inhalte von Klotzkopp

  1. Klotzkopp

    Aufgabe stelle

    Klar kann man. Zeig mal, was nicht funktioniert.
  2. Die Nachricht schlägt mehrfach auf, weil mehrere Items ihren Zustand ändern. Eines verliert den Selected-State, eines erhält ihn usw. Die folgenden Nachrichten werden generiert: - Item "alt" verliert 'Selected'-Zustand - Item "alt" verliert 'Focused'-Zustand - Item "neu" erhält 'Selected'- und 'Focused'-Zustand Wenn dich nur interessiert, welches Item jetzt selektiert ist, kannst du das so filtern: NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; if( pNMListView->uNewState & LVIS_SELECTED ) { // Behandeln.. } [/code]
  3. Verschoben nach: Datenbanken.
  4. Nein, diese drei werden definiert. Wenn du diese Headerdatei in mehr als einer Quellcodedatei mit #include einbindest, werden sie mehrfach definiert. Da helfen auch keine #include-Guards (sorry @ Knuddlbaer). Du könntest die drei in der Headerdatei als extern deklarieren (dann werden sie wirklich nur deklariert), und die Definitionen in eine .cpp-Datei verschieben.
  5. Wo steht denn dieser Code? Kann es sein, dass dein Dokument erst durch den Aufruf von OpenDocumentFile erstellt wird? Der steht ja dahinter...
  6. Nachtrag: Trifft das vielleicht auf dich zu? http://support.microsoft.com/support/kb/articles/q154/7/44.asp
  7. Wenn du nur eine Viewklasse hast, kannst du den Zeiger einfach mit static_cast umwandeln: CDeineViewKlasse* p = static_cast<CDeineViewKlasse*>(pZeigerVonGetNextView); Wenn du mehrere Viewklassen hast, musst du den Typ mit dynamic_cast ermitteln: CDeineViewKlasse1* p = dynamic_cast<CDeineViewKlasse1*>(pZeigerVonGetNextView); if(NULL != p) { // es ist ein CDeineViewKlasse1... p->MemberFunktion(); } else { // andere Viewklassen testen }[/code] Damit dynamic_cast funktioniert, musst du in den Projekteinstellungen RTTI aktivieren. Enthalten die irgendwelche Arrays? Oder verwendest du selbstgeschriebene DLLs?
  8. Du kannst mit CWinApp::GetFirstDocTemplatePosition/GetNextDocTemplate durch alle Dokument-Templates der Anwendung gehen, dann mit CDocTemplate::GetFirstDocPosition/GetNextDoc durch alle Dokumente dieses Templates, und schließlich mit CDocument::GetFirstViewPosition/GetNextView durch alle Views dieses Dokuments gehen. Du kommst also mit einer dreifach verschachtelten Schleife an alle Views. Wenn du nur ein Template hast, kannst du die äußerste weglassen. Das ist ein ernstes Problem, und liegt nicht allein daran, dass du globale Variablen verwendest. Vermutlich schreibst du irgendwo über Arraygrenzen hinweg. Such nach Arrays, die auf dem Heap/Freispeicher angelegt werden (mit new/malloc) und prüfe genau, ob du nicht über den allokierten Bereich hinaus schreibst.
  9. Klotzkopp

    Win XP Treibersuche

    http://www.aiptek.de/index.php?mapid=24&main=21 Ganz oben...
  10. Warum gibst du als zweiten Parameter bei InsertItem nicht einfach NULL oder einen Leerstring an?
  11. Ich dachte, du hättest diese Größe. Da das offenbar nicht so ist: Welche Daten kennst du denn? Die, die du bisher genannt hast, reichen nicht aus, um das auszurechnen. Hast du vielleicht ein Bild, das auf A4-Format gestreckt oder gestaucht wird? Dann musst du schon sagen, wieviele Pixel das Bild hat.
  12. Wie setzt du denn den Wert bzw. das Icon?
  13. Wenn du nichts an den Einstellungen änderst, baut VC7 Programme für Windows XP. Das wird gesteuert über das Präprozessor-Define _WIN32_WINNT. Wenn du Windows-98-kompatible Programme bauen willst, solltest du das auf 0x0410 setzen.
  14. Schließen und anschließendes Wiederöffnen setzt das eof-Flag nicht zurück. Am einfachsten umgehst du das, indem du immer wieder eine neue ifstream-Instanz erzeugst. Du kannst die Parameter von open auch gleich im Konstruktor angeben: ifstream lesen(MainPth+"\\Datei", ios::in);
  15. Der Compiler darf, wenn der Rückgabewert des Ausdrucks i++ nicht gebraucht wird (z.B. wenn es ein alleinstehender Ausdruck oder das letzte Argument einer for-Anweisung ist), i++ durch ++i ersetzen, wenn er ausschließen kann, das i++ nicht noch andere Seiteneffekte hat. Das können gängige Compiler auf jeden Fall bei eingebauten Datentypen. Bei Klassen (z.B. Iteratoren von manchen Containerklassen) geht das üblicherweise nicht, weil operator++() und operator++(int) überschrieben sind, und der Compiler nicht erkennen kann, ob er den einen einfach durch den anderen ersetzen darf. Dann muss der Compiler bei i++ eine temporäre Variable anlegen, was je nach Typ recht aufwändig sein kann. Darum sollte man sich angewöhnen, überall dort, wo man den Seiteneffekt des Postinkrements nicht braucht, Preinkrement zu benutzen. Kurz: Wenn es egal ist, nimm ++i. Kann nicht schaden, kann eventuell sogar nutzen.
  16. Ich habe deine Frage doch 6 Beiträge weiter oben beantwortet :confused:
  17. Benutzt du immer wieder dieselbe lesen-Instanz?
  18. Nachrichten? Eintippen? Das ist doch ein Konsolenprogramm, oder? Wo sollten da Nachrichten herkommen? Dein Programm "basiert" nicht auf Unicode. Dazu hättest du UNICODE auf globaler Ebene per Präprozessordirektive (oder in den Projekteinstellungen der IDE) definieren müssen. Und hättest du das getan, hättest du weiter oben nicht ConvertSidToStringSidW schreiben müssen.
  19. Pixelauflösung in DPI geteilt durch 2,54 ergibt Pixel pro Zentimeter. Von der Papiergröße ist das unabhängig, 1 cm ist 1 cm.
  20. @bergi: Es gibt hier schon eine ganze Menge Buch-Threads. @CyberDemon: Danke. @Thread: zu bist du!
  21. Falsche Typen für die Parameter, der erste muss char* sein, der zweite const char *. strcpy gibt char* zurück, nicht int. int main! Warum die Sternchen? und warum willst du Arrays mit uninitialisiertem Inhalt kopieren? Falsche Typen für die Parameter und Rückgabewert, siehe oben Warum das Sternchen? Auch hier, warum die Sternchen? Außerdem, wie Pönk bereits sagte, falsche Richtung der Zuweisung. strcpy gibt den ersten Parameter zurück.
  22. Dein Programm hat keine main-Funktion.
  23. Die Schleife wird beendet, auch wenn du das break nicht machst. Allerdings erst dann, wenn der Schleifenkörper abgearbeitet wurde, weil erst dann die Schleifenbedingung wieder geprüft wird. Eine while-Schleife ist keine Laufzeitüberwachung der Schleifenvariable. Die Schleife wird nicht verlassen, nur weil iJahre irgendwo im Schleifenkörper den Wert Null annimmt. Das sieht so aus: 1. Prüfung: wenn iJahre == 0, dann raus 2. cout << 3. cin >> 4. if( ... ) 5. zurück nach 1. Du siehst, nach dem cin >> kommt immer erst der Rest des Körpers. Den willst du aber nicht ausführen lassen, wenn 0 eingegeben wurde. Da du hier break verwendest, könntest du die Schleifenbedingung auch ganz weglassen, indem du while( true ) schreibst. Oder - wie bereits gesagt - du schließt die ganze Prüfung und Ausgabe nach dem cin >> in ein if( iJahre != 0 ) { // Hier Prüfung und Ausgabe } ein.
  24. Nein, da hast du was mißverstanden. Default User ist hier kein Platzhalter. Es gibt ein Profil, das heißt tatsächlich "Default User". Das musst du umbenennen.

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...