int CTextView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;// TODO: Add your specialized creation code hereCClientDC dc(this);
TEXTMETRIC tm;
dc.GetTextMetrics(&tm);
//CreateSolidCaret(tm.tmAveCharWidth/8,tm.tmHeight);
//ShowCaret();
CBitmap bm;
bm.LoadBitmap(IDB_BITMAP1);
CreateCaret(&bm);
ShowCaret();
return 0;
}
这是在窗口创建一个插入符,为什么用固定插入符CreateSolidCaret()可以在窗口显示插入符,而用位图却无法显示该位图插入符?

解决方案 »

  1.   

    CBitmap bm; 
    问题出在这里.你的是局部变量.当程序运行到}后,局部变量就被释放了.与其相关联的资源也被释放了.所以,你的图片资源也被释放了.肯定是看不到了
    CBitmap *bm或是CBitmap bm设置成成员变量;
      

  2.   

    但是TEXTMETRIC tm;也是局部变量。
    OnCreate()函数结束后,它也被析构,此时tm的成员变量也全部消失。为什么他却可以实现?请指点。。
      

  3.   

    除了那个问题之外,我觉得在ondraw中也应该重绘.
      

  4.   

    但是TEXTMETRIC tm;也是局部变量。 
    OnCreate()函数结束后,它也被析构,此时tm的成员变量也全部消失。为什么他却可以实现? 请指点。。
      

  5.   

    CBitmap bm; 
    问题出在这里.你的是局部变量.当程序运行到}后,局部变量就被释放了.与其相关联的资源也被释放了.所以,你的图片资源也被释放了.肯定是看不到了 
    CBitmap *bm或是CBitmap bm设置成成员变量;