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

Mitglieder
  • Registriert

  • Letzter Besuch

Alle Beiträge von Klotzkopp

  1. Klotzkopp hat auf einen Beitrag in einem Thema geantwortet in C und C++
    Dann versuch doch mal ShellExecute.
  2. Klotzkopp hat auf einen Beitrag in einem Thema geantwortet in C und C++
    Du hast Recht. Wenn man einen Array mit new[] holt, dann sollte man ihn auch mit delete[] freigeben. In diesem Fall funktioniert es aber trotzdem. Der Unterschied zwischen delete und delete[] besteht bei Arrays darin, dass delete nur den Destruktor des ersten Elements aufruft, während delete[] den Destruktor für jedes Element des Arrays aufruft. Bei Array-Elementen, die wie in diesem Fall keinen Destruktor haben oder brauchen, macht es keinen Unterschied.
  3. Klotzkopp hat auf einen Beitrag in einem Thema geantwortet in C und C++
    <FONT COLOR="#a62a2a" SIZE="1">[ 09. September 2001 21:45: Beitrag 1 mal editiert, zuletzt von Klotzkopp ]</font>
  4. Klotzkopp hat auf einen Beitrag in einem Thema geantwortet in C und C++
    Ich hab was gefunden, das helfen könnte: http://support.microsoft.com/support/kb/articles/Q238/0/80.ASP Versuch doch mal, statt 'select *' alle Felder einzeln aufzulisten, wobei die Textfelder hinten stehen.
  5. Klotzkopp hat auf einen Beitrag in einem Thema geantwortet in C und C++
    1.) GetMessagePos könnte helfen. 2.) (Schuss ins Blaue) Lass mal MNS_AUTODISMISS weg.
  6. Kleiner Anstoss class CBruch { public: CBruch() : m_nZaehler(0) , m_nNenner(1) {} CBruch::CBruch( CBruch& bruch ) : m_nZaehler( bruch.m_nZaehler ), m_nNenner( bruch.m_nNenner ) {} CBruch::CBruch( int nZahl ) : m_nZaehler( nZahl ), m_nNenner(1) {} CBruch::CBruch( int nZaehler, int nNenner ) : m_nZaehler( nZaehler ), m_nNenner( nNenner ) { Kuerzen(); } virtual ~CBruch() {} operator float() const { return (float) m_nZaehler / m_nNenner; } CBruch& operator+( CBruch& Summand ) { int nNeuerNenner = m_nNenner * Summand.m_nNenner; m_nZaehler = m_nZaehler * Summand.m_nNenner + Summand.m_nZaehler * m_nNenner; m_nNenner = nNeuerNenner; Kuerzen(); return *this; } private: void Kuerzen() { if( m_nNenner < 0 ) { m_nZaehler *= -1; m_nNenner *= -1; } if( !m_nZaehler || !m_nNenner ) return; int nGemTeil = 2; while( true ) { if( 0 == m_nZaehler % nGemTeil && 0 == m_nNenner % nGemTeil ) { m_nZaehler /= nGemTeil; m_nNenner /= nGemTeil; continue; } nGemTeil++; if( nGemTeil > m_nZaehler || nGemTeil > m_nNenner ) return; } } int m_nZaehler; int m_nNenner; }; [/code] Der Kürz-Algorithmus ist noch etwas krude, und es ist auch nur ein arithmetischer und ein cast-Operator drin. Aber ich denke, das Prinzip wird klar.
  7. Klotzkopp hat auf einen Beitrag in einem Thema geantwortet in C++: Compiler, IDEs, APIs
    C++ für CE ist erst mal nicht anders als für Win32. Solange es nur um Anwendungsentwicklung geht, ist der wichtigste Unterschied zu Win32 wohl der, dass CE grundsätzlich Unicode ist. Oder willst Du ein Image erstellen? <FONT COLOR="#a62a2a" SIZE="1">[ 07. September 2001 21:34: Beitrag 1 mal editiert, zuletzt von Klotzkopp ]</font>
  8. Klotzkopp hat auf einen Beitrag in einem Thema geantwortet in C und C++
    Du kannst einen CString nicht in einen char umwandeln, weil ein char nur ein Zeichen fasst. Falls Du einen char* meinst, dann kommt es darauf an, ob Du den String nur lesen oder auch ändern willst. Wenn Du nur lesen willst, dann kannst Du einfach den CString anstelle des char* einsetzen. Die Klasse CString hat einen cast-operator für LPCTSTR, das funktioniert dann automatisch. Falls Du den String ändern musst, dann ist toostens Weg der richtige. Allerdings solltest Du den Speicher dynamisch holen, wenn Du nicht vorher weisst, wie lang der String ist: CString strDeinCString = "..."; char* pszString = new char[ strDeinCString.GetLength() + 1 ]; if( !pszString ) { ... // Fehlerbehandlung } strcpy( pszString, strDeinCString ); [/code] Das letzte Zeichen musst Du nicht auf 0 setzen, dass macht strcpy für Dich. Allerdings musst Du, nachdem Du ihn nicht mehr brauchst, den String mit [code] delete pszString; wieder freigeben.
  9. Klotzkopp hat auf einen Beitrag in einem Thema geantwortet in C und C++
    Wie wär's mit: void main() { bool fRepeat; do { clrscr(); ueberschrift(); menue(); fRepeat = false; switch(auswahl) { case 1: printf(" ...... \n"); break; case 2: //snip spielregeln(); fRepeat = true; break; case 3: bla bal bal } } while( fRepeat ); } Oder war das gewollt, dass bei Auswahl 2 zweimal Überschrift und Menü ausgeführt werden? <FONT COLOR="#a62a2a" SIZE="1">[ 05. September 2001 06:54: Beitrag 4 mal editiert, zuletzt von Klotzkopp ]</font>
  10. Klotzkopp hat auf einen Beitrag in einem Thema geantwortet in C und C++
    @Crush: Das Problem dabei ist allerdings, dass die Exception auch dann geworfen wird, wenn der Benutzer Null eingibt. @Elmo: Wenn der Benutzer einen oder mehrere Buchstaben eingibt, bekommt Dein int den Wert 0. Wenn Null keine gültige Eingabe ist, dann prüf einfach den Wert nach der Eingabe und brich gegebenenfalls ab. Wenn Null ein erlaubter Wert sein soll, dann liegt der Fehler an einer anderen Stelle in Deinem Programm. Was machst Du mit der eingegebenen Zahl?
  11. Klotzkopp hat auf einen Beitrag in einem Thema geantwortet in C und C++
    Dieses Sleep(1000) irritiert mich. Erzeugst Du das Event erst 1 Sekunde vor dem Setzen? Du must sicherstellen, dass CreateEvent vor OpenEvent ausgeführt wird. Am besten erzeugts Du das Event gleich zu Beginn von Prozess 1. Prüf besser auch auf jeden Fall den Rückgabewert von OpenEvent (Bei Fehler: NULL)
  12. Klotzkopp hat auf einen Beitrag in einem Thema geantwortet in C und C++
    Das Hauptfenster kannst Du zum Beispiel maximiert darstellen, indem Du in der CXYZApp::InitInstance() ein m_nCmdShow |= SW_SHOWMAXIMIZED; vor dem pMainFrame->ShowWindow(m_nCmdShow); pMainFrame->UpdateWindow(); ... einfügst. Um das Kindfenster maximiert darzustellen, musst Du die ActivateFrame-Methode Deiner von CMDIChildWnd abgeleiteten Klasse überschreiben: void CChildFrame::ActivateFrame(int nCmdShow) { nCmdShow = SW_MAXIMIZE; CMDIChildWnd::ActivateFrame(nCmdShow); }
  13. Klotzkopp hat auf einen Beitrag in einem Thema geantwortet in C und C++
    Das ist nicht wirklich eine Schleife, weil auf jeden Fall nach dem ersten Lauf return 0 ausgeführt wird. Sollte vielleicht nur der Child-Prozess das return 0 machen, und der Parent-Prozess in der Schleife bleiben?
  14. Klotzkopp hat auf einen Beitrag in einem Thema geantwortet in C++: Compiler, IDEs, APIs
    Die "0" bekommst Du nicht wirklich weg, wenn Dein Eingabefeld mit einer numerischen Variablen verknüpft ist. Die Windows-übliche Vorgehensweise ist aber auch eigentlich die, dass man bei Fehleingaben die falsche Eingabe stehen lässt (damit der dumme User auch sieht, was er falsch gemacht hat ), aber die gesamte Eingabe selektiert. Dann wird bei einer neuen Eingabe die alte ersetzt. CEdit* pEditCtrl = (CEdit*) GetDlgItem( IDC_EDIT ); pEditCtrl->SetFocus(); pEditCtrl->SetSel( 0, -1, TRUE ); // selektiert alles [/code] Dabei musst Du für IDC_EDIT die Control-ID Deines Eingabefelds setzen. Wenn Du schon eine Kontrollvariable für den Eingabefeld hast, dann kannst Du dir den Kram mit GetDlgItem natürlich sparen. Zweite Möglichkeit: Wenn die erlaubten Werte sich durch Minimum und Maximum beschreiben lassen und sich im Laufe des Programms nicht verändern, dann kannst Du sie auch gleich im Klassenassistenten fest eintragen. Das erspart Dir OnKillFocusxyz, und hat den Vorteil, dass Du keinen gültigen Wert eingeben musst, wenn Du das Programm nur beenden willst . <FONT COLOR="#a62a2a" SIZE="1">[ 26. August 2001 11:12: Beitrag 1 mal editiert, zuletzt von Klotzkopp ]</font>
  15. Klotzkopp hat auf einen Beitrag in einem Thema geantwortet in C++: Compiler, IDEs, APIs
    Wenn ein Tray Icon verschwindet, wenn man die Maus darüber bewegt, ist die Ursache in aller Regel, dass der Prozess, der Shell_NotifyIcon(NIM_ADD, &nid) aufgerufen hat, nicht mehr läuft, ohne vor dem Beenden Shell_NotifyIcon(NIM_DELETE, &nid) aufgerufen zu haben. Die TASKBARCREATED-Message brauchst Du nur, wenn die Möglichkeit besteht, dass beim Aufruf von Shell_NotifiIcon der Taskbar-Prozess noch gar nicht läuft, z.B. wenn Du einen Service schreibst, der ohne eingelogten User läuft. Dieser Service muß dann mittels TASKBARCREATED wissen, wann der Tray zur Verfügung steht, um dann das Icon reinzusetzen. Läuft das Programm, das das Icon erzeugt, noch, wenn Du mit der Maus über das Icon fährst und es verschwindet?
  16. Klotzkopp hat auf HangManAtWork's Thema geantwortet in C und C++
    seekp p für put statt g für get.
  17. Klotzkopp hat auf einen Beitrag in einem Thema geantwortet in C und C++
    Zwei kleine Änderungen zu Hasi Xs Vorschlag: Mit Nullen auffüllen (hängt davon ab, wie viele Stellen die ID maximal haben soll), z.B.: sprintf(filename,"c:\\trace-%05d.txt",m_iLid); für fünfstellige IDs. Bewirkt, dass die Dateien besser sortiert werden können. Außerdem deklarierst Du filename besser als: char filename[ 14 + Anzahl ID-Stellen ];
  18. Klotzkopp hat auf einen Beitrag in einem Thema geantwortet in C und C++
    Hi Gruft! Hast Du vielleicht statt einer Konsolenanwendung eine Win32-Anwendung erstellt?
  19. Klotzkopp hat auf einen Beitrag in einem Thema geantwortet in C und C++
    Hallo! An die Länge der Nachricht kommst du mit: pBuf[0] + 256 * pBuf[1] oder *((unsigned short*) pBuf) Letzteres klappt aber nur auf einer LittleEndian-Maschine.

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.