双缓存画图失败,求解!

wangsiyuanoo 2009-12-02 03:13:06
//问题1:
//左键按下后,画出来的图片是一片黑!!!
void CDrawTestDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
m_bLBDown = true;
Invalidate();

CDialog::OnLButtonDown(nFlags, point);
}

void CDrawTestDlg::OnPaint()
{
CPaintDC dc(this);
if ( m_bLBDown )
{
HBITMAP hChairBmpNew = (HBITMAP)LoadImage(AfxGetInstanceHandle(), "E:\\Games\\PlatForm\\OutPut\\PicData\\Table\\chair.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
if( NULL != hChairBmpNew )
{
m_dcMem.CreateCompatibleDC( &dc );
BITMAP bmChailrInfo;
GetObject( hChairBmpNew , sizeof(BITMAP), &bmChailrInfo );
CBitmap Bitmap;
Bitmap.CreateCompatibleBitmap(&dc, bmChailrInfo.bmWidth, bmChailrInfo.bmHeight);
CBitmap * pOldBmp = m_dcMem.SelectObject(&Bitmap);

dc.BitBlt(100, 100, bmChailrInfo.bmWidth, bmChailrInfo.bmHeight, &m_dcMem, 0, 0, SRCCOPY);

m_dcMem.SelectObject(pOldBmp);
DeleteObject(hChairBmpNew);
}
}
}

//问题2:
//如果再点击一下的画,程序就会崩溃!
BOOL CDC::Attach(HDC hDC)
{
ASSERT(m_hDC == NULL); //崩溃在这里!!!
ASSERT(m_hAttribDC == NULL); // only attach to an empty DC

if (hDC == NULL)
{
return FALSE;
}
// remember early to avoid leak
m_hDC = hDC;
CHandleMap* pMap = afxMapHDC(TRUE); // create map if not exist
ASSERT(pMap != NULL);
pMap->SetPermanent(m_hDC, this);

SetAttribDC(m_hDC); // Default to same as output
return TRUE;
}
...全文
80 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
用户 昵称 2009-12-02
  • 打赏
  • 举报
回复
微软不是有现成的例程吗?里面loadimage之后,出来的bitmap,被dc选中了,你好像没选中。
wangsiyuanoo 2009-12-02
  • 打赏
  • 举报
回复
解决了
将Bitmap.CreateCompatibleBitmap( &dc, bmChailrInfo.bmWidth, bmChailrInfo.bmHeight);
换成Bitmap.Attach(hChairBmpNew);
就可以了
但具体原因是为什么呢?
还不太懂!
用户 昵称 2009-12-02
  • 打赏
  • 举报
回复
第一个问题,俺想你load出来的image,应该被select到dc中。
fandh 2009-12-02
  • 打赏
  • 举报
回复
GetObject( hChairBmpNew , sizeof(BITMAP), &bmChailrInfo );
返回正确么?
wangsiyuanoo 2009-12-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jennyvenus 的回复:]
m_dcMem.CreateDC,重复执行了吧。

[/Quote]
恩,第二个问题确实是这样,已经解决了。
但第一个问题呢,为什么我画出来是一片黑。
用户 昵称 2009-12-02
  • 打赏
  • 举报
回复
m_dcMem.CreateDC,重复执行了吧。
20秋《计算机应用基础》练习2 在PowerPoint的页面设置中,能够设置_。 A:幻灯片页面的对齐方式 B:幻灯片的页脚 C:幻灯片的页眉 D:幻灯片编号的起始值 答案:D 最早设计计算机的目的是进行科学计算,但主要是用于___。 A:科研 B:军事 C:商业 D:管理 答案:B 在Excel中,假定一个单元格所存入的公式为"=13*2+7",则当该单元格处于非编辑状态时显示的内容为_。 A:13*2+7 北语20秋《计算机应用基础》练习2全文共8页,当前为第1页。B:=13*2+7 北语20秋《计算机应用基础》练习2全文共8页,当前为第1页。 C:33 D:=33 答案:C 在计算机中表示存储容量时,下列描述中正确的是___。 A:1KB=1024MB B:1KB=1000B C:1MB=1024KB D:1MB=1024GB 答案:C IPv4地址有_位二进制数组成。 A:16 B:32 C:64 D:128 答案:B 计算机的技术指标有多种,而最主要应该是___。 北语20秋《计算机应用基础》练习2全文共8页,当前为第2页。A:语言.外设和速度 北语20秋《计算机应用基础》练习2全文共8页,当前为第2页。 B:主频.字长和内存容量 C:外设.内存容量和体积 D:软件.速度和重量 答案:B 关于网页快照的说法不正确的是_。 A:"网页快照"是搜索引擎在收录网页时,备份保存在搜索引擎的服务器缓存里的内容 B:当检索到的网页被删除或链接失效时,即使使用网页快照也不能打开链接 C:网页快照中,关键字会用其他颜色显示(如红色或者黄色),因此通过网页快照可以快速定位关键词 D:由于网页快照以文本内容为主,因此网页快照的访问速度比一般的网页快 答案:B 数字音频采样和量化过程所用的主要硬件是:___。 A:数字编码器 B:数字解码器 北语20秋《计算机应用基础》练习2全文共8页,当前为第3页。C:模拟到数字的转换器(A/ D)转换器 北语20秋《计算机应用基础》练习2全文共8页,当前为第3页。 D:数字到模拟的转换器(D/A转换器) 答案:C 计算机的通用性使其可以求解不同的算术和逻辑运算,这主要取决于计算机的___。 A:高速运算 B:指令系统 C:可编程性 D:存储功能 答案:C 构成计算机物理实体的部件被称为___。 A:计算机系统 B:计算机硬件 C:计算机软件 D:计算机程序 答案:B 用来给电子工作表中的列标进行编号的是_。 北语20秋《计算机应用基础》练习2全文共8页,当前为第4页。A:数字 北语20秋《计算机应用基础》练习2全文共8页,当前为第4页。 B:字母 C:数字与字母混合 D:第一个为字母其余为数字 答案:B 在Windows中,当一个窗口已经最大化后,下列叙述中错误的是 。 A:该窗口可以被关闭 B:该窗口可以移动 C:该窗口可以最小化 D:该窗口可以还原 答案:B 以下说法中,错误的是_。 A:使用Windows"画图"可以给图像添加简单效果 B:使用Windows"录音机"可以给声音添加简单效果 C:使用Windows Media Player可以给视频添加简单效果 D:使用WinRAR可以对ZIP文件进行解压缩 答案:C 北语20秋《计算机应用基础》练习2全文共8页,当前为第5页。 北语20秋《计算机应用基础》练习2全文共8页,当前为第5页。 以下硬件设备中, 不是多媒体硬件系统必须包括的设备是_。 A:计算机最基本的硬件设备 B:CD-ROM C:音频输入、输出和处理设备 D:多媒体通信传输设备 答案:D 不可能在任务栏上的内容为 。 A:对话框窗口的图标 B:正在执行的应用程序窗口图标 C:已打开文档窗口的图标 D:语言栏对应图标 答案:A 计算机安全包括___。 A:操作安全 B:物理安全 C:病毒防护 北语20秋《计算机应用基础》练习2全文共8页,当前为第6页。D:以上皆是 北语20秋《计算机应用基础》练习2全文共8页,当前为第6页。 答案:D 下面不属于访问控制技术的是_。 A:强制访问控制 B:自主访问控制 C:自由访问控制 D:基于角色的访问控制 答案:C 下面关于系统更新说法正确的是_。 A:系统需要更新是因为操作系统存在着漏洞 B:系统更新后,可以不再受病毒的攻击 C:系统更新只能从微软网站下载补丁包 D:所有的更新应及时下载安装,否则系统会立即崩溃 答案:A 下列文件命名方式中不符合Windows2000命名规则的是___。 A:ReAdme.txt B:Adme.Bmp.txt 北语20秋《计算机应用基础》练习2全文共8页,当前为第7页。C:说明.txt 北语20秋《计算机应用基础》练习2全文共8页,当前为第7页。 D:re?dme.txt 答案:D 在幻灯片切换中,可以设置幻

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧