ich lade eine Binaere Datei folgendermassen:
Dann mach ich Folgendes:
Die Klasse Imagehandler ist abgeleitet von CDialog.
Wie stelle ich nun die Bitmapdatei auf meinem Dialog dar?
Gibt es da einfachere, fuer Anfaenger wie mich, verstaendlichere Wege?
Fuer allgemeine, konstruktive Kritik was den Code angeht waehre ich auch dankbar .
Gruss Christian
Code:
bool CImageHandler::BuildImageMatrix(std::vector<CString> fList,CString srcpath)
{
std::vector<CString>::iterator fIterator;
CString fName;
CStringA anssrcpath(srcpath);
FILE* fPointer=NULL;
size_t result;
int count=0,i=372;
unsigned __int8 buffer[BUFFERLENGTH];
for(fIterator=fList.begin(); fIterator!=fList.end(); fIterator++)
{
fName=*fIterator;
if(fName.Right(3)=="ptd")
{
CStringA ansfName(fName);
errno_t err;
//load file in binary mode
err=fopen_s(&fPointer,anssrcpath+ansfName,"rb");
if(fPointer==NULL)
{
MessageBox(/*NULL,*/_T("File: ")+srcpath+fName+_T(" is invalid!"),_T("Error"),MB_ICONERROR|MB_OK);
return false;
}
// copy the file into the buffer:
fgetc(fPointer);
result=fread(buffer,sizeof(unsigned __int8),BUFFERLENGTH,fPointer);
// terminate
fclose(fPointer);
if(!CreateBitmapFromArray(buffer))
{
free(buffer);
return false;
}
}
}
return true;
}
Dann mach ich Folgendes:
Code:
bool CImageHandler::CreateBitmapFromArray(unsigned __int8 buf[])
{
CPaintDC dc(AfxGetMainWnd()); // device context for painting
DWORD dwBits= (DWORD)buf;
BITMAPINFO bmi;
bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
bmi.bmiHeader.biWidth = 4;
bmi.bmiHeader.biHeight = 4;
bmi.bmiHeader.biPlanes = 1;
bmi.bmiHeader.biBitCount = 32;
bmi.bmiHeader.biCompression = BI_RGB;
bmi.bmiHeader.biSizeImage = 0;
bmi.bmiHeader.biXPelsPerMeter = 0;
bmi.bmiHeader.biYPelsPerMeter = 0;
bmi.bmiHeader.biClrUsed = 0;
bmi.bmiHeader.biClrImportant = 0;
CBitmap bitmap;
bitmap.CreateCompatibleBitmap(&dc,4,4);
::SetDIBits(dc.m_hDC,bitmap,0,4,&dwBits,&bmi,DIB_RGB_COLORS);
CDC dcMemory;
dcMemory.CreateCompatibleDC(&dc);
CBitmap * pOldBitmap = dcMemory.SelectObject(&bitmap);
dc.BitBlt(0, 0, 4, 4, &dcMemory, 0, 0, SRCCOPY);
dcMemory.SelectObject(pOldBitmap);
return true;
}
Die Klasse Imagehandler ist abgeleitet von CDialog.
Wie stelle ich nun die Bitmapdatei auf meinem Dialog dar?
Gibt es da einfachere, fuer Anfaenger wie mich, verstaendlichere Wege?
Fuer allgemeine, konstruktive Kritik was den Code angeht waehre ich auch dankbar .
Gruss Christian
Zuletzt bearbeitet: