Normalnie, przy wyświetlaniu MessageBoxa odtwarza się systemowy dźwięk, ale ja chciałbym się go pozbyć.
Jak to zrobić?
Użyj waveOutSetVolume żeby ściszyć dźwięk ;-)
Albo: MessageDlg
WaveOutSetVolume - owszem, ścisza dźwięk, ale nie ten MessageBoxa.
Ściszyłem, a teraz nie umiem przywrócić tego tak jak było :P
Mam dźwięk tylko na lewym kanale.
Co wpisać, żeby było tak jak wcześniej?
MessageDlg działa OK.
nie wiem czy pomoge, pisze z glowy... bylo jezcze cos takiego jak MessageBoxEx...
Sprawdziłem i MessageBoxEx także genetuje dzwięk tak jak MessageBox. Dlatego rozwiązaniem jest
właśnie użycie MessageDlg. Jeżeli trzeba zmienić tytuł okna, etykiety przycisków czy zablokować "X"
do zamykania można użyć funkcji CreateMessageDialog - poniżej przykład (sorry że znów kod daję :P)
var
Dlg : TForm;
begin
Dlg := CreateMessageDialog('Czy na pewno chcesz zamknąć program?',
mtConfirmation, [mbYes, mbNo]);
Dlg.Caption := Application.Title;
Dlg.BorderIcons := [];
Dlg.ActiveControl := TButton(Dlg.FindComponent('Yes'));
TButton(Dlg.FindComponent('Yes')).Caption := 'Tak';
TButton(Dlg.FindComponent('No')).Caption := 'Nie';
Dlg.ShowModal;
case Dlg.ModalResult of
mrYes : begin
Caption := 'Tak';
end;
mrNo : begin
Caption := 'NIE';
end;
end;
// ......
end;
Dzięki, zastosowałem MessageDlg, tylko że zamiast Tak/Nie jest Yes/No no ale trudno.
Jak naprawić ten ściszony dźwięk?
A czytałeś uważnie mój post? Możesz poprzez Dlg := CreateMessageDlg.... zmeinić później etykiety
dla przycisków, ewentualnie można przetłumaczyć źródła pliku consts.pas i wrzucić do katalogu Lib.
TButton(Dlg.FindComponent('Yes')).Caption := 'Tak';
TButton(Dlg.FindComponent('No')).Caption := 'Nie';