subject_14444.htm

来自「一些关于vc的问答」· HTM 代码 · 共 42 行

HTM
42
字号
<p>
序号:14444 发表者:浪子 发表日期:2002-09-06 21:40:18
<br>主题:对话框中“贴”位图的问题
<br>内容:各位高手:我创建了一个基于对话框的应用程序。添加了WM_PAINT的消息,然后在它的实现函数中添加了如下代码:(放在最上面)<BR>&nbsp;&nbsp;&nbsp;&nbsp;CPaintDC dc(this);<BR>&nbsp;&nbsp;&nbsp;&nbsp;BITMAP bmp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;CDC cdc;<BR>&nbsp;&nbsp;&nbsp;&nbsp;CBitmap bitmap;<BR>&nbsp;&nbsp;&nbsp;&nbsp;bitmap.LoadBitmap(IDB_BITMAP1);<BR>&nbsp;&nbsp;&nbsp;&nbsp;cdc.CreateCompatibleDC(&dc);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cdc.SelectObject(&bitmap);<BR>&nbsp;&nbsp;&nbsp;&nbsp;cdc.BitBlt(0,0,bmp.bmWidth,bmp.bmHeight,&cdc,0,0,SRCCOPY);<BR>他在运行是出现一个警告:<BR>&nbsp;&nbsp;warning C4700: local variable 'bmp' used without having been initialized<BR>但对话框中并没有我添加的位图(IDB_BITMAP1)是什么原因,请高手指点。<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:海阔天空 回复日期:2002-09-06 22:25:29
<br>内容:在cdc.BitBlt(0,0,bmp.bmWidth,bmp.bmHeight,&cdc,0,0,SRCCOPY);之前加<BR>bitmap.GetBitmap(&bmp);<BR>然后将<BR>cdc.BitBlt(0,0,bmp.bmWidth,bmp.bmHeight,&cdc,0,0,SRCCOPY);<BR>改为<BR>dc.BitBlt(0,0,bmp.bmWidth,bmp.bmHeight,&cdc,0,0,SRCCOPY);<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:许金奎 回复日期:2002-09-06 22:54:27
<br>内容:right<BR>why bitmap.GetBitmap(&bmp);?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:浪子 回复日期:2002-09-07 18:47:08
<br>内容:to 海阔天空等朋友的指点:现在可以了。但我还有几处不太清楚,清高手指点:<BR>1。bitmap.GetBitmap(&bmp);是在初始化bmp吗?<BR>2。在我那段代码中:cdc与dc 有什么区别,换句话说,为什么把cdc 换成dc 就能够把位图<BR>显示在对话框中了呢?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:海阔天空 回复日期:2002-09-07 22:17:42
<br>内容:GetBitmap(&bmp)是初始化bmp;<BR><BR>dc.BitBlt(0,0,bmp.bmWidth,bmp.bmHeight,&cdc,0,0,SRCCOPY); <BR>是把cdc中的内容(图片)拷贝到dc中。也就是拷贝到对话框上(因为此时的dc指对话框的dc)<BR>而此时cdc中的内容是一副图片(IDB_BITMAP1)<BR>所以对话框上就能正常显示图片IDB_BITMAP1了。<BR>如果是<BR>cdc.BitBlt(0,0,bmp.bmWidth,bmp.bmHeight,&cdc,0,0,SRCCOPY); <BR>则是把cdc中的内容拷贝到cdc中。那还有什么意义!<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:浪子 回复日期:2002-09-08 08:48:07
<br>内容:to 海阔天空:谢谢你的解答。“是把cdc中的内容(图片)拷贝到dc”之前,“cdc.CreateCompatibleDC(&dc);”这句话是把内容(图片)创建到缓冲池(buffer)中吗?<BR>那他的参数&dc,是什么意思呢,就算是把内容(图片)创建到缓冲池(buffer)中,也要有内容(图片)的参数。否则,编译器怎么知道是把什么东西放到缓冲池(buffer)中?而且在<BR>cdc.CreateCompatibleDC(&dc);之前用了bitmap.LoadBitmap(IDB_BITMAP1);好象与cdc.CreateCompatibleDC(&dc);也看不出有什么联系,是怎么回事,请你解答。谢了。<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:海阔天空 回复日期:2002-09-10 21:24:01
<br>内容:cdc.CreateCompatibleDC(&dc);只是建立一个和dc相容的cdc,也就是说要想把cdc中的图象拷贝到dc中,cdc必须和dc相容。<BR>cdc.SelectObject(&bitmap); 才是真正把图片创建到缓冲池中。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>

⌨️ 快捷键说明

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