Zum Inhalt springen

Klotzkopp

Mitglieder
  • Gesamte Inhalte

    9912
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    3

Alle Inhalte von Klotzkopp

  1. Ich glaube, Du bist ziemlich auf dem Holzweg Als ersten Schritt würde ich hier Klammern reinschreiben, so dass die Reihenfolge klar erkennbar wird.
  2. Na, nicht fluchen Ctor ist eine gängige Abkürzung für Konstruktor. Die Deklaration eben dieses Ctor, den Du da implementierst, sollte in Line.h stehen und in etwa so aussehen: CLine(CPoint ptFrom, CPoint ptTo, COLORREF crColor); Wo du gerade da bist, kannst Du den hier löschen, denn den deklarierst Du, implementierst ihn aber nicht: CLine(CPoint ptFrom, CPoint ptTo);
  3. Geh einfach nicht über die Klassenansicht, sondern über die Dateiansicht.
  4. Wie hast Du das bloß geschafft? Line.cpp CLine::CLine(CPoint ptFrom, CPoint ptTo, COLORREF crColor) -> diesen Ctor hast Du nicht deklariert. tag11doc.cpp: IMPLEMENT_DYNCREATE(CTag11Doc, CDocument) BEGIN_MESSAGE_MAP(CTag11Doc, CDocument) -> ist doppelt, die ersten Exemplare müssen weg. CLine *pLine = new CLine(ptFrom, ptTo, m_crColors[m_nColor]); -> so einen Ctor hast Du weder deklariert noch implementiert. const COLORREF CTag10Doc::m_crColors[8] = { -> Die Klasse heißt jetzt CTag11Doc. tag11doc.h #ifdef _DEBUG virtual void AssertValid() const; virtual void Dump(CDumpContext& dc) const; #endif -> doppelt. UINT m_nColor; CObArray m_oaLines; -> doppelt. Zeile 76: }; -> muss weg. //{{AFX_MSG(CTag11Doc) // HINWEIS - An dieser Stelle werden Member-Funktionen vom Klassen Assistenten eingefügt und entfernt. // Innerhalb dieser generierten Quelltextabschnitte NICHTS VERÄNDERN! //}}AFX_MSG DECLARE_MESSAGE_MAP() -> doppelt, sollte weg, damit der Klassenassistent funktioniert.
  5. Schließe bitte mal Visual C++, lösche alle Dateien mit der Endung ncb, opt, plg und clw im Projektordner, und versuche es nochmal. Wenn das nicht hilft, sollten wir es doch über die Fehler versuchen.Womöglich fehlt nur irgendwo ein Semikolon oder eine Klammer.
  6. Da wirst Du auch nichts finden, denn Standard-C/C++ hat mit Grafik nichts am Hut, wenn man ASCII-Art mal außen vor lässt. Suchst Du vielleicht was generisches, z.B. über 3D-Berechnungen, oder etwas über eine spezifische Schnittstelle wie GDI oder DirectX?
  7. Gibt es dazu ein passendes Gegenstück?
  8. AfxGetApp()->m_pMainWnd->ShowWindow(SW_SHOW); AfxGetApp()->m_pMainWnd->ShowOwnedPopups(TRUE);
  9. Falls Du es nicht geändert hast, ruft die Templateklasse, nachdem OnOpenDocument FALSE zurückgegeben hat, die DestroyWindow-Methode der Frame-Klasse auf. Das führt letztendlich dazu, dass OnCloseDocument aufgerufen wird. Wenn da das Autodelete-Flag gesetzt ist (was es per Default ist), werden alle erstellten Views zerstört, und dann begeht das Dokument Selbstmord, indem es delete this aufruft.
  10. Hast Du Deiner Combobox neben der Control- als auch eine Value-Variable verpasst? Wenn ja, liegt es daran: UpdateData() kopiert den Text aus der ComboBox in Deine Value-Variable. SetCurSel() ändert die Auswahl. UpdataData( FALSE ) schreibt den Inhalt der Value-Variablen wieder in die ComboBox, und macht damit Schritt 2 rückgängig. Da kann sich nichts ändern. Für Control-Variablen brauchst Du UpdateData normalerweise nicht aufzurufen, denn ein Werteaustausch findet dabei ohnehin nicht statt. Ich würde generell davon abraten, für ein Steuerelement sowohl eine Value- als auch eine Control-Variable einzurichten. Lass entweder UpdateData( FALSE ) weg, oder entferne die Value-Variable. An den Wert der ComboBox kommst Du auch über die Control-Variable.
  11. Nein, das ist ganz leicht. Hättest Du gleich gesagt, was Du willst, hätten wir das viel schneller lösen können. Statuszeilentexte und Tooltips sind nämlich schon eingebaut: Du musst nur in der Stringtabelle einen neuen String anlegen, mit derselben Ressource-ID wie der Menüeintrag. In diesem Text stehen zwei Texte, getrennt durch ein \n. Der Text vor dem \n erscheint in der Statuszeile, der nach dem \n im Tooltip, falls die Ressource-ID auch einem Toolbar-Button zugeordnet wurde. Beispiel: Das ist der Statuszeilentext\nDer Tooltiptext steht hier
  12. Wer immer noch den Internet Explorer mit per Default eingeschaltetem Active Scripting benutzt, der ist IMHO selbst schuld. Whitelist führen und gut ist
  13. Das ist normal. Eine Fensterklasse hat erst nach dem Create ein gültiges Handle. Aber wenn Du jetzt diese abgeleitete Klasse nicht mehr benutzt, ist auch klar, warum die Dialog nicht mehr angezeigt werden: Ein gewöhnliches CTabCtrl besteht nur aus den Tabs selbst. Um die Darstellung der Dialoge musst Du Dich selbst kümmern. Wahrscheinlich hat das diese Klasse aber für Dich gemacht.
  14. Seltsam. Hast Du noch was anderes geändert? Wie hast Du die Tabs vorher hinzugefügt?
  15. Du musst die Maske der TCITEM-Struktur setzen, damit die Methode weiß, welche Teile der Struktur gültige Daten enthalten. item.mask = TCIF_TEXT | TCIF_PARAM;
  16. Die Funktion kannst Du auch selbst deaktivieren. Womöglich reicht es schon, HKCU\Control Panel\Desktop\ForegroundLockTimeout auf 0 zu setzen.
  17. Üblicherweise speichert man beim Hinzufügen einen Zeiger auf die Instanz der Dialogklasse im lParam der TCITEM-Struktur.
  18. Ruhig bleiben, kein Grund für Satzzeicheninflation Das ist ein Feature von Windows XP, gegen das Du codeseitig AFAIK nichts machen kannst. Mit TweakUI kann man das abstellen, unter General->Focus->Prevent Applications from stealing focus.
  19. Klotzkopp

    Ole Db

    ADO ist ein Wrapper für OLEDB. ADO bietet Collections und Objekte, um damit die am häufigsten verwendeten Features von OLEDB aus jeder Sprache heraus nutzen zu können, die COM und Automatisierung unterstützt. Daraus folgt: - ADO kann nicht mehr bieten als OLEDB, wahrscheinlich eher weniger. - ADO ist langsamer als OLEDB. Aber auch: - ADO ist einfacher in der Verwendung. - ADO kann in vielen Sprachen verwendet werden.
  20. Wahrscheinlich meint er CWnd::GetWindowText. Probleme sollten trotzdem nicht auftreten, auch wenn er ::GetWindowText verwendet, denn unter der Haube machen die MFC auch nichts anderes.
  21. Du machst einfach genau das, was Du machen würdest, um den COM-Port zu öffnen: HANDLE hCom == CreateFile ( "COM1", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); if( INVALID_HANDLE_VALUE == hCom ) { if( GetLastError() == ERROR_ACCESS_DENIED ) { // war schon geöffnet } else { // anderer Fehler } } else { // war noch nicht geöffnet CloseHandle( hCom ); }[/CODE]
  22. Wie gesagt, wenn der COM-Port schon geöffnet ist, wird CreateFile fehlschlagen.
  23. Für Windows gibt es GetDateFormat und GetTimeFormat.
  24. Da unter Windows eine Kommunikationsressource immer nur einmal geöffnet werden kann, wirst Du das am einfachsten dadurch feststellen können, dass Du den COM-Port gar nicht öffnen kannst.
  25. Jede Viewklasse ist von CWnd abgeleitet, also kannst Du int CWnd::MessageBox( LPCTSTR lpszText, LPCTSTR lpszCaption = NULL, UINT nType = MB_OK ); verwenden. Dokumentklassen sind nicht von CWnd abgeleitet, also brauchst Du die WinAPI-MessageBox: int MessageBox( HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType ); In Deinem Fall sähe das so aus: int yesno = MessageBox( AfxGetMainWnd()->GetSafeHwnd(), messText, "Wert größer 5", MB_YESNO|MB_ICONEXCLAMATION);

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