Schikos Senf
C++ ,  MFC Magische Auge    Home    Family    Laser    Bumerangs    Sonstiges    NoFrames   

MFC

WinDiff    HexTools    CIni,  MFC    CSharedMemory    CFinder    Hex-Calculator    UnixToWin    links   

[MVP: Most Valuable Professional] Also was gibt’s..
Eine Menge HTML für mich zu lernen, um dieser Seite mal ein vernünftiges Aussehen zu geben.
In den Jahren 2003 und 2004 bin ich MVP für VC++ gewesen.
Also wieder zum Thema. Ein paar nützliche Sachen hab ich auch parat:




WinDiff Erweiterung

-Längere Eingabefelder für die Dateinamen
-Beim Vergleich von Verzeichnissen können diese mit einem Folder-Dialog gesucht verden.
-Das Speichern des "Composit-Files" ändert auch die 2 Source-Files !!

Ausgewertet werden:
!>     rechtes File
<!     linkes File

Benötigte DLLs:
-comp2file.dll
-Gutils.dll
-MSVCRT.DLL

WdMfcRel.exe [111 kb] inc. der benötigten DLLs




CBitWnd,CHexText

HexInput70.jpg Screenshot kommt  gleich Mir hat immer eine DDX_ - Funktion für die hexadezimale oder bitweise Bearbeitung von Variablen in den Editfeldern gefehlt. Also selbst ans Werk. Was mir vom Aufwand nicht sonderlich gefällt, ist das typische Vorgehen: Controlvariable mit dem Classwizard erzeugen, Die CStatic in CMyControl umbenennen , Den Control-Header im Dlg-Header includen , Eventuell eine zweite DDX_MyControl hinzufügen :(
Wenn es geht beschränke ich mich auf das Includen der "MyControl.h" im Source-File und einer DDX_MyControl
So auch bei CBitWnd und CHexText. Das Subclassing und die allocierung übernimmt die DDX_BitWnd() Bei CBitWnd handelt es sich um ein Control für die bitweise Bearbeitung von Variablen. Unabhängig von der DDX_HexText nutze ich die statischen Funktionen:

 
	CString CHexText::Hex2Ascii(CString& strSource);
	CString CHexText::Ascii2Hex(CString& strSource);
		
ständig für allerlei sonstige Anzeigen.

HexTools-Sourcen [36 kb] VC 6.0 Demoprojekt
HexTools.exe [108 kb] Kompiliert, gezipt

Eine Bemerkung noch weshalb die letze Release Übersetzung der HexTools.Exe hier nicht lief:
Ein ON_COMMAND_RANGE-Makro benötigt einen Handler in der Form:
afx_msg void OnMyCommandRange(UINT nID);
Ich habe die Messages aber an den normalen Button-Handler
afx_msg void OnApply(void)
weitergeleitet. DEBUG verzeit's , NDEBUG nicht.


CIni

Eine unverzichtbare Klasse für mich...
Einfaches Laden/Speichern über Makro:

void CMyClass::CUpdateIni(BOOL bFromIni)
{
	CIni ini(strFileName,strSection);
	SER_GET(bFromIni,m_strMyVariable);
	SER_GETD(bFromIni,m_nMyValue,123);
	SER_ARR(bFromIni,m_arMyArray,10);
		
CIniSample.zip [24 kb] VC 6.0 Demoprojek
01.10.2001: Wenn der Ini-Dateiname ohne Pfadangabe angegeben wird, wird die Datei nicht mehr im Windows-Verzeichnis , sondern im Modul-Verzeichnis angelegt.
10.11.2004: Methoden für das löschen von Entries und Sections sind hinzugekommen.
   void DeleteEntry(LPCSTR szEntry, LPCSTR strSection = NULL); //Deletes szEntry in the current Section
   void DeleteSection(LPCSTR strSection = NULL);//Deletes all entries in the Section
		



CSharedMemory


SharedMemoryDemo70.jpg Screenshot Kurzes Beispiel für die Verwendung von Shared Memory via FileMapping
 
#include "CSharedMemory.h"

//Instance of SharedMemoryBlock
CSharedMemory m_sm;
..
//Init the SharedMemoryBlock
m_sm.Init("MyScharedMemory",256/*bytes*/);
..
//
char* pSharedString = (char*)m_sm.GetData()
..
{
   // prevent other processes from accessing 
   //the SharedMemoryBlock..
   CSharedMemory::Locker locker(m_sm);
   // Read ore write somthing
   ModifySomthing(pSharedString);
}

SharedMemory-Sourcen [21 kb] VC 6.0 Demoprojekt


CFinder

Eine von CFileFind abgeleitete Klasse, die auch Unterverzeichnisse durchsuchen kann.
FinderDemo-Sourcen [23 kb] VC 6.0 Demoprojekt


HexRech, UPN-Calculator

HexRech.jpg Screenshot Das ist eine Anwendung, die ich eigendlich immer am Laufen habe, wenn ich am PC Sitze. Er funktioniert wie ein HP-Taschenrechner. Es ist halt ein gewachsenes Produkt. Die Größenänderung habe ich noch über EnumChildWindows()realisiert, es gibt aber inzwischen bei Codeguru eine bessere Klasse: DlgResizeHelper. Die Sourcen kann man eigendlich niemanden antun.
Blödsinn, hier sind sie jetzt. HexRech Sourcen [29 kb]

Bekannte Mängel;
- Speicher( M+ MR etc )wirkt sich auf die Stackzeile 0 aus
- Beim drücken von "Enter" bleibt das zuletzt bearbeitete Editfeld leer, Das hat den Sinn sofort mit der Maus weiter zu tippen. Tastatureingabe ist nicht ausprogrammiert, d.h es muß mitder Maus gearbeitet werden.
If I only had time..la la zum hundertsten..
HexRech Anwendung [114 kb]



UnixToWin

UnixToWin Screenshot Ein kleiner Editor, um Text-Dateien wahlweise mit "CR LF" oder "LF" zu öffnen oder zu speichern. Welches andere Tool das auch kann, sag ich lieber nicht :-)

UnixToWin Anwendung [75 kb]

UnixToWin Quellcode [26 kb]



Und noch viel mehr "ToDo"..




Links:

CodeGuru Umfangreiche Bibliothekt mit freien C++/MFC Sourcen
CodeProject Umfangreiche Bibliothekt mit freien C++/MFC Sourcen
Planet Source Code
PJ Naughter's Homepage
Carsti's Homepage IMHO hat Carsten Witte[MVP] u.a. die Beste Linksammlung rund um die MFC
www.mpdvc.de Die FAQ zu microsoft.public.de.vc

Newsgroup:

microsoft.public.de.vc



seit 13.06.01:
Counter
Top Mail: Schiko@Schikos.de.