![]() |
Regler Setzen
ich hab mir ne PAGECONTROL gemacht mit 3 TABSHEETS.
in eines dieser TABSHEETS hab ich jetzt ne TRACKBAR gemacht, mit der ich die Lautstärke regle. Das funzt auch alles, nur will ich jetzt, das wenn ich auf TABSHEET 2 gehe, dort wo die trackbar ist, das der zeiger automatisch dorthin geht, wo das volume zur zeit ist. weil bei mir isser immer automatisch auf 0. SetMasterVolume(TTrackBar(Sender).Position); das hab ich in der trackbar, bei change. wie kann ich das jetzt machen, das er automatisch auf die position geht?? |
Re: Regler Setzen
GetMasterVolumen eventuell? :roll: Nur geraten, da du dich beharrlich über die Komponente ausschweigst, die du benutzt.
|
Re: Regler Setzen
hier der gesammte code
Delphi-Quellcode:
function GetVolumeControl(aMixer: HMixer; componentType, ctrlType: Longint;
var mxc: TMixerControl): Boolean; var mxl: TMixerLine; mxlc: TMixerLineControls; rc: Longint; begin Result := False; FillChar(mxl, SizeOf(TMixerLine), 0); mxl.cbStruct := SizeOf(TMixerLine); mxl.dwComponentType := componentType; {Obtain a line corresponding to the component type} rc := mixerGetLineInfo(aMixer, @mxl, MIXER_GETLINEINFOF_COMPONENTTYPE); if rc = MMSYSERR_NOERROR then begin with mxlc do begin cbStruct := SizeOf(TMixerLineControls); dwLineID := mxl.dwLineID; dwControlType := ctrlType; cControls := 1; cbmxctrl := SizeOf(TMixerLine); pamxctrl := @mxc; pamxctrl^.cbStruct := SizeOf(TMixerControl); end; mixerGetLineControls(aMixer, @mxlc, MIXER_GETLINECONTROLSF_ONEBYTYPE); rc := mixerGetLineControls(aMixer, @mxlc, MIXER_GETLINECONTROLSF_ONEBYTYPE); Result := rc = MMSYSERR_NOERROR; end; end; function SetVolumeControl(aMixer: HMixer; mxc: TMixerControl; volume: Longint): Boolean; var mxcd: TMixerControlDetails; vol: TMixerControlDetails_Unsigned; rc: MMRESULT; begin FillChar(mxcd, SizeOf(mxcd), 0); with mxcd do begin cbStruct := SizeOf(TMixerControlDetails); dwControlID := mxc.dwControlID; cbDetails := SizeOf(TMixerControlDetails_Unsigned); paDetails := @vol; cMultipleItems := 0; cChannels := 1; end; vol.dwValue := volume; rc := mixerSetControlDetails(aMixer, @mxcd, MIXER_SETCONTROLDETAILSF_VALUE); Result := rc = MMSYSERR_NOERROR; end; function InitMixer: HMixer; var Err: MMRESULT; begin Err := mixerOpen(@Result, 0, 0, 0, 0); if Err <> MMSYSERR_NOERROR then Result := 0; end; procedure SetMasterVolume(vol:integer); var MyMixerHandle: HMixer; MyVolCtrl: TMixerControl; begin { Windows benutzt einen Wertebereich von 0-65536 } vol:=vol*65536 div 100; MyMixerHandle := InitMixer; if MyMixerHandle <> 0 then try FillChar(MyVolCtrl, SizeOf(MyVolCtrl), 0); if GetVolumeControl(MyMixerHandle, MIXERLINE_COMPONENTTYPE_DST_SPEAKERS, MIXERCONTROL_CONTROLTYPE_VOLUME, MyVolCtrl) then begin { Der letzte parameter ist die Lautstärke } SetVolumeControl(MyMixerHandle, MyVolCtrl, vol ) end; finally mixerClose(MyMixerHandle); end; end; procedure TForm1.TrackBar2Change(Sender: TObject); begin SetMasterVolume(TTrackBar(Sender).Position); end; |
Re: Regler Setzen
Schön, jetzt hast du mir gepostet, wie du die Lautstärke setzt, aber das war doch wohl nicht deine Frage oder?
Ich hatte eben nur die Vermutung geäußert, dass die Komponente oder Klasse eben auch das Gegenstück zu SetMasterVolume kennt und das wäre eben GetmasterVolumen. |
Re: Regler Setzen
jo eben, so kann ich das volumen setzen
und die frage ist jetzt, ich stells mal so also ich hab nen button wenn ich den klicke soll die trackbar jetzt auf die position der derzeitigen lautstärke gehen |
Re: Regler Setzen
Luckie sagt doch die ganze Zeit, dass du dafür die vermutl. vorhandene Funktion "GetMasterVolume" brauchst...
Chris |
Re: Regler Setzen
wenn ich wüsste was das GetMasterVolume ist würd ichs ja verwenden
aber ich habe keine Funktion die so heisst |
Re: Regler Setzen
Wo hast du denn SetMasterVolumen her?
|
Re: Regler Setzen
Wo kann ich denn dieses SetMasterVolumen und GetMasterVolumen herbekommen???
|
Re: Regler Setzen
@pmc: Das scheinen irgendwelche Funktionen zu sein die er irgendwo gefunden hat.
Aber kuck dir mal das Datum meines letzten Postings an und da es sich seit dem nicht wieder gerührt hat... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz