Click here to Skip to main content
15,913,467 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
GeneralRe: Adding Text to DIB Pin
Christian Graus16-May-05 14:26
protectorChristian Graus16-May-05 14:26 
GeneralRe: Adding Text to DIB Pin
Naveen_mah16-May-05 20:56
Naveen_mah16-May-05 20:56 
GeneralRe: Adding Text to DIB Pin
Christian Graus17-May-05 12:51
protectorChristian Graus17-May-05 12:51 
GeneralRe: Adding Text to DIB Pin
Naveen_mah17-May-05 14:18
Naveen_mah17-May-05 14:18 
GeneralRe: Adding Text to DIB Pin
Christian Graus17-May-05 14:24
protectorChristian Graus17-May-05 14:24 
GeneralRe: Adding Text to DIB Pin
Naveen_mah17-May-05 18:49
Naveen_mah17-May-05 18:49 
GeneralRe: Adding Text to DIB Pin
Christian Graus17-May-05 18:51
protectorChristian Graus17-May-05 18:51 
GeneralRe: Adding Text to DIB Pin
Naveen_mah18-May-05 18:14
Naveen_mah18-May-05 18:14 
So what do u think is the best way to do this? As my watermark is dynamic and can be of any kind.

Below is the code I have simplified and pasted here, But I am not able to BitBlt bitmap and getting insuficient memory error...

Can anybody help me out ...where I have gone wrong?

My bitmap is 1 bit bitmap and is top down bitmap 2275x3300 (file size 928 KB)

<br />
void AddText(HWND hWnd)<br />
{<br />
	HDC hdc = GetDC(hWnd);	<br />
	///Just reading from file to simulate the way I get data.<br />
	FILE * fp = NULL;<br />
	fp = _wfopen(L"d:\\bmp.bmp",L"r+");<br />
	int width,height; <br />
	if (fp)<br />
	{<br />
		BITMAPFILEHEADER bmFileHeader;<br />
		BITMAPINFOHEADER bmInfoHeader;<br />
		PBYTE pBmData = NULL;<br />
		fread(&bmFileHeader,sizeof(BITMAPFILEHEADER),1,fp);<br />
		fread(&bmInfoHeader,sizeof(BITMAPINFOHEADER),1,fp);<br />
		BITMAPINFO*  pBmInfo;<br />
		int size;<br />
		<br />
		if (bmInfoHeader.biBitCount == 24)<br />
		{<br />
			size = sizeof(BITMAPINFOHEADER);<br />
		}<br />
		else //// Just hard coded for 2 colors (1 bit data)<br />
			size = sizeof(BITMAPINFOHEADER) + 2 * sizeof(RGBQUAD);<br />
<br />
		pBmInfo = (PBITMAPINFO)new BYTE[size];<br />
<br />
		fseek(fp,sizeof(BITMAPFILEHEADER),SEEK_SET);<br />
		fread(pBmInfo,size,1,fp);<br />
		pBmInfo->bmiHeader.biHeight*= -1;<br />
		width = pBmInfo->bmiHeader.biWidth;<br />
		height = pBmInfo->bmiHeader.biHeight;<br />
		<br />
	<br />
		pBmData = new BYTE[bmInfoHeader.biSizeImage];<br />
		fread(pBmData,1,bmInfoHeader.biSizeImage,fp);<br />
		fclose(fp);<br />
		<br />
		pBmInfo->bmiHeader.biClrImportant = 2;<br />
		pBmInfo->bmiHeader.biClrUsed = 2;<br />
<br />
		DWORD fdwInit = CBM_INIT;<br />
		//HBITMAP hBitmap = CreateDIBitmap(hdc,&bmInfoHeader,fdwInit,pBmData,pBmInfo,DIB_RGB_COLORS);<br />
		HBITMAP hBitmap = CreateBitmap(width,height,bmInfoHeader.biPlanes,bmInfoHeader.biBitCount,pBmData);<br />
		DWORD err = GetLastError();<br />
<br />
		BITMAP bitmap;  /// Just checking if I have got correct Data<br />
		GetObject(hBitmap,sizeof(BITMAP),&bitmap);<br />
<br />
		HDC TmpDC = CreateCompatibleDC(hdc);<br />
		BYTE *pbase;<br />
		HBITMAP TmpBmp=CreateDIBSection(TmpDC,<br />
							pBmInfo,DIB_PAL_COLORS,(void**)&pbase,0,0);<br />
		HGDIOBJ TmpObj=SelectObject(TmpDC,TmpBmp);<br />
		<br />
		HDC dcBmp=CreateCompatibleDC(TmpDC);<br />
		HGDIOBJ TmpObj2 = SelectObject(dcBmp,hBitmap);<br />
		int ret = BitBlt(TmpDC,0,0,width,height,dcBmp,0,0,SRCCOPY);<br />
		err = GetLastError();<br />
		/// Always get error 0x00000008 (Not enough storage is available to process this command)<br />
		<br />
		SelectObject(decBmp,TmpObj2);<br />
		DeleteDC(dcBmp);<br />
		TextOut(TmpDC,100,100,L"Watermark",lstrlen(L"Watermark"));<br />
		<br />
		DeleteObject(hBitmap);<br />
		hBitmap=TmpBmp;<br />
		DIBSECTION dib;<br />
		GetObject(hBitmap,sizeof(DIBSECTION),&dib);<br />
		/// Dont get any data in dib.dsBm.bmBits<br />
		<br />
<br />
		SelectObject(TmpDC,TmpObj);<br />
		DeleteDC(TmpDC);<br />
		DeleteDC(hdc);<br />
		delete []pBmData;<br />
		delete []pBmInfo;<br />
<br />
	}<br />
<br />
}<br />


Thanks
GeneralRe: Adding Text to DIB Pin
Christian Graus18-May-05 18:55
protectorChristian Graus18-May-05 18:55 
GeneralCreating a dialog based application... Pin
elvis890016-May-05 11:07
elvis890016-May-05 11:07 
GeneralRe: Creating a dialog based application... Pin
Ravi Bhavnani16-May-05 12:01
professionalRavi Bhavnani16-May-05 12:01 
GeneralRe: Creating a dialog based application... Pin
ucc80116-May-05 20:17
ucc80116-May-05 20:17 
Generalprint screen Pin
gobar16-May-05 10:59
gobar16-May-05 10:59 
GeneralRe: print screen Pin
jc0dex16-May-05 11:46
jc0dex16-May-05 11:46 
GeneralRe: print screen Pin
Ravi Bhavnani16-May-05 12:09
professionalRavi Bhavnani16-May-05 12:09 
GeneralRe: print screen Pin
ucc80116-May-05 20:24
ucc80116-May-05 20:24 
GeneralOk. 2 Dumbest questions. Pin
CherezZaboro16-May-05 9:25
CherezZaboro16-May-05 9:25 
GeneralRe: Ok. 2 Dumbest questions. Pin
James R. Twine16-May-05 10:52
James R. Twine16-May-05 10:52 
GeneralRe: Ok. 2 Dumbest questions. Pin
Ryan Binns16-May-05 17:56
Ryan Binns16-May-05 17:56 
GeneralFindFirstFile and CFileFind Pin
Anonymous16-May-05 9:07
Anonymous16-May-05 9:07 
GeneralRe: FindFirstFile and CFileFind Pin
Chris Losinger16-May-05 9:22
professionalChris Losinger16-May-05 9:22 
GeneralRe: FindFirstFile and CFileFind Pin
David Crow16-May-05 10:32
David Crow16-May-05 10:32 
GeneralRe: FindFirstFile and CFileFind Pin
Blake Miller17-May-05 5:20
Blake Miller17-May-05 5:20 
GeneralRe: FindFirstFile and CFileFind Pin
David Crow17-May-05 5:30
David Crow17-May-05 5:30 
GeneralTimestamp challenges Pin
rexpiper16-May-05 8:58
rexpiper16-May-05 8:58 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.