Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Klotzkopp

User
  • Registriert

  • Letzter Besuch

Alle Beiträge von Klotzkopp

  1. Klotzkopp hat auf bigpoint's Thema geantwortet in C++: Compiler, IDEs, APIs
    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.
  2. Klotzkopp hat auf SwordMaster's Thema geantwortet in Netzwerke
    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.
  3. Genau so. Du fängst mit GetRootItem an und hangelst Dich mit GetNextSiblingItem und GetChildItem durch den Baum.
  4. 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.
  5. Klotzkopp hat auf einen Beitrag in einem Thema geantwortet in Algorithmik
    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.
  6. Welche Fehlernummer ist das?
  7. Klotzkopp hat auf bigpoint's Thema geantwortet in C++: Compiler, IDEs, APIs
    Hat das List Control den Fokus oder den Style LVS_SHOWSELALWAYS? Wenn beides nicht der Fall ist, kannst Du die Selektion gar nicht sehen.
  8. 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 );
  9. 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.
  10. Klotzkopp hat auf einen Beitrag in einem Thema geantwortet in C++: Compiler, IDEs, APIs
    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/
  11. CTreeCtrl bietet keine Suchfunktion. Du musst also von Hand den gesamten Baum durchsuchen. Das kannst Du rekursiv oder iterativ machen.
  12. 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.
  13. In Absprache mit dem Ersteller des Themas verschoben nach: Delphi/VB/VBS/AS 400/C#/.net/Sonstige
  14. Klotzkopp hat auf einen Beitrag in einem Thema geantwortet in C++: Compiler, IDEs, APIs
    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.
  15. Klotzkopp hat auf bigpoint's Thema geantwortet in C++: Compiler, IDEs, APIs
    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.
  16. Kannst Du das Programm auf einer der abstürzenden Plattformen debuggen? Was passiert, wenn Du es unter XP im Kompatibilitätsmodus ausführst?
  17. Klotzkopp hat auf bigpoint's Thema geantwortet in C++: Compiler, IDEs, APIs
    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?
  18. Klotzkopp hat auf bigpoint's Thema geantwortet in C++: Compiler, IDEs, APIs
    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.
  19. 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).
  20. Klotzkopp hat auf bigpoint's Thema geantwortet in C++: Compiler, IDEs, APIs
    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...
  21. Klotzkopp hat auf bigpoint's Thema geantwortet in C++: Compiler, IDEs, APIs
    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.
  22. Klotzkopp hat auf bigpoint's Thema geantwortet in C++: Compiler, IDEs, APIs
    CListCtrl::GetItemText
  23. Klotzkopp hat auf bigpoint's Thema geantwortet in C++: Compiler, IDEs, APIs
    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]
  24. Klotzkopp hat auf CyberDemon's Thema geantwortet in C und C++
    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]
  25. 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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.