非模态对话方块

王朝百科·作者佚名  2010-01-04
窄屏简体版  字體:   |    |    |  超大  

模态对话方块(不包括系统模态对话方块)。允许使用者在对话方块与其他程式之间进行切换。但是,使用者不能切换到同一程式的另一个视窗,直到模态对话方块被清除为止。非模态对话方块允许使用者在对话方块与其他程式之间进行切换,又可以在对话方块与建立对话方块的视窗之间进行切换。因此,非模态对话方块与使用者程式常见的普通弹出式视窗可能更为相似。

当使用者觉得让对话方块保留片刻会更加方便时,使用非模态对话方块是合适的。例如,文书处理程式经常使用非模态对话方块来进行「Find」和「Change」操作。如果「Find」对话方块是模态的,那么使用者必须从功能表中选择「Find」,然後输入要寻找的字串,结束对话方块,传回到档案中,接著再重复整个程序来寻找同一字串的另一次出现。允许使用者在档案与对话方块之间进行切换则会方便得多。

您已经看到,模态对话方块是用DialogBox来建立的。只有在清除对话方块之後,函式才会传回值。在对话方块程序内使用EndDialog呼叫来终止对话方块,DialogBox传回的是该呼叫的第二个参数的值。非模态对话方块是使用CreateDialog来建立的,该函式所使用的参数与DialogBox相同。

hDlgModeless = CreateDialog ( hInstance, szTemplate,

hwndParent, DialogProc) ;

区别是CreateDialog函式立即传回对话方块的视窗代号,并通常将这个视窗代号存放到整体变数中。

尽管将DialogBox这一名字用於模态对话方块而CreateDialog用於非模态对话方块是随意的,但是您可以通过非模态对话方块与普通视窗类似这一点来记住这两个函式的区别。CreateDialog可以令人想起CreateWindow函式来,而後者建立的是普通视窗。

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航