2015-11-22 2 views
2

Я изучаю код в VBScript, и я создавал окно сообщения, когда меня поразила идея: могу ли я «смешивать и сопоставлять» кнопки в MsgBox, например, вместо vbYesNo, можете ли вы иметь vbYesCancelRetry или что-то ?Можете ли вы «смешивать и сопоставлять» между кнопками в VBScript MsgBox?

+1

Нет, вы можете использовать только предопределенные константы. (Хотя аргумент является битовой маской, вам разрешен только один член из диапазона перечисления типа кнопки) –

+0

Спасибо Alex :) –

ответ

3

Могу ли я смешивать и сочетать "кнопки в MsgBox, как, вместо того, чтобы vbYesNo, вы можете иметь vbYesCancelRetry или что-то?

На это легко можно ответить, просто попробовав его (подсказка: ответ «Нет»).

Значения MsgBox ожидает являются predefined constants:

 
Constant   Value Binary 
vbOKOnly   0  0000 
vbOKCancel   1  0001 
vbAbortRetryIgnore 2  0010 
vbYesNoCancel  3  0011 
vbYesNo    4  0100 
vbRetryCancel  5  0101 

Поскольку номера не все строгие силы два (*), их двоичное представление перекрывается. Например: vbAbortRetryIgnore делится немного с vbYesNoCancel, но рисует совершенно разные кнопки.

Импликация: вы не можете включать и выключать отдельные кнопки, кнопки входят только в предопределенные наборы. Константы используются для выбора одного из наборов.


(*) Если бы они были, они бы каждый адрес отдельного бита, в результате чего в такой схеме:

 
ButtonA 0 0000 
ButtonB 1 0001 
ButtonC 2 0010 
ButtonD 4 0100 
ButtonE 8 1000 

При таких обстоятельствах вы можете смешивать и сочетать. Увы, это не так, как MessageBox API function реализован в Windows. VBScript MsgBox() - это всего лишь тонкая оболочка вокруг вызова этой функции системы.

Смежные вопросы