窗口函数要在最后一个case语句中调用DefWindowProc函数处理剩下的消息,但对话框函数却返回一个false给系统,来表示要系统处理剩下的消息,为什么会这样?对话框不也是一个WNDCLASS吗?

解决方案 »

  1.   

    且看msdn中的一段话:虽然对话框过程和一般的窗口过程相似,但它并没有调用DefWindowProc函数去处理那些没被处理的消息。没被处理的消息由对话框的窗口过程内部处理。
      

  2.   

    To: bcpl(林平之,感冒中..) 你说的“在它的窗口过程中调用你提供的对话框过程”,我认为不对。理由是:
    对话框过程是一个回调函数,不能由任何函数过程调用,只能由系统本身调用。所以说对话框过程并非由它的窗口过程中调用。
      

  3.   

    同意楼上的。对话框其实是由api函数INT_PTR DialogBox(
        HINSTANCE hInstance,
        LPCTSTR lpTemplate,
        HWND hWndParent,
        DLGPROC lpDialogFunc
    );
    调用出来的。DLGPROC lpDialogFunc是回调函数,不同于窗口函数。具体细节见msdn.