文字滚屏 我在今日插件中,想实现文字的滚屏显示!也就是说,在一个rect中,我该如何实现滚屏显示的效果!!急求,在线等!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 滚屏的效果很好实现:在你的兼容dc中画图的时候改变你的贴图的x或者y轴的值就好了做一个时间控制,一切不就over了?如果实在不明白到网上下载一个屏幕保护的例子看下 你是说用双缓存,将显示的文字画在内存中,然后复制到屏幕上,在内存中,改变rect的位置?是这个意思吗?有没有具体的例子可以参考下,我从网上找了好久,没有找到合适的啊! void CZM485View::OnTimer(UINT_PTR nIDEvent){ // TODO: 在此添加消息处理程序代码和/或调用默认值//l m_nWidth += 5; CClientDC dc(this); TEXTMETRIC tm; dc.GetTextMetrics(&tm); CRect rect; rect.left = 100; rect.top = 20; rect.right = m_nWidth; rect.bottom = rect.top+tm.tmHeight; dc.SetTextColor(RGB(80,180,80)); dc.SetBkMode(TRANSPARENT); //将文本背景设为透明的 CString str; str.LoadString(IDS_STRROLL1); dc.DrawText(str,rect,DT_LEFT); //rect.top=150; //rect.bottom=rect.top+tm.tmHeight; //dc.DrawText(str,rect,DT_RIGHT); CSize sz = dc.GetTextExtent(str);//l if(m_nWidth>(sz.cx+120)) { m_nWidth = 100; } CView::OnTimer(nIDEvent);}这个是我自己做得可以实现滚动效果! 不过要先定义一个timer!在XXView::OnCreate中加SetTimer(1,100,NULL);m_nWidth 为VIEW的成员变量,初始化为100. 如果要很平滑的滚动,要怎么做呢?我每次移动两个像素,timer定位20毫秒,屏幕闪的非常厉害,cpu占用率非常高。那些显示滚动歌词的软件是怎么做到平滑滚动的呢? 双缓冲的方式在客户区移动不会产生闪烁的情况如果你闪了,肯定是双缓冲用的不对具体的例子,可以上vckbase上查查相关的代码 不知道在非mfc工程里,如何实现双缓存啊!! 双缓冲可以参照http://www.vckbase.com/document/viewdoc/?id=1612 MFC的我以前也做过啊,可不是MFC工程,是个wince的DLL啊!在这里如何使用双缓存呢? 各位高人,你们所说的都是MFC的工程,而我现在这个是非MFC的工程,所以…………在MFC下,如何实现双缓存啊!! 重载erasebkgnd,直接return TRUE;bitblt 其实非MFC和mfc道理都是一样的,只不过MFC对gdi的api封装了成CDC,和CBitmap等类 如何在CListCtrl里面放置CProgressCtrl win32模式开发在dialog上插入datagrid控件后,不能显示 再问个难点的问题~ 菜鸟提问,关于udp socket复用 请问在对话框程序中怎样使用CCommandLineInfo这个对象 高分(不够再加)求算法-变量历史状态统计 请问msdn有中文版吗?翻译水平如何?价格大约多少?在哪能买到? 各位大虾,如何才能用BCB在windows桌面创建快捷方式?急!!在线等候! vc封闭图形填充 在MFC中 怎么 声明这个 ZwCreateSection 函数呀? 该不该转行呢 瑞星杀毒软件界面!
在你的兼容dc中画图的时候改变你的贴图的x或者y轴的值就好了
做一个时间控制,一切不就over了?
如果实在不明白到网上下载一个屏幕保护的例子看下
void CZM485View::OnTimer(UINT_PTR nIDEvent)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值//l
m_nWidth += 5; CClientDC dc(this);
TEXTMETRIC tm;
dc.GetTextMetrics(&tm);
CRect rect;
rect.left = 100;
rect.top = 20;
rect.right = m_nWidth;
rect.bottom = rect.top+tm.tmHeight; dc.SetTextColor(RGB(80,180,80));
dc.SetBkMode(TRANSPARENT); //将文本背景设为透明的
CString str;
str.LoadString(IDS_STRROLL1);
dc.DrawText(str,rect,DT_LEFT);
//rect.top=150;
//rect.bottom=rect.top+tm.tmHeight;
//dc.DrawText(str,rect,DT_RIGHT); CSize sz = dc.GetTextExtent(str);//l
if(m_nWidth>(sz.cx+120))
{
m_nWidth = 100;
} CView::OnTimer(nIDEvent);
}这个是我自己做得可以实现滚动效果!
在XXView::OnCreate中加SetTimer(1,100,NULL);m_nWidth 为VIEW的成员变量,初始化为100.
如果你闪了,肯定是双缓冲用的不对
具体的例子,可以上vckbase上查查相关的代码
bitblt