onpreparedc疑惑

stecdeng 2007-09-07 01:43:48
导入BMP资源IDB_GOLDWEAVE
CEx10aView::CEx10aView()
{
m_pdcMemory = new CDC;
m_pBitmap = new CBitmap;
}

CEx10aView::~CEx10aView()
{
// cleans up the memory device context and the bitmap
delete m_pdcMemory; // deselects bitmap
delete m_pBitmap;
}
void CEx10aView::OnDraw(CDC* pDC)
{
pDC->SetStretchBltMode(COLORONCOLOR);
pDC->StretchBlt(20, -20, m_sizeDest.cx, -m_sizeDest.cy,
m_pdcMemory, 0, 0,
m_sizeSource.cx, m_sizeSource.cy, SRCCOPY);

pDC->StretchBlt(350, -20, m_sizeSource.cx, -m_sizeSource.cy,
m_pdcMemory, 0, 0,
m_sizeSource.cx, m_sizeSource.cy, SRCCOPY);
}

void CEx10aView::OnInitialUpdate()
{
CScrollView::OnInitialUpdate();
CSize sizeTotal(800, 1050); // 8-by-10.5 inches
CSize sizeLine = CSize(sizeTotal.cx / 100, sizeTotal.cy / 100);
SetScrollSizes(MM_LOENGLISH, sizeTotal, sizeTotal, sizeLine);

BITMAP bm; // Windows BITMAP data structure; see Win32 help
if (m_pdcMemory->GetSafeHdc() == NULL) {
CClientDC dc(this);
OnPrepareDC(&dc); // necessary 去掉图片显示相同
m_pBitmap->LoadBitmap(IDB_GOLDWEAVE);
m_pdcMemory->CreateCompatibleDC(&dc);
m_pdcMemory->SelectObject(m_pBitmap);
m_pBitmap->GetObject(sizeof(bm), &bm);
m_sizeSource.cx = bm.bmWidth;
m_sizeSource.cy = bm.bmHeight;
m_sizeDest = m_sizeSource;
dc.DPtoLP(&m_sizeDest);
}
}

去OnPrepareDC(&dc); 掉图片显示相同
不去掉 则两图片在VIEW窗口中显示大小不一
究竟OnPrepareDC(&dc); 起了什么作用?
...全文
192 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
stecdeng 2007-09-10
  • 打赏
  • 举报
回复
inside vc 第4版的
应该很多人都看过的啊
onprepareDC没添加任何代码
jhs1982419 2007-09-08
  • 打赏
  • 举报
回复
OnPrepareDC是在哪儿定义的,具体实现什么功能.

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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