查了很多资料,都说DoModal()返回值为OK或CANCEL键的ID
其实,这种说法是错误的
MSDN是这样说明其返回值的
If successful, the value of the nRetCode parameter specified in the call to EndDialog; otherwise, -1.
如果操作成功,其返回值为由EndDialog指定的nRetCode的值,而此参数nRetCode的含义为关闭对话框所采用的方式
也就是说,在关闭此模态对话框时,其返回值为关闭对话框时所采用的方式
因此它只在对话框关闭时才返回相关参数值
默认对话框关闭方式有2种:OnOK(); OnCancel()
当使用OnOK()函数关闭对话框时,返回值为IDOK
当使用OnCancel()函数关闭对话框时,返回值为IDCANCEL
返回值与ID无关
比如一个按钮的ID为IDC_BUTTON1
在此按钮的处理函数中添加关闭对话框方式: OnOk()
则 点击此按钮时,对话框返回值为IDOK
除此两种默认关闭方式外,还可用EndDialog(int nRetCode)设定自定义的关闭方式
如下例子:
- void EndDialog(
- int nResult