一个简单的关于WM_PAINT的有关问题

一个简单的关于WM_PAINT的问题
在WM_PAINT中:
HDC   hDC;
PAINTSTRUCT   ps;
hDC   =   BeginPaint(   hWnd,   &ps   );

//这里根据一个变量的值来决定输出

EndPaint(   hWnd,   &ps   );

建一按钮,单击改变变量的值,为什么显示没有变化呢?
难道要用InvalidateRect()或RedrawWindow()才行?这是为什么?

------解决方案--------------------
收到WM_PAINT消息没有?
------解决方案--------------------
仅改变变量的值不会触发WM_PAINT消息,WM_PAINT内部的代码不会执行,内容也不会自动更新
需要InvalidateRect()并UpdateWindow()
------解决方案--------------------
仅改变变量的值不会触发WM_PAINT消息,WM_PAINT内部的代码不会执行,内容也不会自动更新
需要InvalidateRect()并UpdateWindow(),补充:
InvalidateRect()会把WM_PAINT消息发送到程序消息队列,程序从消息队列中提取WM_PAINT消息,然后执行相应代码
------解决方案--------------------
InvalidateRect
RedrawWindow
UpdateWindow
都可以触发WM_PAINT消息