Alle Beiträge von Klotzkopp
-
CListCtrl
Es gibt zwei Versionen dieser Methode. Die erste Version schreibt den Text in einen Puffer: // hole Text von Item 3, SubItem 5 char szBuffer[200]; m_listctrl.GetItemText( 3, 5, szBuffer, 199 ); Die zweite Version macht es noch einfacher, sie liest den Text in ein CString-Objekt und gibt dieses zurück: // hole Text von Item 3, Subitem 5 CString strText = m_listctrl.GetItemText( 3, 5 ); Das ist keine Methode, sondern ein int. In diesem int steht der Index des selektierten Items.
-
CListCtrl
CListCtrl::GetItemText
-
CListCtrl
Du erstellst eine Nachrichtenbehandlungsfunktion für LVN_ITEMCHANGED. Die sollte dann in etwa so aussehen: [color=blue]void CDeinDialog[/color]::OnItemchangedList([color=blue]NMHDR[/color]* pNMHDR, [color=blue]LRESULT[/color]* pResult) { [color=purple]NM_LISTVIEW[/color]* pNMListView = ([color=purple]NM_LISTVIEW[/color]*)pNMHDR; if( pNMListView->uNewState & [color=purple]LVIS_SELECTED[/color] ) { [color=green]// In pNMListView->iItem steht der Index des gewählten Items[/color] } *pResult = 0; }[/CODE]
-
Virtueller Destruktor
Virtuelle Funktionen verwendet man, wenn man auf ein Objekt einer abgeleiteten Klasse über einen Zeiger auf eine Basisklasse zugreift. Wenn aber der Destruktor nicht virtuell ist, wird nur der Basisklassendestruktor aufgerufen, was meist nicht das ist, was man will. Ein Beispiel: [color=blue]class[/color] [color=blue]Base[/color] { [color=blue]public[/color]: [color=blue]Base[/color]() {} [color=blue]virtual[/color] ~[color=blue]Base[/color]() {} }; [color=blue]class[/color] [color=blue]Derived[/color] : [color=blue]public[/color] [color=blue]Base[/color] { [color=blue]public[/color]: [color=blue]Derived[/color]() : [color=blue]Base[/color](), [color=darkred]p[/color]([color=darkblue]0[/color]) { [color=darkblue]p[/color] = [color=purple]new[/color] [color=blue]char[/color][[color=darkblue]4[/color]]; } ~[color=blue]Derived[/color]() { [color=blue]if[/color]( [color=darkblue]p[/color] ) [color=blue]delete[/color] [color=darkblue]p[/color]; } [color=blue]private[/color]: [color=blue]char[/color]* [color=darkblue]p[/color]; }; [color=blue]int[/color] [color=darkred]main[/color]() { [color=blue]Base[/color]* [color=darkblue]pBase[/color] = [color=purple]new[/color] [color=blue]Derived[/color]; [color=green]// wenn Base::~Base nicht virtuell ist, wird hier nicht[/color] [color=green]// Derived::~Derived aufgerufen, sondern nur Base::~Base,[/color] [color=green]// und p wird nicht freigegeben![/color] [color=blue]delete[/color] [color=darkblue]pBase[/color]; } [/CODE]
-
CListCtrl und SDI
EOF ist -1, !EOF ist also immer falsch. Vielleicht meinst Du sowas wie pRs->EOF? Außerdem solltest Du in der Schleife auf den nächsten Datensatz wechseln, sonst hast Du eine Endlosschleife.
-
Rätsel
Das setzt natürlich voraus, dass der Arbeiter sein Silber nicht jeden Abend gleich versäuft.
-
ADO und Delete
Das scheint so weit in Ordnung zu sein. Mit Anzeigen hat der gezeigte Code auch nichts zu tun. Machst Du an anderer Stelle vielleicht noch ein MoveNext oder MovePrevious?
-
CListCtrl und SDI
Du darfst den fünften Parameter von InsertColumn nicht auf seinem Defaultwert (-1) lassen, sonst klappt das mit den Subitems nicht: m_Grid.InsertColumn(0, "Name", LVCFMT_LEFT, 120, 0); m_Grid.InsertColumn(1, "Vorname", LVCFMT_CENTER, 80, 1); m_Grid.InsertColumn(2, "Qualification", LVCFMT_LEFT, 120, 2); m_Grid.InsertColumn(3, "Profession", LVCFMT_LEFT, 100, 3); m_Grid.InsertColumn(4, "Fav. Sport", LVCFMT_RIGHT, 80, 4); m_Grid.InsertColumn(5, "Hobby", LVCFMT_CENTER, 100, 5);
-
Schriftfarbe in Datei ändern
Und darum kann es nicht Bestandteil anderer Frameworks sein?
-
Download von Datei beschleunigen
Eigenartig. Was steht denn zu dem Zeitpunkt in dwRead?
-
Download von Datei beschleunigen
Das ist eigentlich egal, weil die Werte intern miteinander multipliziert werden. Der eine Wert gibt die Anzahl der Datenelemente an, der andere die Größe eines Datenelements. Du schreibst also gerade für jedes gelesene Byte einen 1000-Byte-Array in Deine Datei. Schreib mal statt sizeof© sizeof(*c).
-
Download von Datei beschleunigen
Wie sieht denn der fwrite-Aufruf aus?
-
Download von Datei beschleunigen
Das ist ein Indiz für einen Pufferüberlauf. Wieviel Speicher hast Du denn für c geholt?
-
Download von Datei beschleunigen
Wofür brauchst Du memcpy?
-
Download von Datei beschleunigen
Ist c ein char-Array? Dann darf da nicht die Adresse verwendet werden. Das ist problematisch, weil fprintf mit %s einen nullterminierten String erwartet. Selbst wenn Du c mit einem Nullbyte abgeschlossen hast, können Fehler auftreten, wenn mittendrin ein Nullbyte steht, was bei Binärdateien vorkommen kann. fwrite wäre hier richtig.
-
Download von Datei beschleunigen
Daran liegt es mit Sicherheit, denn dadurch wird für jedes einzelne Byte eine Anfrage an den Webserver geschickt Sollte eigentlich nicht sein. Zeig doch bitte mal den entsprechenden Code. Du könntest die Datei aber in größeren Stücken herunterladen, wobei die Anzahl der Fragmente von der Dateigröße abhängt.
-
Schriftfarbe in Datei ändern
Hast Du Dir mal eine RTF-Datei in einem normalen Texteditor angesehen? Da kann man schon einiges rausholen. Hier hat Microsoft die RTF-Syntax beschrieben: http://msdn.microsoft.com/library/en-us/dnrtfspec/html/rtfspec.asp Muss es eigentlich WordPad sein? Wenn es Dir nur um die Textfarbe geht, wäre HTML viel einfacher...
-
Excel-Diagramm
Mit dem Diagramm-Assistenten: Datenbereich: Die Spalte mit den Anzahl-Werten Beschriftung der Rubrikenachse: Die Spalte mit den Alteswerten. Wenn Du bei einem Säulendiagramm ganzzahlige Rubriken haben willst, brauchst Du auch Werte für die ganzzahligen Rubriken.
-
Excel-Diagramm
So wie das hier?
-
win xp home und visual studio.net bzw komponenten
Soweit ich weiß, ist das Hauptproblem mit VS .net und XP Home, dass ASP .net nicht funktioniert, weil XP Home keinen vollwertigen Webserver mitbringt. VC++.net sollte aber problemlos funktionieren.
-
Fehler beim Dateizugriff (war: HELP...)
Nein, das sollte so schon funktionieren. Gibst Du eventuell auch die doppelten Backslashes ein? Die brauchst Du nur bei Literalen (also im Quellcode).
-
Monitor Deaktivieren/StendBy-Mode
Einen Energiespareffekt hast Du damit aber nicht (falls es Dir darum ging). Mit "offen" meinst Du wahrscheinlich, dass das Programm den Fokus haben muss, also Tastatureingaben empfängt. Mit "speicherresident" hat das nichts zu tun, denn laufen muss Dein Programm in jedem Fall, auch wenn es Tastatureingaben bearbeiten soll, ohne den Fokus zu haben. Speicherresident waren Programme unter DOS, als es weder Multitasking noch Threads gab. Was Du brauchst, ist ein Hook, damit Dein Programm auch die Tastatureingaben bekommt, die eigentlich für andere gedacht sind. Das macht man mit SetWindowsHookEx.
-
Aus Excel Dateien lesen
Nachtrag: Nimm XL5EN32.OLB statt XL5DE32.OLB. Mit den in der deutschen Version erzeugten Umlauten in den Klassennamen kommt Visual C++ nicht klar.
-
Aus Excel Dateien lesen
Nicht zwangsläufig. Man kann das auch über die Automatisierungsschnittstelle machen. @SwordMaster: Als erstes musst Du Deinem Projekt die Automatisierungsschnittstelle hinzufügen. Das geht folgendermaßen: Im Klassenassistenten auf dem Reiter "Automatisierung" "Klasse hinzufügen -> Aus Typbibliothek" wählen. Der Dateiname und der Standort der Typbibliothek hängt von der Office-Version ab. Die Endung ist immer OLB. Bei Office XP ist es bei einer Standardinstallation C:\Programme\Microsoft Office\Office10\XL5DE32.OLB Danach werden Deinem Projekt viele Klassen hinzugefügt. Die weitere Vorgehensweise hängt davon ab, ob Du Dich mit einer laufenden Excel-Instanz verbinden oder eine neue erstellen willst.
-
Aus Excel Dateien lesen
Bitte ein wenig auf die Schreibweise achten. Das Programm heißt "Excel". Wenn das jeder schreibt, wie er gerade lustig ist, reduziert das die Effektivität der Suchfunktion erheblich. --> Titel des Themas angepasst.