【GDI】关于BitBlt和TransparentBlt2函数的有关问题

【GDI】关于BitBlt和TransparentBlt2函数的问题
最近在编制一个五子棋程序,使用C语言,不借助MFC,完全用WIN32 API和GDI来写,但是出现了一些问题。背景交代完毕,下一段。
程序中我首先创建了个窗口,然后在WM_PAINT响应中用BitBlt函数将棋盘图片画在了窗口上,然后把落子的操作放在WM_LBUTTONDOWN响应中,使用TransparentBlt2将黑白棋画在窗口上,但是如果鼠标乱晃两下,或者是鼠标移动到最小化等按钮上,或者是菜单等别的地方一点,棋子就突然消失了,但是棋盘还在!
因为我写了避免在同一个位置落两次子的代码,所以可以判断,消失棋子的地方不能再落子,也就是棋子还在!始终搞不明白是为什么。

我用如下方法,均失败:
1.在WM_PAINT响应中加入扫描棋盘棋子重新绘制一遍的代码(之前落的棋有记录),还是不行。
2.在落棋的代码中加入先TransparentBlt2把图画到棋盘上,再BitBlt加载图片,不行。。

求,问题所在以及解决方法!如需更详细的代码,我会发上来。新人第一次发帖,求赐教!
------解决方案--------------------
不能"WM_LBUTTONDOWN响应中,使用TransparentBlt2将黑白棋画在窗口上,"
所有绘制代码必须在paint中,否则窗口变化后棋子必然消失.
------解决方案--------------------
"那如何在WM_PAINT中写入响应鼠标点击而下棋呢?"

"响应鼠标点击" 只记录下点击位置(黑白方).不必画.
在WM_PAINT中加上 绘制 当前落子 的代码.