当前位置:C++技术网 > 资讯 > 模态对话框与非模态对话框的编程知识总结

模态对话框与非模态对话框的编程知识总结

更新时间:2015-06-22 23:22:03浏览次数:1+次

    模态对话框就是创建后,父窗口就不能操作了的窗口,非模态则可以继续操作父窗口。Messagebox函数创建的消息框就是典型的模态对话框。模态对话框用在不完成模态对话框的操作就不能继续操作的场合。
     模态对话框的创建是使用DialogBox或者DialogBoxParam函数,而创建非模态对话框使用CreateWindow。

    模态对话框默认创建完成后就是可见的,而非模态则默认是不可见的,除非指定了WS_VISIBLE风格来创建非模态对话框。模态对话框则无视这个标志。

    创建模态对话框失败则返回0,否则暂时不返回,等待结束模态对话框后才返回。返回值就是结束对话框中指定的返回值。此原理就实现了模态机制。使用EndDialog函数来终止模态对话框。不要使用EndDialog来销毁非模态对话框,而使用DestroyWindow来销毁模态对话框。销毁之后,非模态对话框句柄失效,再使用此句柄则出错,为了防止,应该向拥有者窗口通知对话框已被销毁。

    多数应用使用全局变量来保存对话框句柄,因此,当对话框销毁时应该设置全局变量为空,表示此对话框不再可用。

    关于这个话题,就说这么多,以后在窗口部分进行更多细致的讨论。