初学VC,一直没有搞清VC里面要CALL BACK函数干什么,另外,我正在看关于多线程的书籍,可是看书上的代码看不懂,不知道VC该怎么学,请大虾们多多指教,不胜感激!

解决方案 »

  1.   

    Callback函数是回调函数,比如我们再用SDK开发时,消息处理就是回调函数,具体什么作用,也不太明白。好像是参数出栈入栈有区别
      

  2.   


      CALLBACK 是回调函数,以往的 DOS 系统只是由程序调用系统函数,而 Windows 系统则可以调用程序函数,如果你深入 Windows 系统原理,其实每个程序的窗口过程就是一个回调函数,每当有消息来时 Windows 调用应用程序的回调函数。所以这里是由系统调用程序的函数来进行的。 
     
      

  3.   


       具体做用? 假设我们要获得所有已打开的应用程序,我们调用 EnumWindows 这个函数, 那么怎么得到所有活动窗口的 Handle 呢? 以往的方法可以通过结构,指针传递,那么在 Windows 里 EnumWindows 的参数是BOOL EnumWindows( WNDENUMPROC lpEnumFunc, LPARAM lParam ); 
     
       第一个参数是一个函数,当 EnumWindows 每找到一个窗口, 就调用这个函数,并传递这个窗口的 Handle 。   你试试看:BOOL CALLBACK EnumWindowsProc( HWND hwnd, LPARAM lParam )
    {
          char   WinName[100];
          GetWindowText( hwnd, WinName, 100 );
          AfxMessageBox( WinName );
            
          return TRUE;
    }    你的程序里写好上面这个回调, 然后调用 
        EnumWindows( EnumWindowsProc, 0 );
      

  4.   

    原因是,除了你调用窗口函数,操作系统也要调用你的窗口函数.窗口函数设计为callback形式,才能开放出一个节口给操作系统调用
      

  5.   

    CALL BACK 是回调函数,这种函数一般不要你自己调用,而是系统在适当的时候自动调用的。