Alle Beiträge von Klotzkopp
-
void Zeiger
So könnte man es nennen. Man kann jeden Zeiger implizit in einen void* konvertieren. Aber dereferenzieren kannst Du einen void* nicht. Was soll dabei auch rauskommen? Das hier geht: char z = *((char*)t);
-
nothrow für afx-Messages, aber wie?
Was für ein Objekt ist m_SNRAlias? Kannst Du in SetWindowText reinsteppen?
-
BCB5:Wieso funktioniert dieses Program nicht?
<Gebetsmühle> Was Du machst, ist ein Zeigervergleich. char-Strings vergleicht man mit strcmp. Achtung, strcmp gibt bei Übereinstimmung Null zurück. </Gebetsmühle>
-
CListCtrl
FighterFigger hat Recht, es muss lauten: m_Grid.SetItemState( m_Grid.GetNextSelectedItem(pos), 0, LVIS_SELECTED );
-
nothrow für afx-Messages, aber wie?
__declspec(nothrow) ist ein Hinweis für den Compiler, dass diese Methode keine Exceptions wirft. Dadurch kann er sich einiges an Code sparen, der sonst für die Überwachung der Lebenszeit bestimmter Objekte benötigt würde. Exceptions unterdrücken kannst Du damit nicht. Bezüglich throw() in der Deklaration: Note Microsoft C++ does not support exception-specifications, as described in section 15.4 of the ANSI C++ draft. In addition, it does not support function-try-block described in section 15 of the ANSI C++ draft. Quelle: MSDN Library Oktober 2001. Was spricht dagegen, den ganzen Code der Funktion in einen try-catch-Block einzupacken?
-
CListCtrl
Bevor Du die neue Selektion auf den ersten Eintrag setzt, musst Du zuerst die alte Selektion entfernen: POSITION pos = m_Grid.GetFirstSelectedItemPosition(); if( pos ) { m_Grid.SetItemState( m_Grid.GetNextSelectedItem(pos), LVIS_SELECTED, 0 ); }[/CODE] UpdateData bewirkt nur bei Wert/Value-Variablen den Datenaustasch zwischen Variable und Steuerelement. Bei Steuerelement/Control-Variablen wie CListCtrl macht UpdateData gar nichts. Den gelöschten Datensatz musst Du von Hand mit CListCtrl::DeleteItem aus dem List Control enfernen.
-
Mentor Router
Da Du von Lichtern redest, nehme ich mal an, Du hast einen Hardware-Router. Dann wäre es gut, wenn Du auch sagst, von welchem Hersteller der Router ist und um welches Modell es sich handelt.
-
Tree-Ansicht erstellen
Genau so. Du fängst mit GetRootItem an und hangelst Dich mit GetNextSiblingItem und GetChildItem durch den Baum.
-
Daten von Betriebssystem auslesen
An den Benutzernamen kommst Du mit GetUserName, unter Windows 2000 und Windows XP auch mit GetUserNameEx, das unterschiedliche Formatierungen bietet. Für GetUserName brauchst Du Advapi32.lib, für GetUserNameEx Secur32.lib. Was das Auslesen des Passworts angeht, verweise ich auf die Boardregeln.
-
Trennen von Pfad und Dateiname?
Der Dateiname muss keinen Punkt enthalten. Es macht auch keinen Sinn, nach einem Punkt zu suchen, außer Du willst die Dateierweiterung abtrennen. Außerdem können die Elemente des Pfades auch durch Slashs voneinander getrennt sein. Also: Einfach nach dem letzten Slash oder Backslash suchen, und dahinter trennen.
-
Bildresource zur laufzeit ändern
Welche Fehlernummer ist das?
-
CListCtrl
Hat das List Control den Fokus oder den Style LVS_SHOWSELALWAYS? Wenn beides nicht der Fall ist, kannst Du die Selektion gar nicht sehen.
-
Bildresource zur laufzeit ändern
Mit LoadBitmap habe ich es irgendwie auch nicht hinbekommen. Aber mit LoadImage geht es: hBitmap = (HBITMAP) ::LoadImage( 0, "c:\\test.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE );
-
Slider soll Static Text ändern
Ein Slider-Steuerelement senden Scroll-Nachrichten an sein Parent. Wenn es ein horizontaler Slider ist, sendet er WM_HSCROLL, ein vertikaler sendet WM_VSCROLL. Du musst also dem Parent-Fenster des Sliders - üblicherweise ein Dialog oder ein FormView - eine Nachrichtenbehandlungsfunktion für WM_HSCROLL bzw. WM_VSCROLL hinzufügen. Der dritte Parameter dieser Funktion erhält einen Zeiger auf das Steuerelement, leider in Form eines CScrollBar*, auch wenn die Nachricht von einem Slider kommt. Daher muss man den Zeiger casten, um zu prüfen, ob die Nachricht vom Slider stammt: [color=blue]void[/color] [color=blue]CDeinDlg[/color]::[color=darkred]OnHScroll[/color]([color=blue]UINT[/color] [color=darkblue]nSBCode[/color], [color=blue]UINT[/color] [color=darkblue]nPos[/color], [color=blue]CScrollBar[/color]* [color=darkblue]pScrollBar[/color]) { [color=blue]CSliderCtrl[/color]* [color=darkblue]pSlider[/color] = [color=blue]static_cast[/color]<[color=blue]CSliderCtrl[/color]*>( [color=darkred]GetDlgItem[/color]( [color=purple]IDC_DEIN_SLIDER[/color] ) ); [color=blue]if[/color]( [color=darkblue]pScrollBar[/color] == [color=blue]reinterpret_cast[/color]<[color=blue]CScrollBar[/color]*>( [color=darkblue]pSlider[/color] ) ) { [color=blue]int[/color] [color=darkblue]nRealPos[/color] = [color=darkblue]pSlider[/color]->[color=darkred]GetPos[/color](); [color=blue]CString[/color] [color=darkblue]strPos[/color]; [color=darkblue]strPos[/color].[color=darkred]Format[/color]( "%d", [color=darkblue]nRealPos[/color] ); [color=darkred]SetDlgItemText[/color]( [color=purple]IDC_COLOR_STATIC[/color], [color=darkblue]strPos[/color] ); } [color=blue]CDialog[/color]::[color=darkred]OnHScroll[/color]([color=darkblue]nSBCode[/color], [color=darkblue]nPos[/color], [color=darkblue]pScrollBar[/color]); }[/CODE]Wenn Du bereits eine Steuerelementvariable für den Slider hast, kannst Du Dir natürlich den Kram mit GetDlgItem sparen.
-
Builds mit MS Visual Studio
Du kannst fehlende externe Tools nicht durch Konfiguration des Visual Studio ersetzen. Wenn das Projekt grep verwendet, dann brauchst Du grep. Grep für Windows gibt es z.B. hier: http://www.interlog.com/~tcharron/grep.html bison gibt es bei cygwin, z.B. hier: http://ftp.uni-kl.de/pub/windows/cygwin/release/bison/
-
Tree-Ansicht erstellen
CTreeCtrl bietet keine Suchfunktion. Du musst also von Hand den gesamten Baum durchsuchen. Das kannst Du rekursiv oder iterativ machen.
-
Win32 API DllImport -> Net
Nachtrag: PlaySound kommt aus winmm.dll, die Defines für fdwSound stehen in mmsystem.h. Bei den anderen Fragen kann ich Dir leider nicht helfen.
-
Win32 API DllImport -> Net
In Absprache mit dem Ersteller des Themas verschoben nach: Delphi/VB/VBS/AS 400/C#/.net/Sonstige
-
E-Mails vom Server abholen
Quelle: http://www.sojia.org/~pigfoot/mirror/Indy9_00_03_Html/008280.html TIdPOP3 is not intended to provide extensive manipulation operations of mail on the server; normally, mail is downloaded and then deleted. Use TIdIMAP4 and TIdIMAP4Server when a more advanced (and complex) mail protocol is required.
-
CListCtrl
Wie sollte das auch funktionieren? Du versuchst, das erste Item in einem List Control zu selektieren, das keine Items enthält. Du musst diese Zeile ausführen, nachdem Du das List Control mit Daten gefüllt hast.
-
Simple Sache läuft unter XP & 2000, aber nicht unter 98, ME, NT
Kannst Du das Programm auf einer der abstürzenden Plattformen debuggen? Was passiert, wenn Du es unter XP im Kompatibilitätsmodus ausführst?
-
CListCtrl
Damit löschst Du explizit den Focus-State, falls das Item ihn hat. Macht nicht viel Sinn, also besser so: m_Grid.SetItemState(0,LVIS_SELECTED,LVIS_SELECTED); Das verursacht den beschriebenen Effekt: man kann kein anderes Item auswählen. Hier darfst Du das auf keinen Fall machen. Das kommt schon eher hin. Sind da die Items denn schon eingetragen?
-
CListCtrl
NM_CLICK wird nur mit der Maus ausgelöst. Außerdem ist es dabei möglich, über LVM_SUBITEMHITTEST herauszufinden, ob auf ein Subitem geklickt wurde. LVN_ITEMCHANGED wird immer ausgelöst, wenn ein Item selektiert oder deselektiert wird, egal ob das durch die Maus oder die Tastatur ausgelöst wurde. Wenn Dein List Control auch mit der Tastatur bedienbar sein soll, musst Du LVN_ITEMCHANGED verwenden.
-
Bildresource zur laufzeit ändern
Selbst laden musst Du sie, und zwar mit LoadBitmap. Anzeigen kannst Du sie mit CStatic::SetBitmap (oder STM_SETIMAGE, falls Du die MFC nicht verwendest).
-
CListCtrl
Wo ist denn das Problem? :confused: CString strText0 = m_Grid.GetItemText( item, 0 ); CString strText1 = m_Grid.GetItemText( item, 1 ); CString strText2 = m_Grid.GetItemText( item, 2 ); CString strText3 = m_Grid.GetItemText( item, 3 ); CString strText4 = m_Grid.GetItemText( item, 4 ); CString strText5 = m_Grid.GetItemText( item, 5 ); ... Oder so: CString strGanzeZeile; for( int i=0; i<nColumnCount; ++i ) { strGanzeZeile += m_Grid.GetItemText( item, i ); }[/CODE] Oder lies die Texte in ein Array von CStrings...