Verschiedenes
_FAQ-Index
ActiveX-Steuerelement funktioniert nicht unter WinXP
API-Funktion aufrufen
Avis mit CAnimateCtrl Abspielen
'cout' im Fenster ausgeben
CRichEditView
Dateiendung herausfinden aus CString + Shell Lightweight Utility Functions (Link)
Debuggen
DLL erstellen und In Visual Basic aufrufen
Frage zu CAsyncSocket
Globale Variable
Hooks
IE Url Leiste
Kommandozeilenparamter in MFC
Konsolenausgaben (cout etc.) in MFC?
LCD, fertige Klasse im Internet?!
Mehrfachdeklaration in libs (Linker)
MFC: Häufige Fragen
Multilanguages
Pointer auf CDocument in Dialog & Ringinclude-Lösung
Registry (fast) ohne WinAPI
stdout in eine Listbox umleiten?
Suchen in der MSDN (Anleitungssammlung)
Titelzeile (SDI/MDI): Font, Farbe, Hintergrund ändern + mehrzeilig anzeigen
Veränderungen an Nachrichten-Parametern vor Aufruf der Basisklasse werden ignoriert
XML in der Praxis
Zufallszahlen
Bücher
Bücher, Tutorials ,Links
Casten
"0x000000ff" in long
CString in double
CString zu char*
CString zu int konvertieren
Int in CString konvertieren
CButton
Button mit Bitmap???
Nochmals: Button mit Bitmap
CEdit
Autoscrolling in der Editbox
EditFeld nach UpdateData sofort aktualisieren
Hintergrund komplett färben
Zeilenumbruch in Editfeld
CListBox
horizontaler Bildlauf fehlt
CListCtrl
Bitmaps in einem CListCtrl anzeigen!
ClickEvent auf Zeile in ListCtrl abfangen
Drag & Drop
Drag&Drop mit CListCtrl
Erfahrungsaustausch virtuelle Tabellen mit CListCtrl
Füllen
Ganze Zeile markieren
Markierte Zeilen löschen
mit Spalten, wie Spaltenresize verhindern?
SortItems
ComboBox
Wo ist die DropDownListe?
CString
%d %s: Eine Funktion für schnelles Formatieren
gemischte Ausgabe mit MessageBox
Multiple String suche?
CTreeCtrl
Nachricht beim Aktivieren einer Checkbox in einem CTreeCtrl
CTreeView
Füllen
Datei
akt. Dateipfad des programms auslesen...
Alle Verzeichnisse sowie Dateinamen ausgeben?
Array in Datei speichern
Bitmap aus Datei laden
Lesen unsd schreiben von .ini Files in VC++
Ordner löschen
Datenbank
Auflistung aller ODBCs in einer Combox
Daten abgeschnitten (ODBC Datenbankzugriff auf lange Strings)
Datenbankzugriff mit CRecordset
mySQL und MFC
Zusammenfassung CRecordset
Debug
ASSERT mit eigenem Text?
Dialog
Einbetten einer CHtmlView in einen Dialog
(Standard-)Buttons deaktivieren (aka: Dialog - Wizard Button)
Accerlator-HotKeys funzen net!!!
Alle Controls auf Disabled setzen (Edit auf Readonly)
CEdit-Größe verändern von Dialog-Größe abhängig
CheckBox "abhaken"
CToolTipCtrl mit mehreren zeilen?
CToolTipCtrl und CStatic
CToolTipCtrl
Dialog im Thread anzeigen lassen
Dialog nur 1mal aktiv; 2.Dialog soll warten.
dialog schliesst sich nach Tastendruck "Enter
Dialogbasierendes Programm unsichtbar starten
Dialogfenster verkleiner per Button
In Standarddialog weiteres Control einfügen
JPG,GIF in Dialog anzeigen (die lösung)
Karteikarten
Maske erweitern mit Button "erweitert"
MFC Dialog färben
mit zurück<->weiter (Wizard)
möchte Bitmap mit Transparents darstellen ?
Ohne Titelleiste verschieben
OnChange kommt nicht an (Message Reflection)
Picture Steuerelement: Wie fügt man ein Bild ein?
Problem mit CMenu::EnableMenuItem
Schriftart eines Edit ändern
Schriftfarbe ändern
Slider aktualisieren
Toolbar in einen "normalen" Dialog einbinden
Tooltip eines Button
Tooltiptext Maximallänge?
Drucken
Drucken bei Mulitlineausgabe
Drucken in Dialog
Drucken mit der MFC (Doc-View)
Exe allg.
Begrüßungsbildschirm
doppelstart vermeiden
Welche Funktion wird immer vorm Absturz aufgerufen?
x oben rechts ausschalten
Internet
Bild aus dem Internet laden
CHttpFile und CHttpConnection?
Datei aus dem Internet herunterladen (mit Statusanzeige)
Datenübergabe an Webserver
DFÜ Verbindung herstellen
E-Mail versenden mit MFC
HTML Seite in String laden....
Internetseite laden
MDI
Rahmenfenster maximiert darstellen...
Memory Leaks
GDI Objekte mit Create
Menü
dynamische Menüs
Menueinträge verändern
Netzwerk
Computer Pingen
Computername anhand der IP rausfinden
IP auslesen und anzeigen
Wie kann man die MAC-Adresse auslesen?
Release
Programme auf anderen Rechnern
Release Version läuft nicht - Debug schon
SDI
Beenden
Mehrere Formviews in einer SDI
Save Dialog: Default Endung einstellen
SDI-Anwendung Formview zugriff auf members
Serielle Schnittstelle
A high-performance, complete and compact serial library for C++
Die Serielle Schnittstelle mit MSVC!
Serielle Daten
SoftwareDownload
Woher bekommt man das SDK für Visual Studio 6?
Sound
Ausgabe eines Signaltonens per Soundkarte mit beliebiger Frequenz
MP3' s abspielen
Standarddialog
"Datei öffnen/speichern unter" - Dialog..
Aufruf des Ordnerauswahl-Dialogs
CFileDialog Frage
CFileDialog/Button hinzufügen???
CFileDialog: 2. Dateiendung im Filter als Vorauswahl
Ordner suchen: "Durchsuchen"-Ordner vorgeben
System
Aktuell angemeldeten Benutzer herausfinden
CPU Last messen ...
Dienst für W2K Server + Professional
Externes Programm starten oder läuft gestarteter Prozess noch?
Notepad aus Programm mit gegebener Datei öffnen
Parallelport-Ansteuerung
Runterfahren
SysTray-Icon
Taskleiste einfrieren
Text auf den Desktop zeichen
wie bekomme ich ein progamm in die tray?
Wie gucke ich per MFC nach, ob ein Programm installiert ist? (.net 1.1 und MSDE 2000)
win xp look
Win-Version herausfinden ... Wie?
Word/Excel über ActiveX fernsteuern
Zwischenablage mit Unicode
zwischenablage, speicher, strg c
Thread
CWinthreads
Selbstgeschriebene Timer Funktion stimmt nicht
Timer oder Thread? (Kurzanleitung)
Trotz while-Schleife auf User-Interface reagieren (ohne Thread)
Timer
einen zweiten SetTimer
VC 2005 Express
error PRJ0003: Fehler beim Starten von "cmd.exe"
Komplette Installation runterladen
MFC mit MSVC++ 2005 Express Edition? Wird die MFC noch weiterentwickelt?
VC Bugs
Dlg-Klasse verschwindet oder Intellisense funktioniert nicht
Klasse weg?!?
VC GUI
Alten Dialog in neuem Projekt verwenden
Ereignishandler in VC2005 anlegen
Formatierungszeichen ausblenden
Kein StepInto beim Debuggen
Resourcen eines anderen Projektes ins aktuelle kopieren
Wizard
Übergabe auf andere (Wizard / Dialog) - Seiten
Wizard erstellen
Zeichnen
Bildklasse für JPG u.s.w.
Brush mit 2 Farben
CDC::DrawText transparent
Textlänge
Gesamt: 36 Kategorien, 178 Einträge
Dieser FAQ Beitrag gehört eindeutig zu denen der schlechteren Kategorie!
Der strotzt nur so von Fehlern.
Hier wird eine Funktion GetModuleFileName() verwendet die einen CString zurückgibt und die ist nicht gezeigt und in der MFC gibt es die nicht.
1. GetModuleFileName liefert einen liefert einen DWORD zurück.
2. Weil dies ein DWORD ist kanst Du keinen . operator (Punkt-operator) darauf anwenden.
3. Weil es keinen Punkt.operator bei einem DWORD gibt, kann es auch kein Mid geben, genauswenig wei einen ReverseFind.
4. Macht es keinen Sinn eine Funktion zweimal aufzurufen wenn Du beim zweiten mal nichts anderes angibst als beim ersten mal.
5. Wird in C/C++ relativ zu 0 gezählt. CString::Mid(1,...) würde also das erste Zeichen abschneiden. (auch ein Fehler in diesem FAQ Beitrag)
Hier drei korrekte Varianten (allerdings nicht getestet und einfach so frei hingeschrieben). Variante 1 würde ich bevorzugen.
Variante 1 kommt aus http://www.mpdvc.de/html.htm#Q13 (BTW: DiesenFAQ Beitrag habe ich vor gefühlten 20 Jahren geschrieben).
CString GetApplicationDirectory()
{
TCHAR szPathName[_MAX_PATH];
::GetModuleFileName(NULL, szPathName, _MAX_PATH);
LPTSTR pszFileName = _tcsrchr(szPathName, '\\') + 1;
*pszFileName = '\0';
return szPathName;
}
CString GetApplicationDirectory()
{
CString strPath;
::GetModuleFileName(NULL, CStrBuf(strPath,_MAX_PATH), _MAX_PATH);
strPath.GetBufferSetLength(strPath.ReverseFind('\\')-1);
return szPath;
}
CString GetApplicationDirectory()
{
CString strPath;
::GetModuleFileName(NULL, CStrBuf(strPath,_MAX_PATH), _MAX_PATH);
return strPath.Mid(0,(strPath.ReverseFind('\\')-1);
}
Shell32 schrieb:
Hallo,
vielleicht kann jemand den FAQ-Eintrag "IE Url Leiste" updaten.
Für den IE7 gibt es folgende neue Verschachtelung der Struktur:
->IEFrame
-->WorkerW
--->ReBarWindow32
---->Address Band Root
----->ComboBoxEx32
------>ComboBox
------->Edit
estartu schrieb:
Ist alles geklärt? Ich würde den Beitrag gern in die FAQ schieben.
Oh - welche Ehre
Bleibt vielleicht noch das Problem mit dem horizontal Scrolling in der Listbox. Ich habe mal etwas experimentiert und habe als Lösung folgende Funktion 'addString' geschrieben:
struct DC
{
explicit DC( CWnd& wnd )
: m_wnd( wnd ), m_dc( wnd.GetDC() ) {}
~DC()
{
m_wnd.ReleaseDC( m_dc );
}
CDC* operator->() { return m_dc; }
private:
CWnd& m_wnd;
CDC* m_dc;
DC( const DC& ); // Kopieren verhindern
DC& operator=( const DC& );
};
// -- fügt den Text 'txt' der Listbox 'box' hinzu und passt ggf. das 'horizontal extend' an,
// so dass das horizontale Scrolling korrekt funktioniert.
int addString( CListBox& box, const TCHAR* txt )
{
const int Rand = 4; // rechter Rand in Pixeln
const int ret = box.AddString( txt );
DC dc( box ); // Wrapper sorgt für CWnd::ReleaseDC (s.o.)
dc->SelectObject( box.GetFont() ); // ist notwendig, im Gegensatz zum Beispiel in der Hife zu CListBox::GetHorizontalExtent!
const CSize sz = dc->GetTextExtent( txt );
if( sz.cx + Rand > box.GetHorizontalExtent() )
{
box.SetHorizontalExtent( sz.cx + Rand );
}
return ret;
}
die ist im Listing des Files ListBoxStreambuf.h ab der Zeile 12 einzufügen. Die Aufrufe der Methode CListBox::AddString in den Zeilen 17 und 28 sind entsprechend anzupassen:
return addString( box, line.c_str() ); // vorher Zeile 17
und
return addString( box, &wstr[0] ); // vorher Zeile 28
sonst ist - denke ich - wohl alles klar.
Dieser Thread über das Umleiten der Ausgabe von cout ist auch noch hilfreich.
Gruß
Werner
Mr Evil schrieb:
Hier noch die funktionen die es ermoeglichen bestimmten text aus einer editbox in der formview zu kopieren und zu pasten
Paste
void CFormDialog::OnPaste()
{
HWND focus = ::GetFocus();
CEdit *Element = NULL;
if(focus == m_Edit.m_hWnd)
Element = &m_Edit;
// for additional edit boxes, simply ask and assign here
if(Element)
{
// Get the whole text
CString strText;
Element->GetWindowText(strText);
// Get clipboard text
CString strNewText = GetClipboardText();
// Delete the selected area from the text
int iStart = 0;
int iEnd = 0;
Element->GetSel(iStart, iEnd);
strText.Delete(iStart, iEnd - iStart);
// Add the new text inside
strText.Insert(iStart, strNewText);
// Set the new text and set the cursor after it
Element->SetWindowText(strText);
int iCurPos = iStart + strNewText.GetLength();
Element->SetSel(iCurPos, iCurPos);
}
}
Copy
void CFormDialog::OnCopy()
{
HWND focus = ::GetFocus();
CEdit *Element = NULL;
if(focus == m_Edit.m_hWnd)
Element = &m_Edit;
// for additional edit boxes, simply ask and assign here
if(Element)
{
// Get the whole text
CString strText;
Element->GetWindowText(strText);
// Get the selected area from the text
int iStart = 0;
int iEnd = 0;
Element->GetSel(iStart, iEnd);
strText = strText.Mid(iStart, iEnd - iStart);
// Set the cplipboard text
SetClipboardText(strText);
}
}
STRG+A (Select all)
void CFormDialog::OnSelectAll()
{
HWND focus = ::GetFocus();
CEdit *Element = NULL;
if(focus == m_Edit.m_hWnd)
Element = &m_Edit;
// for additional edit boxes, simply ask and assign here
if(Element)
Element->SetSel(0, Element->GetWindowTextLength());
}
Mr Evil schrieb:
eventuell kannst du noch dazu schreiben dass
wenn SetClipboardText oder GetClipboardText als member einer klasse sind, muss
OpenClipboard ohne argumente aufgerufen werden
Lad Dir die ISO-Datei runter! Auf keinen Fall das "setup", da Du dieses auch registroeren musst... das ISO nicht
http://www.c-plusplus.net/forum/viewtopic-var-t-is-143003.html
Ich hab mal die Links überarbeitet (dass wieder mehr funktionieren) und hier noch ein paar Links die nicht vorkamen:
http://www.coding-help.de/hilfe.html (mit getrennten Erklärungen für VC6 und VC ab 2002 )
http://cpp-tutor.de/
Snowbear139 schrieb:
Könntest du mir sagen wo ich die einsetllung finde??
Welche Einstellung?
"Start|Systemsteuerung|System|Erweitert|Umgebungsvariablen"
Und ja, die MFC wird weiterentwickelt! Mir "Orcas" (dem nächsten VS) wurde die MFC wesentlich erweitert!
http://blogs.msdn.com/vcblog/archive/2007/03/21/mfc-updates-for-vista-common-controls.aspx
Aber wie schon gesagt wurde: Die MFC ist kostenpflichtig (und ab der Standard-Version dabei)