VC++里在递归函数里调用SetTimer()为什么没用解决方法

VC++里在递归函数里调用SetTimer()为什么没用
我想把归并排序用mfc画出来,我是这么做的:
归并排序原本的代码是这样的:
void MergeSort(int a[],int p,int r)
{
void Merge(int a[],int p,int q,int r);//排序函数的声明
if(p<r)
{
int q=(p+r)/2;
MergeSort(a,p,q);
MergeSort(a,q+1,r);
Merge(a,p,q,r);
}
}
p,q,r都是数组下标,进行排序的函数是最后那个Merge,我现在想让程序每隔300ms排一次序并且重画一次,我就在Merge()函数后面加一个SetTimer(),然后在OnTimer函数里调用Invalidate()进行重画,画图的代码在OnDraw函数里,也就是下面这样
void MergeSort(int a[],int p,int r)
{
void Merge(int a[],int p,int q,int r);
if(p<r)
{
int q=(p+r)/2;
MergeSort(a,p,q);
MergeSort(a,q+1,r);
Merge(a,p,q,r);
SetTimer(0,300,NULL);
}
}
但是运行时根本没用啊,总是直接就把最终结果画出来了,根本不会出现动态的动画效果,也就是说等于没有SetTimer()这个函数,请问这是为什么?(新人,分数不太够,不好意思)
------解决思路----------------------
你要演示过程, 那么就需要把计算过程手动变慢, SetTimer后Sleep  1秒钟.  并且你的计算过程需要放到子线程中, 不能阻塞UI线程, 否则看不到效果.