--Home--
:. Main
--Software--
:. Shareware
:. Freeware
 
--Programmierung--
:. C++/MFC Beispielcode
:. C++/MFC Tutorial
:. C++ Weitere Info/Link
 
--Shop--
:. Shop
 
--Info--
:. Pay
:. Kontakt
:. Impressum
:. Disclaimer
:. Faq
:. Privat
 
--Werbung--
 
--Wetter--
 
--Kalender--
September 2010
Mo Di Mi Do Fr Sa So
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
 
--Aktuelle Viren--
 
--Webseite Check--
 
Prüfen Sie Ihre Webseite
  Voreintrag
  Ladezeit
  Link-Check
  Linkparade
  HTML-Check
 
--Besucher--
1 User(s) Online.
--Werbung--
 
 
 
Programmierung Beispielcode
***
C++/MFC Beispielcode

Auf dieser Seite gibt es Sourcecode, welches in Ihrem MFC-Projekt eingefügt werden kann. Zur Information: Ich (Der Programmierer) Arbeite mit dem "Microsoft Visual C++ 6.0", wenn Sie dem "Borland-Compiler" Arbeiten, dann müssen Sie den Code ein wenig abändern, aber Fragen Sie mich nicht wie...ich kenne mich bei Borland C++ nicht so gut aus. Zudem geht leider die Struktur des Codes verloren...
 
Sourcecode Übersicht
Eine Methode, wie man den Computer automatisch herunterfährt.
Wie kann ich in einem SDI-Projekt, auf einem beliebigen Drucker, vertikal drucken ?
Ich will zu einem "CHtmlView-Projekt" ein Clipboard hinzufügen, wie soll das gehen ?
Ein Beispielcode, wie man die Daten aus einem Mp3-File auslesen und bearbeiten kann.
Wie rufe ich ein Html-Dokument aus einem Dialog auf, damit es dann in einem Browserfenster aufgeht ?
Was muss ich machen, damit ich eine Webseite aus einem Dialog aufrufen kann ?
Sehen Sie hier den Beispielcode, wie man die lokale IP-Adresse von einem Computer ermitteln kann.

Eine Methode, wie man den Computer automatisch herunterfährt.
  Lösung:Einfach diesen Code in das Programm einbauen und einfach mal testen...
  Code:
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken);

LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken,false,&tkp,0,(PTOKEN_PRIVILEGES)NULL,0);
ExitWindowsEx(EWX_FORCE|EWX_SHUTDOWN,NULL);
 
Wie kann ich in einem SDI-Projekt, auf einem beliebigen Drucker, vertikal drucken ?
 
Lösung:Erstellen Sie zuerst eine Funktion in der Applikation (App), geben Sie ihm den Namen "SetLandscape()",
diese ist dann im Header wieder zu finden. Die Funktion wird danach in der InitInstance aufgerufen. Zuletzt tragen Sie noch den
Code in die Funktion ein.
  Code:
void CCdCover2App::SetLandscape()
{
// Get default printer settings.
PRINTDLG pd;
pd.lStructSize = (DWORD) sizeof(PRINTDLG);
if (GetPrinterDeviceDefaults(&pd))
{
// Lock memory handle.
DEVMODE FAR* pDevMode =
(DEVMODE FAR*)::GlobalLock(m_hDevMode);
LPDEVNAMES lpDevNames;
LPTSTR lpszDriverName, lpszDeviceName, lpszPortName;
//HANDLE hPrinter;

if (pDevMode)
{
// Change printer settings in here.
pDevMode->dmOrientation = DMORIENT_LANDSCAPE;

// Unlock memory handle.
lpDevNames = (LPDEVNAMES)GlobalLock(pd.hDevNames);
lpszDriverName = (LPTSTR )lpDevNames + lpDevNames->wDriverOffset;
lpszDeviceName = (LPTSTR )lpDevNames + lpDevNames->wDeviceOffset;
lpszPortName = (LPTSTR )lpDevNames + lpDevNames->wOutputOffset;

//OpenPrinter(lpszDeviceName, &hPrinter, NULL);
//DocumentProperties(NULL,hPrinter,lpszDeviceName,pDevMode,pDevMode, DM_IN_BUFFER|DM_OUT_BUFFER);

// Sync the pDevMode.
// See SDK help for DocumentProperties for more info.
// ClosePrinter(hPrinter);
GlobalUnlock(m_hDevNames);
GlobalUnlock(m_hDevMode);
}
}
}

 

Ich will zu einem "CHtmlView-Projekt" ein Clipboard hinzufügen, wie soll das gehen ?
  Lösung:Dies ist ganz einfach. Zuerst müssen Sie die folgenden Menüpunkte hinzufügen, dies sind Ausschneiden, Kopieren, Einfügen, Alles markieren. Jetzt die entsprechenden Handler hinzufügen und dann den Code einfügen. Das war's.
  Code:
void CWebBrowserView::OnEditCut()
{
ExecWB(OLECMDID_CUT, OLECMDEXECOPT_DONTPROMPTUSER, NULL, NULL);
}

void CWebBrowserView::OnEditCopy()
{
ExecWB(OLECMDID_COPY, OLECMDEXECOPT_DONTPROMPTUSER, NULL, NULL);
}

void CWebBrowserView::OnEditPaste()
{
ExecWB(OLECMDID_PASTE, OLECMDEXECOPT_DONTPROMPTUSER, NULL, NULL);
}

void CWebBrowserView::OnEditSelectall()
{
ExecWB(OLECMDID_SELECTALL, OLECMDEXECOPT_DONTPROMPTUSER, NULL, NULL);
}

 
Ein Beispielcode, wie man die Daten aus einem Mp3-File auslesen und bearbeiten kann.
  Lösung:Ich hatte in einem Forum einmal die Frage gestellt, wie man die Zeit aus einem Mp3-File auslesen kann, dabei habe ich diesen Code bekommen. Nach meinen Erfahrungen ist der Code stabil und brauchbar.
  Code:
typedef struct
{
unsigned char save; // Save the Info
unsigned char mode; // Mono Stereo J-Stereo ...
unsigned char channels; // Count off channels
unsigned char name_pos; // Filename pos

unsigned int play_len; // Playing lenght as 1/16 sec.
unsigned int sample_rate; // Sample frequency
unsigned int stream_rate; // Streamrate as kbits/s

char path[CTL_MAX_PATH]; // Filename
} SoundInfo,*lpSoundInfo;

//**********************************
//*
//* Mp3BlockInfo
//*
//**********************************
// If Scan in not zero the count of scanned byte are stored there
// If Info in not zero the info of the soundinfo is stored there
// Returns the count of samples in den Mp3 array or 0 if the buffer has no Mp3 head
int Mp3BlockInfo(void *Block,int Size,SoundInfo *Info,int *Scan)
{
static long snd_freqs[8] = { 44100, 48000, 32000, 22050,
24000, 16000, 11025, 0};

static long mpeg_123[2][3][16] =
{
{{0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,},
{0,32,48,56, 64, 80, 96,112,128,160,192,224,256,320,384,},
{0,32,40,48, 56, 64, 80, 96,112,128,160,192,224,256,320,}},

{{0,32,48,56, 64, 80, 96,112,128,144,160,176,192,224,256,},
{0, 8,16,24, 32, 40, 48, 56, 64, 80, 96,112,128,144,160,},
{0, 8,16,24, 32, 40, 48, 56, 64, 80, 96,112,128,144,160,}}
};

static long mpeg_fs[3][16] =
{{ 0 , 104, 156, 182, 208, 261, 313, 365, 417, 522, 626, 731, 835, 1044, 1253, },
{ 0 , 96 , 144, 168, 192, 240, 288, 336, 384, 480, 576, 672, 768, 960, 1152, },
{ 0 , 144, 216, 252, 288, 360, 432, 504, 576, 720, 864, 1008, 1152, 1440, 1728}};

unsigned head;
int version,num;
int layer;
int bitrate;
int frequency;
int error_bit;
int padding;
int mpeg_mode;
int stereo;
int framesize;
int ssize;
int mpeg25;
unsigned char *buffer=(unsigned char*)Block;

head=GetMpeg(buffer);

if((head&0xFFE00000) != 0xFFE00000) // Wrong header ?
{
for(num=0;num<=Size-4;num++) // Search for Header
{
if( buffer[num ]!=0xFF )continue;
if( buffer[num+1]==0xFF )continue;
if((buffer[num+1]& 0xE0)==0xE0)
{
head=GetMpeg(buffer+num);
break;
}
}

if(Scan)*Scan=num;
return 0;
}

mpeg25 = ((head>>20)&0x01)^0x1; // Mepeg 2.5
version = (((head>>19)&0x01)^0x1)|mpeg25; // version-number
layer = 4-((head>>17)&0x03); // layer
bitrate = ((head>>12)&0x0F); // bitrate
frequency = ((head>>10)&0x03) + (version*3);
error_bit = ((head>>16)&0x01)^0x1;
padding = ((head>> 9)&0x01);
mpeg_mode = ((head>> 6)&0x03);
stereo = (mpeg_mode == MPG_MD_MONO) ? 1 : 2;

if(mpeg25)
{
layer = 1;
frequency=6;
}

switch(layer) // calculate frame size
{
case 1: framesize = mpeg_123[version][0][bitrate] * 12000;
framesize /= snd_freqs[frequency];
framesize = ((framesize+padding)<<2)-4;
break;
case 2: framesize = mpeg_fs[frequency&0x3][bitrate]-4;
framesize += padding;
break;
case 3:
if(version) ssize = (stereo == 1) ? 9 : 17;
else ssize = (stereo == 1) ? 17 : 32;
if(error_bit)ssize += 2;

framesize = mpeg_123[version][2][bitrate] * 144000;
framesize /= snd_freqs[frequency]<<(version);
framesize = framesize + padding - 4;
break;

default:if(Scan)*Scan=1;
return 0;
}

if(framesize<=0)
{
if(Scan)*Scan=1;
return 0;
}

if(Scan)*Scan=framesize+4;

if(Info) // Get file info
{
Info->play_len = 0;
Info->mode = mpeg_mode+1;
Info->channels = stereo;
Info->sample_rate = snd_freqs[frequency];
Info->stream_rate = mpeg_123[version][layer-1][bitrate];
}

if(version)return (layer==1)? 384/2:1152/2;

return (layer==1)? 384:1152;
}

//**********************************
//*
//* Mp3Length
//*
//**********************************
int Mp3Length(char *Datei)
{
FILE *f;
int wo,fpos,flen,anz,fanz,size,samples;
unsigned char buffer[4100];
SoundInfo info;

f=fopen(Datei,"r");
if(!f)return 0;

wo = 4;
fpos = 0;
flen = flength(f); // Dateilänge einlesen
size = 0;
samples = 0;

while(fpos<flen) // Datei einlesen
{

fanz=flen-fpos;
if(fanz>4096)fanz=4096;
fread(buffer,fanz,1,f); // Datei einlesen

while(wo<=4096) // Samples zählen {
x=Mp3BlockInfo(mem+wo,4096+4-wo,&info,&anz);
samples+=x;
wo+=anz;
if(x)size+=anz;
}

memcpy(mem,mem+4096,4);
wo&=0x0FFF;

fpos+=fanz;
x=(flen<=0)? 1:flen;
}

fclose(f);
// Abspiellänge berechen
if(fpos==flen && samples>0)
{
if(!info.sample_rate)info.sample_rate=44100;

flen=samples/(info->sample_rate>>4);
// flen ist die Spieldauer in 16tel Sekunden
inf.play_len=flen;
}
return flen;
}

 
Wie rufe ich ein Html-Dokument aus einem Dialog auf, damit es dann in einem Browserfenster aufgeht ?
  Lösung:Das ganze funktioniert mit "ShellExecute". Achten Sie auf den Pfad, dieser muss genau auf Ihr Dokument zeigen,
ansonsten wird nichts angezeigt. Es ist auch möglich, ".exe" oder ".html" aufzurufen, dies klappt auch.
  Code:
HINSTANCE hInstance = ShellExecute(GetSafeHwnd(),"open",strPfad,NULL,NULL,SW_SHOWNORMAL);
 
Was muss ich machen, damit ich eine Webseite aus einem Dialog aufrufen kann ?
  Lösung:Die Methode ist die gleiche, wie wenn Sie ein Html-Dokument aufrufen. Der Code wurde ein wenig abgeändert, anstatt "GetSafeHwnd" benutzte ich jetzt einfach "NULL", siehe oben. Mit diesem Paramter funktioniert es anscheinend auch.
  Code:
CString strLink = "http://www.dansoft.ch/Applets.htm";
HINSTANCE hInst = ShellExecute( NULL, "open", strLink, NULL,NULL, SW_SHOWNORMAL );
   
Sehen Sie hier den Beispielcode, wie man die lokale IP-Adresse von einem Computer ermitteln kann.
  Lösung:Als ersten müssen Sie "ws2_32.lib" in den Linker einbinden und "winsock2.h" in den Header, sonst funktioniert die ganze Sache nicht. Die IP-Adresse steht dann im String "strIPAdresse" zu Verfügung.
  Code:
//Winsock - "ws2_32.lib" in den Linker und "winsock2.h" in den Header
//Lokale IP-Adresse auslesen
int err1,x;
WORD wVersionRequested1;
WSADATA wsaData1;
hostent *he;
char puffer[256];
char **aliases;
char **addeses;
char charIPBuffer1[20];
char charIPBuffer2[20];
char charIPBuffer3[20];
char charIPBuffer4[20];
CString strIPBuffer1 = "";
CString strIPBuffer2 = "";
CString strIPBuffer3 = "";
CString strIPBuffer4 = "";

CString strPunktIP = ".";
CString strIPAdresse = "";

wVersionRequested1 = MAKEWORD( 2, 0 );
err1 = WSAStartup( wVersionRequested1, &wsaData1 );
gethostname(puffer,sizeof(puffer));//dss3
he=gethostbyname (puffer);
aliases=he->h_aliases;
addeses=he->h_addr_list;

for(x=0;x<256;x++)
{
if(!addeses[x])break;

//Werte umwandeln
_itoa(addeses[x][0]&0xFF,charIPBuffer1,10);
_itoa(addeses[x][1]&0xFF,charIPBuffer2,10);
_itoa(addeses[x][2]&0xFF,charIPBuffer3,10);
_itoa(addeses[x][3]&0xFF,charIPBuffer4,10);
strIPBuffer1 = charIPBuffer1;
strIPBuffer2 = charIPBuffer2;
strIPBuffer3 = charIPBuffer3;
strIPBuffer4 = charIPBuffer4;

strIPAdresse.Insert(0,strIPBuffer1);
strIPAdresse.Insert(strIPAdresse.GetLength(),strPunktIP);
strIPAdresse.Insert(strIPAdresse.GetLength(),strIPBuffer2);
strIPAdresse.Insert(strIPAdresse.GetLength(),strPunktIP);
strIPAdresse.Insert(strIPAdresse.GetLength(),strIPBuffer3);
strIPAdresse.Insert(strIPAdresse.GetLength(),strPunktIP);
strIPAdresse.Insert(strIPAdresse.GetLength(),strIPBuffer4);
}

//Socket wieder loeschen
WSACleanup();

© 1997-2010 - Daniel Widrig - DSS SWISS SOFTWARE