为什么要使用回调函数,它的深层意义是什么?
请大家讨论讨论!

解决方案 »

  1.   

    严重同意楼上,
    有时候就是要用到回调,
    比如CListCtrl排序时的回调函数,各人对其list的数据排序会有不同的定义,所以CListCtrl提供回调函数,这样就方便多了。
      

  2.   

    回调函,即由用户自己编写,但由Windows调用的函数
      

  3.   

    回调函数,就是由你自己写的。你需要调用另外一个函数,而这个函数的其中一个参数,就是你的这个回调函数名。这样,系统在必要的时候,就会调用你写的回调函数,这样你就可以在回调函数里完成你要做的事。
    http://dev.csdn.net/develop/article/17/17432.shtm
    http://dev.csdn.net/develop/article/6/6535.shtm
    http://dev.csdn.net/develop/article/20/20778.shtm
      

  4.   

    http://community.csdn.net/Expert/topic/4011/4011027.xml?temp=.4705774
      

  5.   

    int APIENTRY WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, 
     LPSTR lpCmdLine, int nCmdShow )
    {
        DialogBox(hInstance,MAKEINTRESOURCE(IDD_DIALOG),NULL,(DLGPROC)MainDialogProc);
    hInst = hInstance;
        return 0;
    }==============
    BOOL CALLBACK MainDialogProc(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam)
    {
    HMENU hMenu;
    WORD Item = LOWORD(wParam);
    RECT rect;
    GetWindowRect(hDlg,&rect);
    int x = (GetSystemMetrics(SM_CXSCREEN) - (rect.right-rect.left))/2;
    int y = (GetSystemMetrics(SM_CYSCREEN) - (rect.bottom-rect.top))/2;
        switch(message)
        {
    case WM_INITDIALOG:
    hMenu = LoadMenu(hInst,MAKEINTRESOURCE(IDR_MENU));
    SetMenu(hDlg,hMenu);
    return TRUE;
    case WM_COMMAND:
    switch(Item){
    case ID_BT_OK:
    TCHAR szDN[50];
    TCHAR szIP[50];
    if(GetWindowText(GetDlgItem(hDlg,ID_DN),szDN,50) == 0)
    break; 
    else{
    // if(GetHostIPByAddr(szDN,szIP))
    if(GetHostIPByName(szDN,szIP)){
    SetWindowText(GetDlgItem(hDlg,ID_IP),szIP);
    }
    }
    break;
    case ID_BT_EXIT:
    EndDialog(hDlg,TRUE);
    return TRUE;
    case IDM_EVENT_BEGIN:
    hMutex = CreateMutex(NULL,TRUE,NULL);
    EventIO(hDlg);
    return TRUE;
    case IDM_EVENT_CLOSE:
    EventIOEnd();
    CloseHandle(hMutex);
    return TRUE;
    }
    break;
    case WM_CLOSE:
    EndDialog(hDlg, TRUE); 
    return TRUE;
        }
        return FALSE;
    }这里MainDialogProc就是回调函数
      

  6.   

    中断处理例程就是一种回调函数,这并不是微软独创的。在Unix/Linux下也存在类似概念的东西。主要是为了进行异步处理以及系统和程序间的交互。
      

  7.   

    回调函数是给系统用的 
    比如一个窗口有个函数BOOL CALLBACK MainDialogProc(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam)
    (就是那个回调函数)  你的程序里知道了那个函数名字  可是系统还要维护这个函数  所以就要告诉系统  这里有个回调函数麻烦你来一起处理   至于为什么要加个CALLBACK 前缀就不懂了  可能是看的清楚吧不知道讲错了没有
      

  8.   

    加CALLBACK前缀是约定参数顺序的