关于VC++中Bitmap析构、变量作用域设定的有关问题

关于VC++中Bitmap析构、变量作用域设定的问题
菜鸟求教:
  我最近在看孙鑫的《VC++深入解析》,对于下面的问题向大家请教。
请看下面两个程序:
一:创建一个带位图的插入符 二:画一个填充位图的矩形
  Void CDdrawView::OnLButtonUp(UINT nFlags,CPoint point)
  {CBitmap bitmap;//正确
  bitmap.LoadBitmap(IDB_BITMAP1);
  CBrush brush(&bitmap);
  CClientDC dc(this);
  dc.FillRect(......)//具体就不写了,是个填充矩形的函数
  CView::OnLButtonUp(UINT nFlags,CPoint point)
  }

int CText_01caretView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;

// TODO: 在此添加您专用的创建代码
CBitmap bitmap; //错误!!
bitmap.LoadBitmapW (IDB_BITMAP1);
CreateCaret(&bitmap);
ShowCaret();
return 0;
}
现请教:为什么第一个程序中要把CBitmap bitmap的变量申明为VIEW类下的全局变量,而在第二个程序中却可以申明为局部变量呢?
  书上说是当OnCreate结束时,bitmap对象会发生析构,和对象相关的资源会丢失,所以 要申明为全局的,但是对于第二个程序来说,它的bitmap不也要析构吗?
  谢谢,菜鸟求教。或许各位达人要见笑了,但还是请赐予援手,谢谢!!

------解决方案--------------------
View类的OnCreate函数只在初始化视图的时候调用。
局部变量离开函数OnCreate函数就死亡了,而插入符的生存时间应该是永久的,因此这里不能用局部变量声明cbitmap。


而画矩形OnLButtonUp里面cbitmap也是局部变量,但是只是这里对矩形的生命周期没有做要求罢了。

------解决方案--------------------
探讨
View类的OnCreate函数只在初始化视图的时候调用。
局部变量离开函数OnCreate函数就死亡了,而插入符的生存时间应该是永久的,因此这里不能用局部变量声明cbitmap。


而画矩形OnLButtonUp里面cbitmap也是局部变量,但是只是这里对矩形的生命周期没有做要求罢了。