Свой Msgbox со стандартным звуком

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Свой Msgbox со стандартным звуком

Сообщение Pantalone » 05.01.2006 (Чт) 9:33

Встал вопрос унификации иконок в программе, например чтобы восклицательный знак и на формах и на окнах сообщения Msgbox был одного вида. Учитывая что прога может использоваться на разных операционках и стандартные иконки там разные. Вижу два выхода:
1) Выдрать системную иконку восклицательного знака например и использовать ее в форме? Как ее выдрать?
2) Сделать свое окно диалога типа Msgbox и использовать там свою иконку. Но пропадет системный звук появления окна диалога, причем на восклицание или вопрос или критическую ошибку они разные у Msgbox, как тогда в свое окно эти звуки прикрутить? Субклассировать Msgbox не охота, поскольку в будущем планируется разработка скинов ко всем формам.

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 05.01.2006 (Чт) 9:34

2. beep

Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Сообщение Pantalone » 05.01.2006 (Чт) 9:48

Звуки разные могут быть, бипом тут не отделаешься.

Юстас
Бывалый
Бывалый
 
Сообщения: 200
Зарегистрирован: 24.10.2003 (Пт) 5:05

Сообщение Юстас » 05.01.2006 (Чт) 9:54

MessageBeep

Kostyan
Постоялец
Постоялец
 
Сообщения: 439
Зарегистрирован: 20.09.2002 (Пт) 4:14
Откуда: Россия, Уссурийск

Сообщение Kostyan » 05.01.2006 (Чт) 10:07

Этот код рисует на форме стандартные иконки, для каждой системы свои.
Код: Выделить всё
Private Const IDI_APPLICATION As Long = 32512&
Private Const IDI_ERROR As Long = 32513&
Private Const IDI_EXCLAMATION As Long = 32515&
Private Const IDI_INFORMATION As Long = 32516&
Private Const IDI_QUESTION As Long = 32514&
Private Const IDI_WINLOGO As Long = 32517

Private Declare Function DrawIcon Lib "user32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal hIcon As Long) As Long
Private Declare Function LoadIcon Lib "user32" Alias "LoadIconA" (ByVal hInstance As Long, ByVal lpIconName As Long) As Long

Private Sub Form_Load()
Dim hIcon As Long

Me.AutoRedraw = True

hIcon = LoadIcon(0, IDI_ERROR)
Call DrawIcon(Me.hdc, 50, 50, hIcon)
hIcon = LoadIcon(0, IDI_EXCLAMATION)
Call DrawIcon(Me.hdc, 100, 50, hIcon)
hIcon = LoadIcon(0, IDI_INFORMATION)
Call DrawIcon(Me.hdc, 150, 50, hIcon)
hIcon = LoadIcon(0, IDI_QUESTION)
Call DrawIcon(Me.hdc, 200, 50, hIcon)
hIcon = LoadIcon(0, IDI_APPLICATION)
Call DrawIcon(Me.hdc, 250, 50, hIcon)
hIcon = LoadIcon(0, IDI_WINLOGO)
Call DrawIcon(Me.hdc, 300, 50, hIcon)
End Sub
Нет ничего невозможного для человека с интеллектом.

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 05.01.2006 (Чт) 10:22

я стандартный и не имел в виде! :

Код: Выделить всё
Private Declare Function Beep Lib "kernel32" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long
Private Sub Form_Activate()
    'KPD-Team 1999
    'URL: http://www.allapi.net/
    'E-Mail: KPDTeam@Allapi.net
    Dim Cnt As Long
    For Cnt = 0 To 5000 Step 10
        'play a tone of 'Cnt' hertz, for 50 milliseconds
        Beep Cnt, 50
        Me.Caption = Cnt
        DoEvents
    Next Cnt
End Sub

Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Сообщение Pantalone » 05.01.2006 (Чт) 10:57

Kostyan
Спасибо, выручил!

Sirik
Шутник :)

Все же как воспроизвести системный звук для своего диалогового окна в соответствии с установленным звуком в звуковом оформлении?

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 05.01.2006 (Чт) 11:50

может и Шуник, но шутку не понял

Kostyan
Постоялец
Постоялец
 
Сообщения: 439
Зарегистрирован: 20.09.2002 (Пт) 4:14
Откуда: Россия, Уссурийск

Сообщение Kostyan » 05.01.2006 (Чт) 11:50

Pantalone писал(а):Все же как воспроизвести системный звук для своего диалогового окна в соответствии с установленным звуком в звуковом оформлении?


Код: Выделить всё
Private Const SND_ALIAS As Long = &H10000
Private Const SND_NODEFAULT As Long = &H2
Private Const SND_ASYNC As Long = &H1

Private Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" (ByVal lpszName As String, ByVal hModule As Long, ByVal dwFlags As Long) As Long

Private Sub Command1_Click()
Call PlaySound("SystemStart", 0, SND_ALIAS Or SND_NODEFAULT Or SND_ASYNC)
End Sub


Полный список системных звуков найдешь в реестре по адресу: HKEY_CURRENT_USER\AppEvents\EventLabels\
Нет ничего невозможного для человека с интеллектом.

Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Сообщение Pantalone » 05.01.2006 (Чт) 14:29

Не, должно быть по другому. А если звуковуха не установлена, проверять ее наличие и если нет через спикер бипать? Мне кажется должно быть какое-то другое решение. Буду копать дальше.

HotKitten
Дятил
Дятил
Аватара пользователя
 
Сообщения: 400
Зарегистрирован: 24.01.2005 (Пн) 21:48
Откуда: из дома

Сообщение HotKitten » 06.01.2006 (Пт) 2:22

Через спикер прикольнее
Код: Выделить всё
Private Declare Function Beep Lib "kernel32.dll" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long

Private Sub Beep()
Beep 1000, 2000
End Sub
Изображение

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 06.01.2006 (Пт) 3:47

Определи папку с Windows и грузи нужные звуки из Windows\Media
#define ROFL 0xDDDD

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 06.01.2006 (Пт) 11:44

Pantalone
Тебе же Юстас сказал MessageBeep ( Private Declare Function MessageBeep Lib "user32.dll" (ByVal wType As Long) As Long )
Если всё делать своими ручками, они скоро отвалятся !


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, Yandex-бот и гости: 17

    TopList  
cron