BeginPaint对应的是WM_PAINT消息,在这个消息的部分里面可以写显示代码,GetDC只是得到一个句柄,而具体的显示还需要另外写代码。所以这两个是不同的部分。

解决方案 »

  1.   

    这两个都不是显示用的函数,GetDC是取得指定设备的描述符,BeginPaint只是为开始描绘做准备
      

  2.   

    ???sayu_yangyou(萨虞.扬尤)
    BeginPaint对应的是WM_PAINT消息,在这个消息的部分里面可以写显示代码,GetDC只是得到一个句柄,而具体的显示还需要另外写代码。所以这两个是不同的部分。 "写显示代码"   -->   "另外写代码"   ??? 不同 ???
    GetDC == hdc    -->  BeginPaint != hdc    ??? 不同 ???
    upupup....
      

  3.   

    这个问题很重要, 理解不透, 窗口要么闪耀, 要么象遭了虫灾.当系统认为你的窗口的一部分或全部需要更新时, 回发WM_PAINT消息给你, 你收到此消息后:HDC hdc = BeginPaint(...);
    ...用hdc画你的窗口, 不要调用GetDC...
    EndPaint(...);BeginPaint和EndPaint须匹配, 只能用于响应WM_PAINT.
    关于GetDC:
    有些时候你需要画临时性的东西, 如按下鼠标拉一框, 就应用GetDC()获得的HDC
    在你找到感觉前,这样理解更容易一些:
    BeginPaint和EndPaint是系统强制性的, 你处于被动地位
    GetDC是自由的, 你出于主动地位.顺便提醒大家, 做VC程序一定把SDK弄明白, 不象VB, 多数东西都包好了, 拿来用就是.