Как я могу показать окно с двумя кнопками (например: "on"
, "off"
)?
Как я могу показать окно с двумя кнопками?
Ответ 1
Вероятно, вы хотите сделать что-то вроде этого:
result = MsgBox ("Yes or No?", vbYesNo, "Yes No Example")
Select Case result
Case vbYes
MsgBox("You chose Yes")
Case vbNo
MsgBox("You chose No")
End Select
Чтобы добавить значок:
result = MsgBox ("Yes or No?", vbYesNo + vbQuestion, "Yes No Example")
Другие параметры значков:
vbCritical or vbExclamation
Ответ 2
VBScript Messagebox довольно ограничен в отношении меток, которые вы можете применить к кнопкам, ваш выбор в значительной степени ограничен:
- OK
- Отмена
- Retry
- Прервать
- Игнорировать
- Да
- Нет
Итак, вам нужно будет создать свою собственную форму, если вы хотите "ON"/ "OFF"
Еще лучше, почему бы не перефразировать приглашение в поле, так что один из указанных выше вариантов работает.
Например:
Do you want the light on?
[Yes] [No]
И ради Бога не делать одно из этих монстров UI!
Switch setting? (Click "yes" for ON and "No" for Off)
[Yes] [No]
Ответ 3
Невозможно выполнить. MsgBox могут иметь только определенные значения.
Для этого вам придется катить свою форму.
Чтобы создать MsgBox с двумя параметрами (Да/Нет):
MsgBox("Some Text", vbYesNo)
Ответ 4
Помните - если вы установили кнопки в vbOkOnly
- оно будет всегда возвращать 1.
Таким образом, вы не можете решить, щелкнул ли пользователь кнопку закрытия или кнопку ОК. Вам просто нужно добавить параметр vbOk
.
Ответ 5
Это можно сделать, я нашел его в другом месте в Интернете... это не моя работа!:)
Option Explicit
' Import
Private Declare Function GetCurrentThreadId Lib "kernel32" () As Long
Private Declare Function SetDlgItemText Lib "user32" _
Alias "SetDlgItemTextA" _
(ByVal hDlg As Long, _
ByVal nIDDlgItem As Long, _
ByVal lpString As String) As Long
Private Declare Function SetWindowsHookEx Lib "user32" _
Alias "SetWindowsHookExA" _
(ByVal idHook As Long, _
ByVal lpfn As Long, _
ByVal hmod As Long, _
ByVal dwThreadId As Long) As Long
Private Declare Function UnhookWindowsHookEx Lib "user32" _
(ByVal hHook As Long) As Long
' Handle to the Hook procedure
Private hHook As Long
' Hook type
Private Const WH_CBT = 5
Private Const HCBT_ACTIVATE = 5
' Constants
Public Const IDOK = 1
Public Const IDCANCEL = 2
Public Const IDABORT = 3
Public Const IDRETRY = 4
Public Const IDIGNORE = 5
Public Const IDYES = 6
Public Const IDNO = 7
Public Sub MsgBoxSmile()
' Set Hook
hHook = SetWindowsHookEx(WH_CBT, _
AddressOf MsgBoxHookProc, _
0, _
GetCurrentThreadId)
' Run MessageBox
MsgBox "Smiling Message Box", vbYesNo, "Message Box Hooking"
End Sub
Private Function MsgBoxHookProc(ByVal lMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long
If lMsg = HCBT_ACTIVATE Then
SetDlgItemText wParam, IDYES, "Yes :-)"
SetDlgItemText wParam, IDNO, "No :-("
' Release the Hook
UnhookWindowsHookEx hHook
End If
MsgBoxHookProc = False
End Function
Ответ 6
Я сделал
msgbox "TEXT HERE",3,"TITLE HERE"
If Yes=true then
(result)
else
msgbox "Closing..."