不知道为啥,研究完网络编程后,我又对DC感兴趣了,昨天我又迷上了“VC实现滚动字幕”,于是昨晚就在网上找了很多类似的源码,但没有一个是我想要的,我试着直接获取整个桌面的DC,然后直接在这个DC句柄上操作,但是没有成功,一气之下关灯睡觉了。今天早上有课,下午没有,于是我就拿了整整一下午的时间来研究,誓要把它搞定。仔细分析了昨晚下的源码,原来高手们都不是直接在桌面DC上操作,而是先建内存DC,在内存DC上操作,然后再将其转换为内存位图,最后再用Bitblt将其Copy到桌面DC上,接下来就不停用TextOut改变文字位置,不停的Copy,这就达到了滚动的效果,这里我没有用Timer而是用了递归(说实话,Win32中的Timer我实在没搞懂,MFC还好说,直接WM_TIMER),不多说了,看代码吧!
BOOL Start(HDC hdc,HDC m_dcmemoryDC,char* szText,int len,LPSIZE s,int width1,LPRECT rect,HBRUSH m_hBrushBackground); //函数声明
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow) //程序入口
{
int widt