⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 read.cgi-read=9995.htm

📁 mfc资料集合5
💻 HTM
字号:
<HTML><HEAD><TITLE>Re: showing a BMP on a dialog</TITLE>
</HEAD><BODY background="../fancyhome/back.gif" tppabs="http://www.codeguru.com/fancyhome/back.gif" bgcolor="#FFFFFF">
 <table WIDTH="100%"> <tr WIDTH="100%"> <td><table>
		<tr><td><img src="../mfc_sourcebook.jpg" tppabs="http://www.codeguru.com/mfc_sourcebook.jpg" 
		ALT="MFC Programmer's SourceBook" WIDTH="256" 
		HEIGHT="88"><td></tr>
		<tr><td valign="bottom"><font SIZE="+1" 
		color="#a0a0ff"><b>Discussion Board</b></font></td></tr>
		</table></td> <td width="40"></td>
		<td  align="right" valign="top"><A HREF="http://209.66.99.126/cgi/ads.cgi?advert=genitor"><IMG SRC="../banners/genitor.gif" tppabs="http://www.codeguru.com/banners/genitor.gif" HEIGHT=60 WIDTH=468 ALT="Genitor - award-winning Object Construction Suite for C/C++ development, documentation, and maintainance" BORDER=2></A><BR><SMALL><A HREF="http://209.66.99.126/cgi/ads.cgi?advert=genitor">Click here to get a trail copy of Genitor V3.1</A></SMALL><td> </tr> </table> <hr><P ALIGN=CENTER>[ <A HREF="#Responses">Read Responses</A> | <A HREF="#PostResponse">Post a New Response</A> | <A HREF="index.cgi.htm" tppabs="http://www.codeguru.com/mfc_bbs/index.cgi">Return to the Index</A> ]
<A HREF="read.cgi-read=9931.htm" tppabs="http://www.codeguru.com/mfc_bbs/read.cgi?read=9931">Previous in Thread</A><P ALIGN=CENTER><BIG><BIG><BIG><STRONG>Re: showing a BMP on a dialog</STRONG></BIG></BIG></BIG>
<P ALIGN=CENTER><EM>Posted by <STRONG><A HREF="mailto:bryce@mtf.co.nz">bryce burrows</A></STRONG> on <STRONG>4/21/98 2:14p.m.</STRONG>, in response to <A HREF="read.cgi-read=9931.htm" tppabs="http://www.codeguru.com/mfc_bbs/read.cgi?read=9931">Re: showing a BMP on a dialog</A>, posted by Fei-hong on 4/21/98 2:06a.m.</EM></P>
<!-- REMOTE_HOST: 203.97.56.130; REMOTE_ADDR: 203.97.56.130-->
<P>hi..all
<BR>here is what i am currently doing but nothing is appearing on my dialog
<BR>i feel i'm missing something realy simple but dont know what to do
<P>any suggestions?
<BR>Bryce

<P>void CBmpshowerDlg::OnOK() 
<BR>{
<BR>	pPal  = new CPalette;
<BR>	bool ok =	loadBMP(&quot;C:\\mrktscrn\\mrktlink.bmp&quot;,bitmap,pPal);
<BR>	pDc = GetDC();
<BR>	if (ok)
<BR>                     DrawBitmap(pDc,bitmap,pPal);
<BR>}
<P>/* ===========================================*/
<P>bool CBmpshowerDlg::loadBMP(LPCTSTR sBMPFile, CBitmap&amp; bitmap, CPalette *pPal )
<BR>{
<BR>	CFile file;
<BR>	if( !file.Open( sBMPFile, CFile::modeRead) )
<BR>		return FALSE;
<P>	BITMAPFILEHEADER bmfHeader;
<P>	// Read file header
<BR>	if (file.Read((LPSTR)&amp;bmfHeader, sizeof(bmfHeader)) != sizeof(bmfHeader))
<BR>		return FALSE;
<P>	// File type should be 'BM'
<BR>	if (bmfHeader.bfType != ((WORD) ('M' &lt;&lt; 8) | 'B'))
<BR>		return FALSE;
<P>	// Get length of the remainder of the file and allocate memory
<BR>	DWORD nPackedDIBLen = file.GetLength() - sizeof(BITMAPFILEHEADER);
<BR>	HGLOBAL hDIB = ::GlobalAlloc(GMEM_FIXED, nPackedDIBLen);
<BR>	if (hDIB == 0)
<BR>		return FALSE;
<P>	// Read the remainder of the bitmap file.
<BR>	if (file.ReadHuge((LPSTR)hDIB, nPackedDIBLen) != nPackedDIBLen )
<BR>	{
<BR>		::GlobalFree(hDIB);
<BR>		return FALSE;
<BR>	}
<P>	BITMAPINFOHEADER &amp;bmiHeader = *(LPBITMAPINFOHEADER)hDIB ;
<BR>	BITMAPINFO &amp;bmInfo = *(LPBITMAPINFO)hDIB ;
<P>	// If bmiHeader.biClrUsed is zero we have to infer the number
<BR>	// of colors from the number of bits used to specify it.
<BR>	int nColors = bmiHeader.biClrUsed ? bmiHeader.biClrUsed : 
<BR>						1 &lt;&lt; bmiHeader.biBitCount;
<P>	LPVOID lpDIBBits;
<BR>	if( bmInfo.bmiHeader.biBitCount &gt; 8 )
<BR>		lpDIBBits = (LPVOID)((LPDWORD)(bmInfo.bmiColors + bmInfo.bmiHeader.biClrUsed) + 
<BR>			((bmInfo.bmiHeader.biCompression == BI_BITFIELDS) ? 3 : 0));
<BR>	else
<BR>		lpDIBBits = (LPVOID)(bmInfo.bmiColors + nColors);
<P>	// Create the logical palette
<BR>	if( pPal != NULL )
<BR>	{
<BR>		// Create the palette
<BR>		if( nColors &lt;= 256 )
<BR>		{
<BR>			UINT nSize = sizeof(LOGPALETTE) + (sizeof(PALETTEENTRY) * nColors);
<BR>			LOGPALETTE *pLP = (LOGPALETTE *) new BYTE[nSize];
<P>			pLP-&gt;palVersion = 0x300;
<BR>			pLP-&gt;palNumEntries = nColors;
<P>			for( int i=0; i &lt; nColors; i++)
<BR>			{
<BR>				pLP-&gt;palPalEntry[i].peRed = bmInfo.bmiColors[i].rgbRed;
<BR>				pLP-&gt;palPalEntry[i].peGreen = bmInfo.bmiColors[i].rgbGreen;
<BR>				pLP-&gt;palPalEntry[i].peBlue = bmInfo.bmiColors[i].rgbBlue;
<BR>				pLP-&gt;palPalEntry[i].peFlags = 0;
<BR>			}
<P>			pPal-&gt;CreatePalette( pLP );
<P>			delete[] pLP;
<BR>		}
<BR>	}
<P>	CClientDC dc(NULL);
<BR>	CPalette* pOldPalette = NULL;
<BR>	if( pPal )
<BR>	{
<BR>		pOldPalette = dc.SelectPalette( pPal, FALSE );
<BR>		dc.RealizePalette();
<BR>	}
<P>	HBITMAP hBmp = CreateDIBitmap( dc.m_hDC,		// handle to device context 
<BR>				&amp;bmiHeader,	// pointer to bitmap size and format data 
<BR>				CBM_INIT,	// initialization flag 
<BR>				lpDIBBits,	// pointer to initialization data 
<BR>				&amp;bmInfo,	// pointer to bitmap color-format data 
<BR>				DIB_RGB_COLORS);		// color-data usage 
<BR>	bitmap.Attach( hBmp );
<P>	if( pOldPalette )
<BR>		dc.SelectPalette( pOldPalette, FALSE );
<P>	::GlobalFree(hDIB);
<BR>	return TRUE;
<BR>}
<P>void CBmpshowerDlg::DrawBitmap(CDC* pDC, CBitmap&amp; bitmap, CPalette *pPal )
<BR>{
<BR>	// Create a compatible memory DC
<BR>	CDC memDC;
<BR>	memDC.CreateCompatibleDC( pDC );
<BR>	memDC.SelectObject( &amp;bitmap );
<P>	// Select and realize the palette
<BR>	if( pPal != NULL &amp;&amp; pDC-&gt;GetDeviceCaps(RASTERCAPS) &amp; RC_PALETTE )
<BR>	{
<BR>		pDC-&gt;SelectPalette( pPal, FALSE );
<BR>		pDC-&gt;RealizePalette();
<BR>	}
<P>	BITMAP bm;
<BR>	bitmap.GetBitmap( &amp;bm );
<P>	pDC-&gt;BitBlt(50, 50, bm.bmWidth, bm.bmHeight, &amp;memDC, 0, 0,SRCCOPY);
<BR>	InvalidateRect(NULL);
<BR>}
<BR>
</P>
<A NAME="Responses"><HR></A><P ALIGN=CENTER><BIG><BIG><STRONG>Responses</STRONG></BIG></BIG>
<P><UL>(No responses to this message have been posted.)</UL></P>
<A NAME="PostResponse"><HR></A><P ALIGN=CENTER><BIG><BIG><STRONG>Post a New Response</STRONG></BIG></BIG>
<P><FORM METHOD=POST ACTION="http://www.codeguru.com/mfc_bbs/index.cgi?post">
<INPUT TYPE=HIDDEN NAME="followup" VALUE="9995">
<P><CENTER><TABLE><TR>
<TD ALIGN=RIGHT><P><STRONG>Your Name:</STRONG></TD><TD><INPUT TYPE=TEXT NAME="name" SIZE=40></TD></TR><TR>
<TD ALIGN=RIGHT><P><STRONG>E-Mail Address:</STRONG></TD><TD><INPUT TYPE=TEXT NAME="email" SIZE=40></TD></TR><TR>
<TD ALIGN=RIGHT><P><STRONG>Subject:</STRONG></TD><TD><INPUT TYPE=TEXT NAME="subject" SIZE=40 VALUE="Re: showing a BMP on a dialog"></TD></TR><TR>
<TD COLSPAN=2 ALIGN=CENTER><P><STRONG>Message:</STRONG><BR><TEXTAREA COLS=80 ROWS=15 NAME="body" WRAP=PHYSICAL>
</TEXTAREA></TD></TR><TR>
<TD COLSPAN=2 ALIGN=CENTER><HR WIDTH=50%><P><SMALL>If you'd like to include a link to another page with your message,<BR>please provide both the URL address and the title of the page:</SMALL></TD></TR><TR>
<TD ALIGN=RIGHT><P><STRONG>Optional Link URL:</STRONG></TD><TD><INPUT TYPE=TEXT NAME="url" SIZE=40 VALUE="http://"></TD></TR><TR>
<TD ALIGN=RIGHT><P><STRONG>Optional Link Title:</STRONG></TD><TD><INPUT TYPE=TEXT NAME="url_title" SIZE=40></TD></TR><TR>
<TD COLSPAN=2 ALIGN=CENTER><HR WIDTH=50%><P><SMALL>If you'd like to include an image (picture) with your message,<BR>please provide the URL address of the image file:</SMALL></TD></TR><TR>
<TD ALIGN=RIGHT><P><STRONG>Optional Image URL:</STRONG></TD><TD><INPUT TYPE=TEXT NAME="imageurl" SIZE=40 VALUE="http://"></TD></TR><TR>
<TD COLSPAN=2 ALIGN=CENTER><HR WIDTH=50%><P><SMALL>If you'd like e-mail notification of responses, please check this box:</SMALL> <INPUT TYPE=CHECKBOX NAME="wantnotice" CHECKED VALUE="yes"></TD></TR><TR>
<TH COLSPAN=2><HR WIDTH=50%><P><INPUT TYPE=SUBMIT NAME="Preview" VALUE="Preview Message"> <INPUT TYPE=SUBMIT NAME="Post" VALUE="Post Message"></TH></TR></TABLE></CENTER></P></FORM>
<HR><P ALIGN=CENTER><SMALL>The MFC Discussion Board is maintained with <STRONG><A HREF="http://awsd.com/scripts/webbbs/">WebBBS 2.24</A></STRONG>.</SMALL></P>
</BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -