当动态的生成下一个CTabCtrl标签时,前一个动态生成的标签加载的位图消失,(说明,加载的位图没有通过CImageList,是画上去的)另外点击标签位图也会消失,我想可能发生重绘什么了,但不确定。现在初学vc不是太了解。如何使标签加载的位图不消失 呢,望高手指点。最好有些代码框架。

解决方案 »

  1.   

    就是在动态创建一个Tab标签的画上去的,创建完成后位图也能显示出来,就是一点击这个标签或在创建另一个动态标签的时候,前一个标签的位图消失。我现在也不太清楚为什么会消失。要重画,如何重画啊,我通过那一个消息函数进行重画啊
      

  2.   

    happyparrot:我在我的新类(继承了CTabCtrl)OnPaint重画了,不行啊,没什么反应啊,还是上述问题
      

  3.   

    新类是通过类向导添加的,就是继承了下CTabCtrl
      

  4.   

    应该在派生类的OnPaint中画
    你怎么画的
    看看代码
      

  5.   

    我在OnPaint中画了,但是当动态的生成一个标签时,OnPaint就被调用了,且一直陷入循环状态,导致位图不停的被重绘,标签就显示不出来了
      

  6.   

    那位图应该在什么时候加载,什么时候重绘啊,我在动态生成一个Tab标签马上调用画位图的函数,能看到效果,但是只要一点击标签这个位图就消失,如果再动态生成Tab标签,其他Tab标签位图也就消失,我在我自己写的类A(继承了CTabCtrl)重写OnPaint()函数,这个函数中重新加载已经生成的标签上消失的位图。问题就来了:当我动态生成标签时发现执行了tabForChat.InsertItem(chatSum,str);后就转到OnPaint()函数。不停的循环。而我的那些动态生成Tab标签(tabForChat.InsertItem(chatSum,str);)以后的代码和调用画位图的函数都没执行到。
      

  7.   

    所有绘图操作都应该放到OnPaint中这没有错
    但是我不明白你怎么可能引起死循环
    难道你在OnPaint中又调用OnPaint么?
      

  8.   

    本帖最后由 happyparrot 于 2010-05-14 12:50:16 编辑
      

  9.   

    问题一
    为什么会有一个drawACloseBtn(chatSum,pWinDC);函数
    绘图操作应该全部放到OnPaint中问题二
    为什么要使用WindowDC问题三
    OnPaint中怎么不使用CPaintDC
      

  10.   

    http://www.codeproject.com/KB/tabs/HighColorTab.aspx
      

  11.   

    xianglitian大侠:即使我动态生成标签的时候不加载位图,不调用drawACloseBtn(chatSum,pWinDC);在OnPaint()里绘图,可仍会不停的绘制。哎~~~~~~~~~~~~真快崩溃了。
    有哪位大侠能给我写个Demo啊,在每个TabCtrl标签上面显示一个位图,我不想用CImageList和CTabCtrl关联的那种,意思是在每个标签上硬绘一个图片,并且保证标签切换的时候图片不消失
    万分感激了!!
    发邮箱:[email protected]