怎么写callback函数和它的触发事件?
请大家多指教!

解决方案 »

  1.   

    假设你要写窗口事件的回调函数,哪么就这样写LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
    int wmId, wmEvent;
    PAINTSTRUCT ps;
    HDC hdc; switch (message)
    {
    case WM_COMMAND:
    wmId    = LOWORD(wParam);
    wmEvent = HIWORD(wParam);
    // Parse the menu selections:
    switch (wmId)
    {
    case IDM_ABOUT:
    DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
    break;
    case IDM_EXIT:
    DestroyWindow(hWnd);
    break;
    default:
    return DefWindowProc(hWnd, message, wParam, lParam);
    }
    break;
    case WM_PAINT:
    hdc = BeginPaint(hWnd, &ps);
    // TODO: Add any drawing code here...
    EndPaint(hWnd, &ps);
    break;
    case WM_DESTROY:
    PostQuitMessage(0);
    break;
    default:
    return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
    }
      

  2.   

    B函数中可以用等待函数等待事件。如果等待的是一个异步操作事件,操作完成时,系统会触发这个事件;如果等待的是需要自己触发的事件,则需要在其它线程中调用SetEvent之类的函数来触发。
      

  3.   


    HANDLE WINAPI CreateEvent(
      __in          LPSECURITY_ATTRIBUTES lpEventAttributes,
      __in          BOOL bManualReset,
      __in          BOOL bInitialState,
      __in          LPCTSTR lpName
    );
    创建事件写一个死循环不停的
    DWORD WINAPI WaitForSingleObject(
      __in          HANDLE hHandle,
      __in          DWORD dwMilliseconds
    );
    等待事件即可.不需要回调函数.