CE下的DrawText,做滚动字幕的时候,绘了一会儿文字后不动了!

mcd511786450   2007-11-21 14:01 楼主
我在wince平台下使用DrawText函数,做滚动字幕,用一个变量start作为起始点,开始往下画,当计时器被激发的时候,start向上移动一点,在往下绘制。
但是,当start为负且负到一定大的时候(如-1000),就不动了,请各位大侠帮帮忙!谢谢,代码如下:
for(int i=startline;i         {
                if(rect.top<=123&&rect.top>=96)
                    memDC.SetTextColor(RGB(255,255,0));
                else if(rect.top<20)
                        memDC.SetTextColor(RGB(0,100,0));
                else if(rect.top<97)
                        memDC.SetTextColor(RGB(0,150,0));
                else
                        memDC.SetTextColor(RGB(0,250,0));

                memDC.DrawText(m_lyric.strLyric,&rect,DT_CENTER);
                rect.top+=26;//上移
                rect.bottom=rect.top+26;
        }  

回复评论 (14)

这种问题,楼主单步调试一下,就能知道错误出在什么地方了。
点赞  2007-11-21 14:18
麻烦 这位仁兄说一下吧
因为我在pc上是正常得啊!
是不是因为那个函数在ce下运行不正确啊!

如果能给出一定得解决办法,更好
调试通过,马上结帖,散分
点赞  2007-11-21 20:56
PC上正常关CE什么事啊,又不是一样的系统,你代码放LINUX上都编译不了。
点赞  2007-11-22 09:08
linux那是跨了很大的平台了
ce上,这几个函数都支持啊。
所以我就搞不清为什么不正确了,麻烦大侠们给点建议啊
点赞  2007-11-22 09:51
我在OpentCF里看过里有个控件可以作到滚动字幕的效果!
在这之前我们也想了个笨方法,时间控件让lable控件移动,见笑了~呵呵   
int i = 1;
         int x = 0;
         private void timer1_Tick(object sender, EventArgs e)
         {
               
                 Point point = new Point(x, 118);
                 if (x >240)
                 {
                  
                     i = i * (-1);
                    
                 }
                 if (x <-lblmessage.Width)
                 {
                  
                     i = i * (-1);
                 }
               
                 lblmessage.Location = point;
                 x = x + i;
点赞  2007-11-22 11:20
谢谢!
但是,我想知道,我的程序为什么不能运行啊?
点赞  2007-11-22 20:33
怎么没有人帮顶啊
点赞  2007-11-24 12:09
ding
点赞  2007-11-29 08:00
lz看看自己贴的代码和文字说明。
代码里连start这个你所描述的重要变量都没有出现。你想别人怎么给你解决。

话要说回来,这种问题也是自己慢慢跟代码就能找到原因的。
点赞  2007-11-29 09:07
是的,只有调试是解决问题的办法
点赞  2007-11-29 10:07
start是绘制字幕的区域的(rect结构),top值
我单步调试过了,但就是找不到原因,而且,也不是负到一定的程度就不动,而是绘几次后,就不动了
点赞  2007-11-30 17:04
很可能是内存耗光了,你自己看看
点赞  2007-11-30 17:30
基本上应该是忘记了释放 DC   releasedc()
点赞  2007-12-2 14:28
问题解决,散分!
原来,局部变量的DC也需要delete啊!!
点赞  2007-12-3 10:45
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复