-
June 19th, 2013, 12:27 AM
#1
[RESOLVED] memcpy error in MFC
Hi,
I load an image(768*256) using a file path(OpenImageFilePath).
After load an image, I start to read the loaded Image data using GetBits method and plot the same image data(768*256).
I'm using the memcpy method, for that i'm getting the below error. memmove function also giving the same error message.
Please clear me.
File Name : memcopy.asm
rep movsd ;N - move all of our dwords
Code for your reference
Code:
void CDlg :: FileOpen()
{
CFileException CFileEx;
CStdioFile ReadFile;
// szFilters is a text string that includes two file name filters:
TCHAR szFilters[]= _T("Image Files (*.bmp)");
CFileDialog fileDlg(TRUE, _T("bmp"), _T("*.bmp"),
OFN_FILEMUSTEXIST | OFN_HIDEREADONLY, szFilters);
fileDlg.m_ofn.lpstrTitle = _T("Offline Images");
fileDlg.m_pOFN->lpstrInitialDir=_T("C:\\AcceptedImg\\");
if(fileDlg.DoModal() == IDOK)
{
OpenImageFilePath = fileDlg.GetPathName();
OpenImageFileFlag = true;
}
//Refresh Window
CRect mRect;
GetClientRect(&mRect);
InvalidateRect(&mRect);
}
void CDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
if(OpenImageFileFlag)
{ //Load Image
CDC *pDC;
pDC=GetDC();
CImage ObjImage ;
ObjImage.Load(OpenImageFilePath) ; //Image Path
CBitmap pBitmap ;
pBitmap.Attach(ObjImage.Detach());
BITMAP bm;
pBitmap.GetObject( sizeof(BITMAP), &bm );
CDC dcMem;
dcMem.CreateCompatibleDC( pDC );
CBitmap* pbmpOld = dcMem.SelectObject( &pBitmap );
pDC->BitBlt(25,360, bm.bmWidth, bm.bmHeight,&dcMem, 0,0, SRCCOPY );
dcMem.SelectObject( pbmpOld );
ReleaseDC( pDC );
//Get Bits from that image
CImage atlImage;
atlImage.Load(OpenImageFilePath);
void* pPixel = NULL;
pPixel = atlImage.GetBits();
int pitch = atlImage.GetPitch();
int bytes = abs(pitch) * atlImage.GetHeight();
const BYTE * src = NULL;
src = (BYTE*)atlImage.GetBits();
if(pitch < 0) src -= bytes;
BYTE * pBitmapData = NULL;
pBitmapData = new BYTE[bytes];
memcpy(pBitmapData, src, bytes);
//memmove(pBitmapData, src, bytes); //Getting Error foe use memmove func also
width = atlImage.GetWidth();
height = atlImage.GetHeight();
for (int y = 0; y < width; y = y + 1)
{
iIndex = y + (width * height) - width;
for (int x = 0; x < height ; x = x + 1)
{
OfflineImageData[iIndex] = (byte)(*(pBitmapData + iIndex));
OfflineData[y][x] = OfflineImageData[iIndex];
iIndex = iIndex - width;
}
}
}//End OpenImageFileFlag
for (int y = 0; y < width; y = y + 1)//1024 ImageHeight
{
for (int x = 0; x < height-1 ; x = x + 1)//256 ImageWidth
{
SetPixelV(dc,25+y,50+x,RGB(OfflineData[y][x],OfflineData[y][x],OfflineData[y][x]));
}
}
}
Regards,
SaraswathiSrinath
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|