Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4255911
  • 博文数量: 1148
  • 博客积分: 25453
  • 博客等级: 上将
  • 技术积分: 11949
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-06 21:14
文章分类

全部博文(1148)

文章存档

2012年(15)

2011年(1078)

2010年(58)

分类: C/C++

2011-07-08 08:37:11

工程代码: page135.rar  

    创建图形插入符,可以利用CWnd类的另一个函数:CreateCaret来实现

    void CreateCaret(CBitmap * pBitmap)

    在使用这个函数之前,要先创建一个CBitmap对象,并利用CBitmap的成员函数初始化对象,之后,才能使用这个位图对象。

   
   1. 建立位图对象。
      我们可以New 一个,也可以 导入一个 bmp 位图图像
      这里我们导入一个 bit 位图图像




  1. /////////////////////////////////////////////////////////////////////////////
  2. // CTextView message handlers

  3. int CTextView::OnCreate(LPCREATESTRUCT lpCreateStruct)
  4. {
  5.     if (CView::OnCreate(lpCreateStruct) == -1)
  6.         return -1;
  7.     
  8.     // TODO: Add your specialized creation code here
  9.     CBitmap bitmap;
  10.     bitmap.LoadBitmap(IDB_BITMAP1);
  11.     CreateCaret(&bitmap);
  12.     ShowCaret();

  13.     return 0;
  14. }

  我们发现这里定义的bitmap对象是一个局部变量。当OnCreate函数执行之后,这个bitmap对象就要发生析构。通常,与资源相关联的对象,在其析构时都会把与之相关联的资源销毁。于是,我们就看不到位图插入符。解决的方法是:是将这个局位图对象修改为CTextView 类的成员变量。

  1. private:
  2.     CBitmap bitmap;

  1. /////////////////////////////////////////////////////////////////////////////
  2. // CTextView message handlers

  3. int CTextView::OnCreate(LPCREATESTRUCT lpCreateStruct)
  4. {
  5.     if (CView::OnCreate(lpCreateStruct) == -1)
  6.         return -1;
  7. //    CBitmap bitmap;
  8.     bitmap.LoadBitmap(IDB_BITMAP1);
  9.     CreateCaret(&bitmap);
  10.     ShowCaret();

  11.     return 0;
  12. }








阅读(2084) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~