wtl에서 jpg,png 보이기

1584 단어
다음 방법은 wtl에서만 테스트한 적이 있습니다
데이터,len은 표시할 jpg 또는 png의 데이터와 길이로 메모리에서 직접 불러올 수 있습니다
void AccountDlg::ShowJpgGif(CImage& img,char* data,int len, int x, int y)
{
	IStream *pStm; 
	HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, len); 
	if (hGlobal != NULL) 
	{ 
		LPVOID pvData = GlobalLock(hGlobal);
		if (pvData != NULL) 
		{ 
			memcpy(pvData,data,len);
			GlobalUnlock(hGlobal); 
			CreateStreamOnHGlobal(hGlobal, TRUE, &pStm); 
			img.Load(pStm);
		}
	}
}

사용 방법:
대화 상자에 Picture Control을 배치하고 type을 Bitmap으로 설정하면 됩니다.
CImage img;
ShowJpgGif(img,pdata,len,0,0);
HBITMAP h = img.Detach();
CStatic stc = GetDlgItem(IDC_STC_VERIFY);
stc.SetBitmap(h);

파일을 직접 불러오려면 아래 이걸 사용하십시오. 파일의 경로를 직접 지정하면 됩니다.
void ShowJpgGif(CImage& img,char* strPath, int x, int y)
{
	IStream *pStm; 
	int len = 0;
	FILE* f = fopen(strPath,"rb");
	if (f != NULL)
	{ 
		fseek(f,0,SEEK_END);
		len = ftell(f);
		rewind(f);

		HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, len); 
		LPVOID pvData = NULL; 
		if (hGlobal != NULL) 
		{ 
			pvData = GlobalLock(hGlobal);
			if (pvData != NULL) 
			{ 
				//file.Read(pvData, cb); 
				fread(pvData,1,len,f);
				fclose(f);
				GlobalUnlock(hGlobal); 
				CreateStreamOnHGlobal(hGlobal, TRUE, &pStm); 
				img.Load(pStm);
			}
		}
	}
}

사용 방법:
CImage img;
ShowJpgGif(img,"aa.png",0,0);
m_hBitmap = img.Detach();
m_imgStc = GetDlgItem(IDC_STC_IMAGE);
m_imgStc.SetBitmap(m_hBitmap);

좋은 웹페이지 즐겨찾기