Zum Inhalt springen

Klotzkopp

Mitglieder
  • Gesamte Inhalte

    9912
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    3

Alle Inhalte von Klotzkopp

  1. Du kannst einfach die erste und die letzte Zeile aus dem Beispiel weglassen. Was dann übrig bleibt, kannst Du in Deinen Code einfügen. Du musst Dein Programm mit Winmm.lib verlinken. Das geht entweder über die Projekteinstellungen, oder indem Du in einer cpp-Datei, am besten nach den #includes, folgendes einfügst: #pragma comment( lib, "Winmm.lib" )
  2. Klotzkopp

    while

    Ich möchte noch anmerken, dass das eine Endlosschleife ist, da janein innerhalb des Schleifenkörpers nicht geändert wird. Zumindest die cin-Anweisung sollte also mit in die Schleife. Zu dem Problem, das Du bekommen wirst, wenn der Benutzer ein nichtnumerisches Zeichen eingibt, siehe: http://fachinformatiker-world.de/forums/showthread.php?s=&threadid=32336&werbeid=29
  3. Du brauchst #include <mmsystem.h> in TestDlg.cpp, ziemlich am Anfang, aber auf jeden Fall hinter #include <stdafx.h>.
  4. Aus folgere ich, dass Du mit CString (oder einer vergleichbaren Klasse) arbeitest, alles andere würde hier kaum Sinn machen. Wenn Du eine Textdatei einlesen willst, kannst Du CStdioFile verwenden, da kannst Du gleich zeilenweise in einen CString einlesen.
  5. Das "amp;" im Link ist wohl ein missratenes & (sozusagen ohne &).
  6. ... // Gerätekontext holen CClientDC dc(this); CPen pen; pen.CreatePen( PS_SOLID, 0, RGB(255,0,0) ); dc.SelectObject( pen ); // Linie vom letzten zum aktuellen Punkt zeichnen dc.MoveTo(m_iPrevX, m_iPrevY); ...
  7. Und welchen Wert hat laenge danach?
  8. Den MSDN-Artikel habe ich auf Anhieb nicht gefunden. Zeig uns doch mal den relevanten Teil des Servers.
  9. Rechtsklick auf die Mail->Optionen, dann sollten unter "Internetkopfzeilen" die Header angezeigt werden.
  10. Überschreibe OnOpenDocument Deiner Dokumentklasse. Diese Funktion wird beim Öffnen aufgerufen, und bekommt den Pfad der im Öffnen-Dialog gewählten Datei als Parameter. Da drin kannst Du dann die Datei auslesen und die Inhalte den Steuerelementen der View zuweisen.
  11. Der Fehler kommt daher, dass CFormView im Konstruktor ein Argument braucht, und zwar die ResourceId der Dialogresource, mit der sie verknüpft ist. Es ist ziemlich aufwändig, ein SDI/MDI-Projekt nachträglich auf eine andere View-Klasse umzustellen. Wenn es nicht zuviel Aufwand ist, würde ich von vorn beginnen. Du kannst beim Anlegen des Projekts mit dem Assistenten auf der letzten Seite die Basisklasse der View festlegen. Wenn Du da CFormView wählst, wird auch gleich eine Dialogressource angelegt, und die View damit verknüpft. Falls das nicht geht, muss folgendes geändert werden: In CDeineView.h class CDeineView: public CFormView (logisch) //{{AFX_DATA(CDeineView) enum{ IDD = IDD_ZU_VERWENDENDE_DIALOGRESSOURCE }; // NOTE: the ClassWizard will add data members here //}}AFX_DATA In CDeineView.cpp: IMPLEMENT_DYNCREATE(CDeineView, CFormView) BEGIN_MESSAGE_MAP(CDeineView, CFormView) Das gleiche für jeden Eintrag in der MessageMap: Überall muss CView durch CFormView ersetzt werden. Der Konstruktor: CDeineView::CDeineView() : CFormView(CDeineView::IDD) { //{{AFX_DATA_INIT(CDeineView) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT // TODO: add construction code here } Außerdem muss bei jeder virtuellen Funktion, in der die Funktion der Basisklasse aufgerufen wird (z.B. DoDataExchange, PreCreateWindow, OnInitialUpdate) CView durch CFormView ersetzt werden.
  12. Wie sehen denn die Header aus?
  13. Mit dem Ressourceneditor kannst Du nur arbeiten, wenn Deine View-Klasse von CFormView abgeleitet ist, denn nur diese Klasse kann man mit Dialogressourcen verknüpfen. Allerdings ist der Hintergrund dann grau, nicht mehr weiß. Ansonsten musst Du die Steuerelemente von Hand erzeugen, mittels CreateWindow.
  14. Bitte, sag uns doch, wie die Fehlermeldungen lauten. Dann können wir Dir weiterhelfen.
  15. Bei codeguru gibt es ein Beispielprojekt, in dem das gemacht wird. Da wird auch gezeigt, wie man mitbekommt, dass eine CD eingelegt oder entfernt wurde. Dürfte also genau das Richtige sein . http://codeguru.earthweb.com/misc/CdChange.shtml Warum nicht? Was funktioniert nicht? Eine Fehlerbeschreibung wäre recht hilfreich...
  16. Den Text, in dem gesucht und ersetzt werden soll, musst Du woanders vorhalten, darum kümmert sich der Dialog nicht. Die übliche Anwendung sieht so aus, dass Du eine Document/View-Struktur hast, wobei die Dokumentklasse den Inhalt (=Text) in irgendeiner Form vorhält. Das kann eine CString-Membervariable sein, aber auch ein RTF-Steuerelement oder was ganz anderes. Es muss ja nicht mal Text sein. Daher kann sich CFindReplaceDialog auch nicht darum kümmern, dass der Inhalt übermittelt wird. Nur Du kannst wissen, wie auf Find/Replace-Nachrichten reagiert werden soll. Wenn Du also innerhalb von Projekt::OnErsetzen den Text verändern willst, dann muss der CString ein Member von Projekt sein. Ich würde in OnErsetzen so vorgehen: [*]Falls der Benutzer ersetzen will, und die aktuelle Markierung dem Suchstring entspricht, diese Stelle ersetzen. [*]Von der Markierung ausgehend das nächste Auftreten des Suchstrings finden (abhängig von der vorgegebenen Suchrichtung). [*]Falls das Ende (bzw. der Anfang) des Textes errreicht wurde, ohne dass der Suchstring gefunden wurde, Meldung ausgeben. [*]Ansonsten die Fundstelle markieren. [/list=1] Das deckt jetzt noch nicht FR_REPLACEALL, FR_MATCHCASE und FR_WHOLEWORD ab.
  17. Was meinst Du mit "kann ich nicht sehen"? Hast Du eine Liste der Benutzer, oder musst Du die erst noch holen? MSDN Library, unter Security->Authorization. Da hab ich auch alles her, was ich Dir bisher erzählt habe .
  18. CFindReplaceDialog wird verwendet, damit der Benutzer festlegt, was durch was ersetzt werden soll. Du kannst zwar Vorgaben machen, an die muss sich der Benutzer aber nicht halten. CFindReplaceDialog selbst sucht und ersetzt gar nichts, sondern lässt Dich über die Nachrichten wissen, was der Benutzer gerne hätte. Auf diese Nachrichten musst Du dann reagieren, d.h. den Code für das Suchen und Ersetzen musst Du selbst schreiben. Wenn es Dir nur darum geht: Hier reicht auch Text.Replace( "C++", "Java" );
  19. Um überhaupt etwas davon mitzubekommen, wenn der Benutzer auf die Spaltenüberschriften klickt, brauchst Du eine Nachrichtenbehandlungsfunktion für LVN_COLUMNCLICK für Dein List Control. In pNMListView->iSubItem steht der Index der Spalte, die angeklickt wurde. Mit CListCtrl::SortItems kannst Du sortieren. Der erste Parameter gibt dabei eine Callback-Funktion an, die dann mehrfach aufgerufen wird, um jeweils zwei Einträge miteinander zu vergleichen. Über den Rückgabewert dieser Funktion (-1, 0 oder 1) legst Du die Reihenfolge fest. In diesem Thread findest Du ein Beispiel für eine solche Sortierfunktion. Beachte aber, dass die Parameter, mit denen die Funktion aufgerufen wird, nicht die Indices der zu vergleichenden Einträge sind, sondern die Werte, die den Einträgen über SetItemData zugewiesen wurden.
  20. TVS_SHOWSELALWAYS
  21. Der vierte Parameter sind Flags. FR_DOWN bedeutet, dass "Abwärts" als Suchrichtung vorgegeben ist. Die möglichen Flags sind hier erklärt: http://msdn.microsoft.com/library/en-us/winui/WinUI/WindowsUserInterface/UserInput/CommonDialogBoxLibrary/CommonDialogBoxReference/CommonDialogBoxStructures/FINDREPLACE.asp Der fünfte Parameter bezeichnet das Fenster, dass die FINDMSGSTRING-Nachrichten erhalten soll, die der Suchdialog generiert. Wenn man hier NULL angibt, bekommt das Hauptfenster der Applikation die Nachrichten.
  22. Doppelposting --> Thema geschlossen.
  23. Die "schöne" Methode wäre, eine Klasse von CEdit abzuleiten, darin WM_CHAR zu behandeln, und nur dann CEdit::OnChar aufzurufen, wenn es sich um ein gültiges Zeichen handelt. Es geht aber auch einfacher. Überschreibe die Methode PreTranslateMessage Deines Dialogs mit Hilfe des Klassenassistenten. Darin kannst Du Tasten-Nachrichten an das Eingabefeld abfangen: #define ALLOWED_CHARS "01\x8" BOOL CDeinDlg::PreTranslateMessage(MSG* pMsg) { if( pMsg->message == WM_KEYDOWN || pMsg->message == WM_KEYUP ) { if( pMsg->hwnd == GetDlgItem( IDC_DEIN_EDIT )->m_hWnd ) { if( NULL == strchr( ALLOWED_CHARS, pMsg->wParam ) ) { return TRUE; } } } return CDialog::PreTranslateMessage(pMsg); }[/CODE] Im Klartext: Wenn es sich um eine Tasten-Nachricht handelt, die an Dein Eingabefeld geht, und bei der das Zeichen nicht in ALLOWED_CHARS enthalten ist, dann wird die Nachricht einfach verworfen. Das \x8 in ALLOWED_CHARS ist übrigens die Rückschritt-Taste.
  24. #include <windows.h> Wenn das nicht hilft, nenn uns doch bitte die Fehlermeldungen.
  25. SetCurrentColor kannst Du nur dann sinnvoll einsetzen, wenn Du eine Klasse von CColorDialog ableitest. Wenn Du in dieser Klasse dann Nachrichtenbehandlungsfunktionen einbaust oder OnColorOK überschreibst, um vor dem Beenden des Dialogs zusätzliche Prüfungen durchzuführen (z.B. um die Auswahl einer zu dunklen Farbe zu unterbinden), kannst Du damit die Auswahl auf eine andere Farbe setzen. Innerhalb der Klasse/Funktion, die DoModal aufruft, kannst Du SetCurrentColor definitiv nicht verwenden.

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