Visual C++的一段代码搞不懂求解释

说一下自己的理解。题目是孙鑫老是的文本输出的例子。
1:GetBkColor得到背景白色,然后SetTextColor(白色)把背景白色设置为文字颜色。跟着clr应该是赋值得到白色了吧,但是F5看的时候是黑色,就要原文字颜色。我这么理解应该错了
1 COLORREF clr=dc.SetTextColor(dc.GetBkColor());
//GetBkColor属于dc对象,改变dc中的背景值(白色)。然后SetTextColor用白色值设置了dc文字的颜色。
问题赋值给clr是什么?为什么是0(黑色)好像等号的左右两边没有任何关系。
2 dc.TextOut(m_ptOrigin.x,m_ptOrigin.y,m_strLine);//用背景色输出了文字,等于没看不到。
3 m_strLine=m_strLine.Left(m_strLine.GetLength()-1);//不用解释,理解。
4 dc.SetTextColor(clr);//这里这个函数用clr的0,把文字颜色设置为黑色。当么语句1应该是白色给了clr。
问题主要在语句1和4.

求帮忙,谢谢哪位大叔给个解释
http://msdn.microsoft.com/zh-cn/library/wf4k5sew.aspx这个上面的我还是没能看明白。不用给我地址了。

要看SetTextColor是如何定义的,它返回的应该是 COLORREF 类型的变量,而且返回的是dc中改变之前的TextColor。

这段代码,我记得好想实现的作用是字幕的覆盖吧

谁给解释一下1、4的语句,特别是1的语句什么意思。感觉赋值,和后面的调用颜色好像没有关系。

孙鑫视频里好多都是这样
1、是得到当前背景颜色(白色),然后设置为文字颜色(文字再输出就是白色了),settextcolor这个返回的是设置之前的文字颜色,并进行
保存,用孙鑫的话就是用完你还得给改回去
2、是把你当前显示的字用白色再显示一遍,这样一行字就都没了
3、是把你当前这个文字的长度减一,存到缓存区
4、是把你当前文字颜色改回到一开始的颜色,因为settextcolor的返回值是之前的颜色
我也在学这个视频:个人理解就是 假设现在文字是 黑色 ,背景是 白色 。clr = settextcolor(背景色);执行过后 clr = 黑色 文字等于 白色