void CScanCmd::OnScan(void)
{
ScanImage(theApp.m_nColorMode,theApp.m_nResolution);
Refresh();
UpdateBalance();
m_pDialog->RedrawText();
}例如如上的函数,想然他在所有语句运行结束以后才能被再次触发,请问怎么实现呢?

解决方案 »

  1.   

    设一个global标记,进函数时置true,所有调用的地方检查。(想in dos)
      

  2.   

    void CScanCmd::OnScan(void)
    {
    1:ScanImage(theApp.m_nColorMode,theApp.m_nResolution);
    2:Refresh();
    4:UpdateBalance();
    5:m_pDialog->RedrawText();
    }就是想让1,2,3,4,5所有语句运行完毕后才能再次运行OnScan()函数
      

  3.   

    void CScanCmd::OnScan(void)
    {
     static int flag=0;
     if(!flag++)
    {
     ScanImage(theApp.m_nColorMode,theApp.m_nResolution);
    Refresh();
    UpdateBalance();
    m_pDialog->RedrawText();
    flag--
    }
    }
      

  4.   

    void CScanCmd::OnScan(void)
    {
    static int i = 1;ScanImage(theApp.m_nColorMode,theApp.m_nResolution);
    Refresh();
    UpdateBalance();
    m_pDialog->RedrawText();if( i-- )
    {
    OnScan();
    }}
      

  5.   

    对啊这样设一个global标记,进函数时置true,然后检查所有调用的地方。
      

  6.   

    加个标记不就行了,运行之前判断一下标记是否为TURE,为TRUE的话就运行往下执行,返回之前再设置为TRUE,标记为FALSE的话直接返回,不再往下执行