Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| KGF_dll - nouvelles versions | |
|
+12JL35 Oscaribout bignono Pedro pascal10000 silverman Jicehel papydall Minibug Marc Yannick Klaus 16 participants | |
Auteur | Message |
---|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Sam 9 Déc 2017 - 12:46 | |
| Nouvelle version: KGF.dll V8.09 du 09/12/2017Nouveautés: - Novel objet: MasterVolume - Nouvelles fonctions: CreateMasterVolume, DeleteMasterVolume - Nouvelles fonctions: SetMasterMute, GetMasterMute - Fonctions réécrites: SetMasterVolume, GetMasterVolumeModules modifiés: KGF.dllLa doc et les sources sont à jour. C'est une réécriture conplète des deux fonctions existantes, encapsulées maintenant dans un objet spécifique MasterVolume. Il convient donc de créer une fois l'objet en début de programme. Les autres fonctions peuvent alors être utilisées à volonté. Pour finir, avant de sortir du programme, il faut supprimer l'objet (dans l'évènement ON_CLOSE de la form 0, de préférence). Cet objet est maintenant bi-directionnel. Il peut donc commander les valeurs du mixeur (niveau du volume principal et/ou l'état de l'indicateur actif/muet), mais peut également recevoir les changements d'état du mixeur si l'utilisateur utilise les contrôles directement dans la fenêtre du mixeur. Le programme peut alors ajuster ses propres contrôles. Pour ce faire, on USER_EVENT est généré pour chaque changement des valeurs du mixeur. Il est alors de la responsabilité du programme d'utiliser les informations retournées par le USER_EVENT pour mettre à jour ses propres informations. Les fonctions ont la syntaxe suivante: - Code:
-
' nouvelles fonctions: res% = dll_call0("CreateMasterVolume") res% = dll_call0("DeleteMasterVolume") mute% = dll_call0("GetMasterMute") res% = dll_call1("SetMasterMute",mute%) ' fonctions réécrites, mais interface inchangé: volume% = dll_call0("GetMasterVolume") : ' retourne une valeur entre 0 et 65535 res% = dll_call1("SetMasterVolume",volume%) : impose cette valeur comme volume principal Informations retournées par le USER_EVENT:USER_EVENT_WPARAM = identifiant de l'origine de l'évènement hex("06010000") signifie: valeur de l'indicateur "muet" ==> WPARAM=1 si muet, et 0 sinon hex("06020000") signifie: valeur du "volume" ==> WPARAM=0...65535 USER_EVENT_LPARAM = valeur en fonction du code de USER_EVENT_WPARAM | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Dim 10 Déc 2017 - 17:11 | |
| Nouvelle version: KGF.dll V8.10 du 10/12/2017Nouveautés: - Novel objet: Scope - Nouvelle fonction: AutoUpdateScopeModules modifiés: KGF.dll KGF.chmLa doc et les sources sont à jour. Cet objet, entièrement conçu et réalisé par moi sans le concours d"un module extérieur, représente l'écran d'un oscilloscope à 4 canaux. On peut charger les valeurs manuellement et générer le tracé pas à pas, ou on peut attacher l'objet en tant que tel et ses canaux individuellement à l'objet AutoUpdater, de sorte à avoir un tracé automatique à partir du contenu de 1 à 4 variables Panoramic de type entier. Bien entendu, l'objet AutoUpdater peut gérer plusieurs de ces objets Scope, d'ailleurs simultanément avec les objets VuMeter. Voici un programme de démo, intégré également dans la documentation. On peut créer un objet Scope. Il sera alors créé par le programme de démo avec 4 canaux. Le bouton "Tracer" permet de générer une étape d'affichage, avec des valeurs générées aléatoirement. Des clics successifs sur ce bouton produisent progressivement le diagramme de l'oscilloscope. On peut également varier la distance de défilement. Plus oetit=plus serré, plsu grand=effet loupe. On peut aussin pour chaque canal, varier la taille totale en affichage, ainsi que son décalage vertical. Tel quel, les 4 canaux sont affichés sur une hauteur de 60 pixels, avec un décalage de 80 pixels les uns par rapport aux autres. Mais des scrollbars permettent de jouer avec cette représentation. Puis, finalement, on peut démarrer l'automatisation en cliquant sur "Start". Le tracé est alors généré automatiquement par l'objet AutoUpdater, jusqu'à ce que l'on clique sur "Stop". Chaque canal a sa largeur de trait spécifique (défaut: 3 pixels). Ainsi, les tracés montrent 4 tracés d'épaisseurs différentes. Ah, j'oubliais: dans le code du programme de démo, l'automarisation du canal 3 est désactvé. Il apparaît donc comme une simple ligne horizontale... Pour finir, voici le code: - Code:
-
' test_scope.bas
label CreerScope, SupprimerScope, Tracer, change label changeW, changeD, StartAuto, StopAuto, tick
dim res%, Scope%, i%, v%, M1% M1% = 0 - 1
' message "Coder d'abord un bouton pour autoupdate des 4 traces !" ' terminate
dll_on "KGF.dll"
width 0,1000 caption 0,"Oscilloscope 4 canaux" button 1 : top 1,2 : left 1,2 : caption 1,"Créer" : on_click 1,CreerScope button 2 : top 2,2 : left 2,left(1)+width(1) : caption 2,"Supprimer" : on_click 2,SupprimerScope button 3 : top 3,2 : left 3,left(2)+width(2) : caption 3,"Tracer" : on_click 3,Tracer
timer 9 : timer_off 9 : timer_interval 9,400 : on_timer 9,tick
alpha 11 : top 11,30 : left 11,440 : caption 11,"Distance de défilement:" scroll_bar 12 : top 12,50 : left 12,440 : width 12,200 min 12,5 : max 12,100 : position 12,20 : on_change 12,change alpha 21 : top 21,90 : left 21,440 : caption 21,"Largeurs des traces:" alpha 22 : top 22,110 : left 22,420 : caption 22,"1" alpha 23 : top 23,130 : left 23,420 : caption 23,"2" alpha 24 : top 24,150 : left 24,420 : caption 24,"3" alpha 25 : top 25,170 : left 25,420 : caption 25,"4" scroll_bar 26 : top 26,110 : left 26,440 : width 26,200 min 26,5 : max 26,300 : position 26,60 : on_change 26,changeW scroll_bar 27 : top 27,130 : left 27,440: width 27,200 min 27,5 : max 27,300 : position 27,60 : on_change 27,changeW scroll_bar 28 : top 28,150 : left 28,440 : width 28,200 min 28,5 : max 28,300 : position 28,60 : on_change 28,changeW scroll_bar 29 : top 29,170 : left 29,440 : width 29,200 min 29,5 : max 29,300 : position 29,60 : on_change 29,changeW alpha 31 : top 31,90 : left 31,680 : caption 31,"Décalage des traces:" alpha 32 : top 32,110 : left 32,660 : caption 32,"1" alpha 33 : top 33,130 : left 33,660 : caption 33,"2" alpha 34 : top 34,150 : left 34,660 : caption 34,"3" alpha 35 : top 35,170 : left 35,660 : caption 35,"4" scroll_bar 36 : top 36,110 : left 36,680 : width 36,200 min 36,5 : max 36,300 : position 36,0 : on_change 36,changeD scroll_bar 37 : top 37,130 : left 37,680: width 37,200 min 37,5 : max 37,300 : position 37,80 : on_change 37,changeD scroll_bar 38 : top 38,150 : left 38,680 : width 38,200 min 38,5 : max 38,300 : position 38,160 : on_change 38,changeD scroll_bar 39 : top 39,170 : left 39,680 : width 39,200 min 39,5 : max 39,300 : position 39,240 : on_change 39,changeD
alpha 40 : top 40,220 : left 40,440 : caption 40,"Automatisation:" button 41 : top 41,240 : left 41,440 : caption 41,"Start" : on_click 41,StartAuto button 42 : top 42,240 : left 42,540 : caption 42,"Stop" : on_click 42,StopAuto
inactive 2 inactive 3 inactive 12 inactive 26 inactive 27 inactive 28 inactive 29 inactive 36 inactive 37 inactive 38 inactive 39 inactive 41 inactive 42
res% = dll_call1("CreateAutoUpdater",1000) res% = dll_call1("ManageAutoUpdater",0) end
CreerScope: Scope% = dll_call1("CreateScope",handle(0)) res% = dll_call5("LocateScope",Scope%,10,30,400,300) res% = dll_call2("SetScopeTraceCount",Scope%,4) res% = dll_call5("SetScopeTraceColor",Scope%,1,255,0,0) res% = dll_call5("SetScopeTraceColor",Scope%,2,0,0,255) res% = dll_call5("SetScopeTraceColor",Scope%,3,255,255,0) res% = dll_call5("SetScopeTraceColor",Scope%,4,0,255,255) res% = dll_call2("SetScopeScrollWidth",Scope%,position(12)) res% = dll_call6("SetScopeScaling",Scope%,1,M1%,M1%,position(26),position(36)) res% = dll_call6("SetScopeScaling",Scope%,2,M1%,M1%,position(28),position(37)) res% = dll_call6("SetScopeScaling",Scope%,3,M1%,M1%,position(28),position(38)) res% = dll_call6("SetScopeScaling",Scope%,4,M1%,M1%,position(29),position(39)) ' res% = dll_call3("SetScopeTraceWidth",Scope%,1,3) : ' <=== largeur de 3 par défaut ! res% = dll_call3("SetScopeTraceWidth",Scope%,2,1) res% = dll_call3("SetScopeTraceWidth",Scope%,3,5) res% = dll_call3("SetScopeTraceWidth",Scope%,4,10) res% = dll_call3("AutoUpdateScope",Scope%,1,adr(v%)) res% = dll_call3("AutoUpdateScope",Scope%,2,adr(v%)) ' res% = dll_call3("AutoUpdateScope",Scope%,3,adr(v%)) : ' <=== ne pas automatiser cette ligne ! res% = dll_call3("AutoUpdateScope",Scope%,4,adr(v%)) res% = dll_call3("SetScopeTraceWidth",Scope%,4,adr(v%))
inactive 1 active 2 active 3 active 12 active 26 active 27 active 28 active 29 active 36 active 37 active 38 active 39 active 41 active 42 return SupprimerScope: Scope% = dll_call1("DeleteScope",Scope%) active 1 inactive 2 inactive 3 inactive 12 inactive 26 inactive 27 inactive 28 inactive 29 inactive 36 inactive 37 inactive 38 inactive 39 inactive 41 inactive 42 return Tracer: for i%=1 to 4 v% = int(rnd(300)) ' v% = i%*60 : ' <======= pour tracer une ligne droite res% = dll_call3("AddValueToScopeTrace",Scope%,i%,v%) next i% res% = dll_call1("PerformScopeStep",Scope%) return change: res% = dll_call2("SetScrollWidth",Scope%,position(12)) return changeW: if number_change=26 then res% = dll_call6("SetScopeScaling",Scope%,1,M1%,M1%,position(26),M1%) if number_change=27 then res% = dll_call6("SetScopeScaling",Scope%,2,M1%,M1%,position(27),M1%) if number_change=28 then res% = dll_call6("SetScopeScaling",Scope%,3,M1%,M1%,position(28),M1%) if number_change=29 then res% = dll_call6("SetScopeScaling",Scope%,4,M1%,M1%,position(29),M1%) return
changeD:
if number_change=36 then res% = dll_call6("SetScopeScaling",Scope%,1,M1%,M1%,M1%,position(36)) if number_change=37 then res% = dll_call6("SetScopeScaling",Scope%,2,M1%,M1%,M1%,position(37)) if number_change=38 then res% = dll_call6("SetScopeScaling",Scope%,3,M1%,M1%,M1%,position(38)) if number_change=39 then res% = dll_call6("SetScopeScaling",Scope%,4,M1%,M1%,M1%,position(39)) return StartAuto: timer_on 9 res% = dll_call1("ManageAutoUpdater",1) return StopAuto: timer_off 9 res% = dll_call1("ManageAutoUpdater",0) return
Tick: v% = int(rnd(300)) return | |
| | | pascal10000
Nombre de messages : 812 Localisation : Troyes Date d'inscription : 05/02/2011
| Sujet: Re: KGF_dll - nouvelles versions Dim 10 Déc 2017 - 21:22 | |
| brs klaus a ta demo pour la nouvelle version de kgf il y a une erreur des qu'on veut utilisé distance de défilement
line 145 erreur dans la fonction | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Dim 10 Déc 2017 - 21:56 | |
| Oups... le nom de la fonction a changé. Remplace la ligne par: - Code:
-
res% = dll_call2("SetScopeScrollWidth",Scope%,position(12)) | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Dim 10 Déc 2017 - 23:48 | |
| J'ai testé aussi. Pas d'utilité pour l'instant mais peut être plus tard pour un débogage par exemple avec des retours de valeurs... En tout cas voila un objet de plus dans KGF. Bravo Klaus ! | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 12 Déc 2017 - 14:47 | |
| Nouvelle version: KGF.dll V8.11 du 12/12/2017Nouveautés: - Novel objet: MarqueeModules modifiés: KGF.dll KGF.chmLa doc et les sources sont à jour. Ce nouvel objet, purement visuel, permet de créer un effet similaire àcelui d'un élément Marquee HTML: une forme colorée sur laquelle défile un texte. Jouez avec le programme de démo qui permet de modifier toutes les (nombreuses) options de cet objet: - Code:
-
' test-Marquee.bas
label close0, CreerMarquee, SupprimerMarquee, DemarrerMarquee, ArreterMarquee label ChangerDirection, ChargerImage, ChargerTexte, ChangerPolice, ChangerAttributs label ChangerDelta, ChangerForme, ChangerFond, ChangerVitesse
dim res%, MQ%, f$, i%
dll_on "KGF.dll"
width 0,1200 caption 0,"Test Marquee" button 1 : top 1,2 : left 1,2 : caption 1,"Créer" : on_click 1,CreerMarquee hint 1,"Créer un nouvel objet Marquee" button 2 : top 2,2 : left 2,left(1)+width(1) : caption 2,"Supprimer" : on_click 2,SupprimerMarquee hint 2,"Supprimer le Marquee existant" button 3 : top 3,2 : left 3,left(2)+width(2) : caption 3,"Démarrer" : on_click 3,DemarrerMarquee hint 3,"Lancer le défilement du texte" button 4 : top 4,2 : left 4,left(3)+width(3) : caption 4,"Arrêter" : on_click 4,ArreterMarquee hint 4,"Arrêter le défilement du texte" button 5 : top 5,2 : left 5,left(4)+width(4) : caption 5,"Fond d'image" : on_click 5,ChargerImage hint 5,"Charger une image de fond" combo 11 : top 11,4 : left 11,440 : width 11,85 : on_change 11,ChangerDirection hint 11,"Sens de défilement du texte" item_add 11,"Ouest" item_add 11,"Est" item_add 11,"Nord" item_add 11,"Sud" item_add 11,"Nord-Ouest" item_add 11,"Nord-Est" item_add 11,"Sud-Ouest" item_add 11,"Sud-Est" res% = dll_call2("SelectComboBoxItem",handle(11),1) edit 6 : top 6,30 : left 6,440 : width 6,200 : text 6,"Panoramic" hint 6,"Texte pour le défilement" button 7 : top 7,30 : left 7,left(6)+width(6) : caption 7,"Texte" : on_click 7,ChargerTexte hint 7,"Charger le texte dans le Marquee" combo 8 : top 8,top(7)+height(7) : left 8,440 : width 8,200 hint 8,"Liste des polices utilisables" font_names_load 8 for i%=1 to count(8) if item_read$(8,i%)="Arial" res% = dll_call2("SelectComboBoxItem",handle(8),i%) exit_for end_if next i% combo 9 : top 9,top(8) : left 9,Left(8)+width(8) : width 9,40 hint 9,"Taille de la police" item_add 9,"8" item_add 9,"10" item_add 9,"12" item_add 9,"16" item_add 9,"20" item_add 9,"24" item_add 9,"28" item_add 9,"32" item_add 9,"36" item_add 9,"48" res% = dll_call2("SelectComboBoxItem",handle(9),6)
combo 30 : top 30,top(11) : left 30,left(11)+width(11) : width 30,120 : on_change 30,ChangerForme hint 30,"Forme du fond du Marquee" item_add 30,"Rectangle" item_add 30,"Rectangle arrondi" item_add 30,"Ellipse" res% = dll_call2("SelectComboBoxItem",handle(30),1)
alpha 40 : top 40,top(30)+2 : left 40,left(30)+width(30)+20 : caption 40,"Intervalle (ms):" spin 41 : top 41,top(30) : left 41,left(40)+80 : width 41,60 : min 41,50 : max 41,5000 : position 41,300 hint 41,"Intervalle du timer" on_change 41,ChangerVitesse
alpha 13 : top 13,top(9)+2 : left 13,left(9)+width(9)+10 : caption 13,"R:" spin 14 : top 14,top(9) : left 14,left(13)+15 : width 14,50 : min 14,0 : max 14,255 : position 14,255 hint 14,"Composante rouge de la couleur du texte" alpha 15 : top 15,top(9)+2 : left 15,left(14)+width(14)+10 : caption 15,"G:" spin 16 : top 16,top(9) : left 16,left(15)+15 : width 16,50 : min 16,0 : max 16,255 : position 16,0 hint 16,"Composante verte de la couleur du texte" alpha 17 : top 17,top(9)+2 : left 17,left(16)+width(14)+10 : caption 17,"B:" spin 18 : top 18,top(9) : left 18,left(17)+15 : width 18,50 : min 18,0 : max 18,255 : position 18,0 hint 18,"Composante bleur de la couleur du texte" button 19 : top 19,top(9) : left 19,left(18)+width(18) : caption 19,"Police" : on_click 19,ChangerPolice hint 19,"Charger les paramètres de la police dans le Marquee"
alpha 33 : top 33,top(13)+height(13)+6 : left 33,left(13) : caption 33,"R:" spin 34 : top 34,top(13)+height(13)+4 : left 34,left(33)+15 : width 34,50 : min 34,0 : max 34,255 : position 34,255 hint 34,"Composante rouge de la couleur du fond" alpha 35 : top 35,top(13)+height(13)+6 : left 35,left(34)+width(34)+10 : caption 35,"G:" spin 36 : top 36,top(13)+height(13)+4 : left 36,left(35)+15 : width 36,50 : min 36,0 : max 36,255 : position 36,0 hint 36,"Composante verte de la couleur du fond" alpha 37 : top 37,top(13)+height(13)+6 : left 37,left(36)+width(34)+10 : caption 37,"B:" spin 38 : top 38,top(13)+height(13)+4 : left 38,left(37)+15 : width 38,50 : min 38,0 : max 38,255 : position 38,0 hint 38,"Composante bleur de la couleur du fond" button 39 : top 39,top(13)+height(13)+4 : left 39,left(38)+width(38) : caption 39,"Fond" : on_click 39,ChangerFond hint 39,"Charger la couleur du fond dans le Marquee"
check 20 : top 20,top(9)+height(9)+height(33) : left 20,440 : width 20,40 : caption 20,"B" : font_bold 20 hint 20,"Attribut Gras du texte" check 21 : top 21,top(20) : left 21,left(20)+width(20) : width 21,40 : caption 21,"I" : font_italic 21 hint 21,"Attribut Italique du texte" check 22 : top 22,top(20) : left 22,left(21)+width(21) : width 22,40 : caption 22,"U" : font_underline 22 hint 22,"Attribut Souligné du texte" check 23 : top 23,top(20) : left 23,left(22)+width(22) : width 23,40 : caption 23,"S" : font_strike 23 hint 23,"Attribut Barré du texte" button 24 : top 24,top(20) : left 24,left(23)+width(23) : caption 24,"Attributs" : on_click 24,ChangerAttributs hint 24,"Charger les attributs graphiques dans le Marquee"
alpha 25 : top 25,top(24)+height(24)+2 : left 25,440 : caption 25,"Delta-X:" spin 26 : top 26,top(24)+height(24) : left 26,left(25)+50 : width 26,60 : min 26,1 : max 26,300 : position 26,5 hint 26,"Distance d'un pas de défilement horizontal" alpha 27 : top 27,top(24)+height(24)+2 : left 27,left(26)+width(26)+20 : caption 27,"Delta-Y:" spin 28 : top 28,top(24)+height(24) : left 28,left(27)+50 : width 28,50 : min 28,1 : max 28,300 : position 28,5 hint 28,"Distance d'un pas de défilement vertical" button 29 : top 29,top(24)+height(24) : left 29,left(28)+width(28)+20 : caption 29,"Delta" : on_click 29,ChangerDelta hint 29,"Charger les distances de défilement dans le Marquee"
open_dialog 12 : filter 12,"Images (BMP,JPG,PNG,GIF)|*.bmp;*.jpg;*.png;*.gif"
inactive 2 inactive 3 inactive 4 inactive 5 inactive 7 inactive 8 inactive 9 inactive 11 inactive 14 inactive 16 inactive 18 inactive 19 inactive 20 inactive 21 inactive 22 inactive 23 inactive 24 inactive 26 inactive 28 inactive 29 inactive 30
on_close 0,close0
f$ = "Placez le curseur sur chaque élément."+chr$(13)+chr$(10) f$ = f$ + "Vous aurez une indication sur le sens ce cet objet." message f$
end
close0: MQ% = dll_call1("DeleteMarquee",MQ%) return
CreerMarquee: MQ% = dll_call1("CreateMarquee",handle(0)) res% = dll_call5("LocateMarquee",MQ%,10,30,400,300) inactive 1 active 2 active 3 active 4 active 5 active 7 active 8 active 9 active 11 active 14 active 16 active 18 active 19 active 20 active 21 active 22 active 23 active 24 active 26 active 28 active 29 active 30 return SupprimerMarquee: MQ% = dll_call1("DeleteMarquee",MQ%) active 1 inactive 2 inactive 3 inactive 4 inactive 5 inactive 7 inactive 8 inactive 9 inactive 11 inactive 14 inactive 16 inactive 18 inactive 19 inactive 20 inactive 21 inactive 22 inactive 23 inactive 24 inactive 26 inactive 28 inactive 29 inactive 30 return DemarrerMarquee: res% = dll_call3("ManageMarquee",MQ%,1,1) return ArreterMarquee: res% = dll_call3("ManageMarquee",MQ%,1,0) return ChangerDirection: res% = dll_call3("ManageMarquee",MQ%,2,item_index(11)) return ChargerImage: f$ = file_name$(12) if f$="_" then return res% = dll_call3("ManageMarquee",MQ%,3,adr(f$)) return ChargerTexte: f$ = text$(6) res% = dll_call3("ManageMarquee",MQ%,4,adr(f$)) return ChangerPolice: f$ = item_index$(8) res% = dll_call6("SetMarqueeFont",MQ%,adr(f$),val(item_index$(9)),position(14),position(16),position(18)) return ChangerAttributs: res% = dll_call5("SetMarqueeAtributes",MQ%,checked(20),checked(21),checked(22),checked(23)) return ChangerDelta: res% = dll_call3("SetMarqueeTravelDelta",MQ%,position(26),position(28)) return ChangerForme: res% = dll_call3("ManageMarquee",MQ%,5,item_index(30)) return ChangerFond: res% = dll_call4("SetMarqueeBackColor",MQ%,position(34),position(36),position(38)) return ChangerVitesse: res% = dll_call3("ManageMarquee",MQ%,6,position(41)) return
Petite remarque: Pourquoi ai-je créé cet objet ? Pour le plaisir. Tout simplement parce que j'ai su le faire. | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Mar 12 Déc 2017 - 20:17 | |
| bonsoir Klaus, C'est pas mal du tout cette petite démo. Ça peut donner des idées de présentation ou d'aide ! - Citation :
- Pourquoi ai-je créé cet objet ? Pour le plaisir. Tout simplement parce que j'ai su le faire.
Eh bien Bravo pour tes compétences ! | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 12 Déc 2017 - 21:05 | |
| Merci, Minibug ! Ca peut servir à afficher un bandeau d'information pour les utilisateurs, une façon plus originale de présente une aide contextuelle, l'affichade d'informations de licence... | |
| | | pascal10000
Nombre de messages : 812 Localisation : Troyes Date d'inscription : 05/02/2011
| Sujet: Re: KGF_dll - nouvelles versions Mer 13 Déc 2017 - 15:27 | |
| je viens d’essayer ta ptite démo c'est tres intéressant et ça peut être très utille pour nos programmes "Pourquoi ai-je créé cet objet ? Pour le plaisir. Tout simplement parce que j'ai su le faire." Lorsqu'on est mordu a une passion ça deviens une drogue mais c'est a consomer a volonté | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Ven 15 Déc 2017 - 19:40 | |
| Nouvelle version: KGF.dll V8.12 du 15/12/2017Nouveautés: - Novel objet: DialButtonModules modifiés: KGF.dll KGF.chmLa doc et les sources sont à jour. Cet objet représente un bouton rond, tournant, délivrant une valeur à la manière d'une SCROLL_BAR. Voici une démo: - Code:
-
' test_DialButton.bas
label close0, Event, ChangeResultat
dim DB1%, DB2%, res%, f$ dim DB11%, DB12%, DB13%, DB14% dim pos1%, pos2%, typ%, ID%, position%
dll_on "KGF.dll"
width 0,1200 caption 0,"Test de DialogButton" on_close 0,close0
on_User_Event Event
alpha 1 : top 1,4 : left 1,10 : caption 1,"Résultat dans:" combo 2 : top 2,2 : left 2,90 : width 2,200 item_add 2,"../.." item_add 2,"USER_EVENT" item_add 2,"varable de type integer" item_add 2,"EDIT par handle" item_add 2,"SCROLL_BAR par handle" item_add 2,"PROGRESS_BAR par handle" item_add 2,"TRACK_BAR par handle" item_add 2,"caption(0) (pour DEBUG)" res% = dll_call2("SelectComboBoxItem",handle(2),1) on_click 2,ChangeResultat edit 11 : top 11,200 : left 11,10 scroll_bar 12 : top 12,230 : left 12,10 : min 12,0 : max 12,100 progress_bar 13 : top 13,260 : left 13,10 : min 13,0 : max 13,100 track_bar 14 : top 14,290 : left 14,10 : min 14,0 : max 14,100 edit 15 : top 15,320 : left 15,10
' res% = dll_call3("SetDialButtonResultMode",DB1%,3,object_internal(13)) ' end
edit 21 : top 21,200 : left 21,230 scroll_bar 22 : top 22,230 : left 22,230 : min 22,0 : max 22,100 progress_bar 23 : top 23,260 : left 23,230 : min 23,0 : max 23,100 track_bar 24 : top 24,290 : left 24,230 : min 24,0 : max 24,100 edit 25 : top 25,320 : left 25,230 : width 25,150
container 30 : top 30,10 : left 30,450 : height 30,400 : width 30,500 caption 30,"4 boutons identiques de type 2"
open_dialog 99 : filter 99,"Images (BMP,JPG,PNG,GIF)|*.bmp;*.jpg;*.png;*.gif"
f$ = file_name$(99) if f$="_" then f$ = ""
res% = dll_call6("SetDialButtonDefaults",1,255,255,0,0,0) res% = dll_call6("SetDialButtonDefaults",2,255,255,0,1,0) res% = dll_call6("SetDialButtonDefaults",3,255,0,0,1,1) res% = dll_call6("SetDialButtonDefaults",4,255,255,255,1,10) res% = dll_call6("SetDialButtonDefaults",5,0,100,0,7,0) : ' 7 = défaut: mode debug ! res% = dll_call6("SetDialButtonDefaults",6,0,100,0,7,adr(f$)) : ' 7 = défaut: mode debug !
DB1% = dll_call3("CreateDialButton",handle(0),1,1) : ' ID=1 res% = dll_call4("LocateDialButton",DB1%,30,30,100) DB2% = dll_call3("CreateDialButton",handle(0),2,2) : ' ID=2 ' res% = dll_call6("SetDialButtonIndicator",DB2%,2,10,255,255,255) : ' montrer la marque ligne SANS rotaton ' res% = dll_call6("SetDialButtonIndicator",DB2%,3,10,255,255,255) : ' montrer la marque ligne ET rotaton ' res% = dll_call6("SetDialButtonIndicator",DB2%,4,10,255,255,255) : ' montrer la marque cercle SANS rotaton ' res% = dll_call6("SetDialButtonIndicator",DB2%,5,10,255,255,255) : ' montrer la marque cercle ET rotaton res% = dll_call4("LocateDialButton",DB2%,230,30,150)
res% = dll_call6("SetDialButtonDefaults",6,0,100,0,1,adr(f$)) : ' 1 = défaut: USER_EVENT ! DB11% = dll_call3("CreateDialButton",handle(30),2,11) : ' ID=11 res% = dll_call4("LocateDialButton",DB11%,20,20,100) DB12% = dll_call3("CreateDialButton",handle(30),2,12) : ' ID=12 res% = dll_call4("LocateDialButton",DB12%,130,20,100) DB13% = dll_call3("CreateDialButton",handle(30),2,13) : ' ID=13 res% = dll_call4("LocateDialButton",DB13%,240,20,100) DB14% = dll_call3("CreateDialButton",handle(30),2,14) : ' ID=14 res% = dll_call4("LocateDialButton",DB14%,350,20,100)
edit 35 : parent 35,30 : top 35,130 : left 35,20 : width 35,width(25) edit 36 : parent 36,30 : top 36,150 : left 36,130 : width 36,width(36) edit 37 : parent 37,30 : top 37,170 : left 37,240 : width 37,width(25) edit 38 : parent 38,30 : top 38,190 : left 38,350 : width 38,width(25)
end
close0: res% = dll_call1("DeleteDialButton",DB1%) res% = dll_call1("DeleteDialButton",DB2%) return
Event: ' caption 0,hex$(USER_EVENT_WPARAM) if bin_and(USER_EVENT_WPARAM,hex("FF000000"))<>hex("07000000") then return typ% = bin_and(USER_EVENT_WPARAM,hex("00FF0000"))/65536 id% = bin_and(USER_EVENT_WPARAM,hex("0000FFFF")) position% = USER_EVENT_LPARAM select ID% message str$(id%) case 1 text 15,"UserEvent "+str$(typ%)+" ID "+str$(ID%)+" pos="+str$(position%) case 2 text 25,"UserEvent "+str$(typ%)+" ID "+str$(ID%)+" pos="+str$(position%) end_select if (ID%>=11) and (ID%<=14) text 25+ID%-1,"UserEvent "+str$(typ%)+" ID "+str$(ID%)+" pos="+str$(position%) end_if return
ChangeResultat: ' pour type 1: select item_index(2)-1 case 0 case 1 res% = dll_call3("SetDialButtonResultMode",DB1%,1,0) : ' USER_EVENT case 2 res% = dll_call3("SetDialButtonResultMode",DB1%,2,adr(pos1%)) : ' variable case 3 res% = dll_call3("SetDialButtonResultMode",DB1%,3,handle(11)) : ' EDIT case 4 res% = dll_call3("SetDialButtonResultMode",DB1%,4,handle(12)) : ' SCROLL_BAR case 5 res% = dll_call3("SetDialButtonResultMode",DB1%,5,handle(13)) : ' PROGRESS_BAR case 6 res% = dll_call3("SetDialButtonResultMode",DB1%,6,handle(14)) : ' TRACK_BAR case 7 res% = dll_call3("SetDialButtonResultMode",DB1%,7,0) : ' mode DEBUG end_select ' pour type 2: select item_index(2)-1 case 0 case 1 res% = dll_call3("SetDialButtonResultMode",DB2%,1,0) : ' USER_EVENT case 2 res% = dll_call3("SetDialButtonResultMode",DB2%,2,adr(pos2%)) : ' variable case 3 res% = dll_call3("SetDialButtonResultMode",DB2%,3,handle(21)) : ' EDIT case 4 res% = dll_call3("SetDialButtonResultMode",DB2%,4,handle(22)) : ' SCROLL_BAR case 5 res% = dll_call3("SetDialButtonResultMode",DB2%,5,handle(23)) : ' PROGRESS_BAR case 6 res% = dll_call3("SetDialButtonResultMode",DB2%,6,handle(24)) : ' TRACK_BAR case 7 res% = dll_call3("SetDialButtonResultMode",DB2%,7,0) : ' mode DEBUG end_select return Au lancement, le programme ouvre un dialogue pour choisir une image de bouton. Pour tester, utilisez une des images ci-dessous: ou mieux: Note pour ceux qui ont déjà essayé la version préliminaire: La fonction CreateDialButton a maintenant un paramètre supplémentaire !
Dernière édition par Klaus le Sam 16 Déc 2017 - 0:52, édité 1 fois | |
| | | pascal10000
Nombre de messages : 812 Localisation : Troyes Date d'inscription : 05/02/2011
| Sujet: Re: KGF_dll - nouvelles versions Ven 15 Déc 2017 - 22:19 | |
| bsr klaus c'est téléchargé merci tu en es ou pour le vu metre et pour les gains grave et aigu t'as une piste? bon courage et encore merci | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Ven 15 Déc 2017 - 22:29 | |
| les VuMeter sont complets et fonctionnels, à priori. Par contre, je n'ai pas trouvé de moyen de régler les aigus et graves de façon générale. Je n'ai trouvé que des éléments permettant de faire cela pour telle ou telle carte audio, avec des drivers particuliers. Donc, dans ce contexte, ça sort complètement du champ de KGF.dll. L'autre solution, c'est-à-dire de capter le son brut à la sortie du mixeur, le traiter et écrire ces réglages soi-même, ça revient à réécrire une partie importante de WinAmp, par exemple, ou d'autres logiciels, et c'est également hors de question dans le cadre de KGF.dll qui est une collection de fonctions générales de service, utilisables partout.
Si, par hasard, je tombe sur un composant libre de droit qui réalise cela, je l'intègre bien entendu dans KGF.dll et rends ces fonctions accessibles en Panoramic - c'est la démarche que j'ai faite avec deux des 3 modèles de VuMeter, avec ls QR-Code, avec le MasterVolume. Mais réaliser cela à partir de rien, c'est trop gros. | |
| | | Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: KGF_dll - nouvelles versions Ven 15 Déc 2017 - 23:22 | |
| Bonjour à tous ! Merci Klaus ! Ce que tu as fait est vraiment génial ! (comme d’habitude !) Permets-moi trois deux petites remarques : Le bouton de type 1 n’a pas les butées mini / maxi tel un potentiomètre analogique : si l’on dépasse le zéro, on repasse à la valeur max et inversement. Mais peut-être l’as-tu fait volontairement. Ce n’est pas le cas pour le type 2. La course du type 2 n’est pas parfaitement symétrique contrairement au type 1. Les butées mini / maxi ne sont pas situées symétriquement par rapport à l’axe vertical. Ainsi, lorsque que l’on met le bouton à "midi", on n’est pas à 50% de la valeur prédéfinie. Après différents essais, il s'avère que c'est l'image chargée n° 2 qui est la fautive... Dans ton source d’exemple -qui est très pédagogique et très bien fait- les commentaires des lignes 75, 77 et 79 comporte une erreur sur le numéro de l’ID (probablement un coup monté du copier-coller !). Encore MERCI klaus ! | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Sam 16 Déc 2017 - 0:59 | |
| Merci pour tes remarques, Marc ! Elles sont judicieuses. - Citation :
- Le bouton de type 1 n’a pas les butées mini / maxi tel un potentiomètre analogique : si l’on dépasse le zéro, on repasse à la valeur max et inversement. Mais peut-être l’as-tu fait volontairement. Ce n’est pas le cas pour le type 2.
Non, je n'ai pas fait exprès? C'est le fonctionnement du composant que j'ai utilisé pour cela. Je ne l'ai pas modifié. En fait, c'était le premier que j'avais trouvé et j'avais bâti les fonctions de service autour ce cela. Mon idée était de d'adapter ce composant, par la suite, pour ajouter la possibilité d'image et d'autres fonctionnalités. Puis, j'ai trouvé celui que je nomme type 2. Gestion de l'image impeccable, avec ou sans rotation de l'image - c'est parfait. Pour ne pas jeter trop tôt ce que j'avais fait pour le premier, j'ai ajouter l'autre sous forme de type 2 en gardant l'autre, mais sans y apporter plus de soin. Pour moi, le type 2 est de loin préférable, d'autant qu'il fait tout ce que le type 1 fait, et en mieux. Mais je veux garder la porte ouverte, pour le moment, pour un développement ultérieur. - Citation :
- Dans ton source d’exemple -qui est très pédagogique et très bien fait- les commentaires des lignes 75, 77 et 79 comporte une erreur sur le numéro de l’ID (probablement un coup monté du copier-coller !).
Exact encore une fois, tout comme l'analyse des causes... J'ai corrigé, également dans mon post ci-dessus. Merci encore pour les tests et les commentaires ! | |
| | | pascal10000
Nombre de messages : 812 Localisation : Troyes Date d'inscription : 05/02/2011
| Sujet: Re: KGF_dll - nouvelles versions Sam 16 Déc 2017 - 6:21 | |
| bonjour klaus
tu dit que les vus mètres sont fonctionnel peut tu nous expliquer comment fait on pour les communiquer avec la carte son pour enfin obtenir le niveau en décibel de chaque canal?
merci et bon week end | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Sam 16 Déc 2017 - 9:38 | |
| Ah oui... les deux canaux... J'avais perdu cela de vue. Pour le moment, j'ai seulement le volume global, et on peut le reporter sur un VuMeter par l'objet AutoUpdater. Mais c'est vrai - il faut que je regarde les volumes des deux vanaux separément. Je vair faire une fonction pour cela et poster une démio avec les VuMeter. Parience encore... | |
| | | pascal10000
Nombre de messages : 812 Localisation : Troyes Date d'inscription : 05/02/2011
| Sujet: Re: KGF_dll - nouvelles versions Sam 16 Déc 2017 - 10:56 | |
| | |
| | | Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: KGF_dll - nouvelles versions Sam 16 Déc 2017 - 11:31 | |
| Bonjour à tous !
Objet : bouton rotatif
Bonjour Klaus !
Je ne sais pas si ce sera utile, mais j’ai une idée : transformer le type 1 en potentiomètre numérique : c’est un potentiomètre sans fin en rotation (encodeur rotatif). Mécaniquement, on peut le tourner indéfiniment. Lors de la rotation, il fournit des impulsions qui permettent à l’électronique de connaître le sens de rotation. C’est à la partie informatique de l’électronique de fixer les butées de comptage mini / maxi. Le nombre d’impulsions pour 360° est en général de 15. Pour la DDL, plus de mini / maxi, mais plutôt une information du pas pour 360°. Un tel potentiomètre possède des crans. Ainsi, il y a 24 positions fixes du bouton pour un pas de 15. (24x15=360°). Il serait peut-être possible de simuler ces crans à l’affichage lors de la rotation en obligeant le bouton à s’arrêter obligatoirement sur un pas (par exemple de 24° si on prend 15 impulsions par tour). | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Sam 16 Déc 2017 - 11:40 | |
| Une idée intéressante. Je la mets dans la TODO list et je verrai cela prochainement. | |
| | | pascal10000
Nombre de messages : 812 Localisation : Troyes Date d'inscription : 05/02/2011
| Sujet: Re: KGF_dll - nouvelles versions Sam 16 Déc 2017 - 21:07 | |
| klaus j'ai essayé de faire un vu mètre et de mettre une ambiance (musique) à la carte son mais rien ne se passe! ai' je oublié quelque chose ou bien mon programme est mal codé? j'ai utilisé un timer pour pas que ce soit décalé avec le tempo source: - Code:
-
Dim Res%,VU1%,AG1%,vag%,dir%,LCD1a%,valeur%,etat% Label ambiance
Container 1 Left 1,50 :top 1,50 width 1,200:height 1,100 dll_on "kgf.dll" res% = dll_call1("CreateAutoUpdater",1000)
valeur%=3 if dir%=0 vag% = vag% + 2 if vag%>100 then dir% = 1 else vag% = vag% - 2 if vag%<10 then dir% = 0 end_if res% = dll_call2("SetVuMeterValue",AG1%,vag%)
vag% = 0
AG1% = dll_call3("CreateVUMeter",handle(1),1,0) res% = dll_call5("LocalizeVuMeter",AG1%,0,0,200,100) res% = dll_call2("SetVuMeterOrientation",AG1%,2) timer 100 : on_timer 100,ambiance : timer_interval 100,1 end
ambiance: timer_on 100 etat% = dll_call1("ManageAutoUpdater",etat%) res% = dll_call2("SetVuMeterValue",AG1%,vag%) : ' sera remplacé par AutoUpdate ! LCD1a% = dll_call2("AutoUpdate",AG1%,adr(valeur%)) etat% = dll_call1("ManageAutoUpdater",0) timer_off 100 return
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Sam 16 Déc 2017 - 21:33 | |
| Ben, oui, c'est normal ! L'objet MasterVolume règle et retourne le réglage du volume principal, mais ne mesure pas les décibels qui passent en temps réel ! C'et l'équivalent du bouton de réglage de volume sur une chaîne stéréo. C'est pour cela que, dans la version Radio que j'ai postée, le réglage du poste se répercute sur le volume du mixeur, mais le réglage du mixeur se répercute également sur la scroll_bar de volume de la radio. Je suis en train de creuser le problème. J'ai essayé la l'API WaveOutGetVolume, mais elle retourne de façon constante 65536 pour les deux canaux. J'ai encore un peu de travail de recherche à faire... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Dim 17 Déc 2017 - 11:51 | |
| Nouvelle version: KGF.dll V8.13 du 17/12/2017Nouveautés: - Novelle fonction: FindMultipleStringsInStringModules modifiés: KGF.dll KGF.chmLa doc et les sources sont à jour. Cette fonction a été créée suite à une demande spécifique de Pedro Alvarez. Elle peut néanmoins avoir un intérêt général. Elle sert à chercher dans une chaîne de caractères, la présence, simultanée ou non, d'un nombre important de sous-chaînes (nommées "critères") et de retourner la liste des critères trouvés. Deux points particuliers peuvent rendre cette fonction intéressante, au-delà du contexte initial de sa création: - le nombre de critères peut être très important: plusieurs dizaines, voire plusieurs centaines de milliers de critères ! - la recherche est extèmement rapide: moins de 2 secondes pour plus de 300.000 mille critères ! Un exemple d'utilisation: - Code:
-
' test_Pedro_Locutions.bas ' lien de téléchargement du fichier des critères: https://mon-partage.fr/f/KDwYj4Ga/
dll_on "kgf.dll"
width 0,700
dim a$, Separator$, res%, file$
' chaîne de caractères à traiter: a$="Mirando al cielo desde cualquiera de los hemisferios, se pueden ver sin telescopio unas 4.500 estrellas. Esa minúscula muestra de los innumerables soles del universo ni siquiera es representativa de los mundos que existen. Las estrellas más abundantes, tres de cada cuatro en la Vía Láctea, son las enanas rojas y tienen un brillo tan tenue que no pueden contemplarse a simple vista. Ni siquiera la más cercana de ellas, Proxima Centauri, a solo 4,5 años luz, es visible en el cielo nocturno. Sin embargo, es en torno a esos astros donde se empieza a plantear que, por probabilidad, será más fácil encontrar mundos habitables. Precisamente en esa estrella vecina, los astrónomos acaban de encontrar un nuevo planeta que puede ofrecer una idea sobre la naturaleza de los refugios de la vida en el cosmos, bastante distintos de nuestro planeta o de lo que cabría imaginar si la Tierra es nuestra referencia."
Separator$=";locut;"
res% = dll_call2("CreateStringList",1, 0) : ' création de la StringList de KGF.dll file$ = "locutions_espagnol_français.txt" : ' fichier texte contenant les critères res% = dll_call2("LoadStringList",1,adr(file$)) : ' chargement du fichier des critères
combo 2 : top 2,300 : ' combo des critères validés width 2,600
' analyse de la chaîne de caractères à traiter res% = dll_call4("FindMultipleStringsInString",adr(a$),adr(Separator$),1,handle(2)) message "Trouvés: "+str$(res%)
res% = dll_call1("DeleteStringList",1) end
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Dim 17 Déc 2017 - 16:59 | |
| Nouvelle version: KGF.dll V8.14 du 17/12/2017Nouveautés: - Novelle fonction: InitSpeakerControlModules modifiés: KGF.dllLa doc et les sources seront mis à jour prochainement. Cette fonction est une première version de récupértion du son des hauts-parleurs, de façon automatige, pour pouvoir le visualiser sun un VuMeter, par exemple. Pour le moment, l'état d'implémentation est le suivant: - réupérer le volume global: fonctionnel - récupérer individuellement les canaux gauche et droite: en cours de réalisation Voici une démo à l'aide de la Radio FM de Pascal10000. On affiche une fenêtre supplémentaire contenant 3 VuMeter analogiques à cadran, pour le volume du canal gauche, le volume total etle volume du canal droit. Seul celui du centre indiquant le voluge global bouge. - Code:
-
Dim Station$,url$,Frequence%,Q%,LeftD% ,res%,WB% Dim Volume%,GaucheVol%,DroitVol%,Min_Track5%,Max_Track5%,Hnd_Dll% DIM TotalVol% dim VUL%, VUT%, VUR%
Label Choix,Plus,Moin,Lecture,Etein Label NiveauSon label ChangeVolume, ChangeMute
Color 0,0,0,0 Height 0,180 Width 0,530 Caption 0,"Radio FM" Font_Size 0,10 Font_Bold 0 Font_Color 0,0,255,0 On_Close 0,Etein
' resize off form 0 If File_exists("D:\Programmation\Projet Panoramic\poste radio\form.dll")=1 Dll_On "D:\Programmation\Projet Panoramic\poste radio\form.dll" res% = DLL_CALL2("SetSize",HANDLE(0),0) Width 0,531 Dll_Off End_if
' création browser ' Dll_On "D:\Programmation\Projet Panoramic\poste radio\kgf.dll" Dll_On "kgf.dll" WB% = dll_call1("WB_Create",Handle(0)) res% = dll_call5("WB_Locate",WB%,10,50,0,0)
Alpha 1 Left 1,200
' liste des stations List 2 Top 2,40 Left 2,260 Height 2,80 Color 2,0,0,0 Font_Color 2,0,255,0 ' File_Load 2,"D:\Programmation\Projet Panoramic\poste radio\stations.txt" File_Load 2,"stations.txt" On_Click 2,Choix Alpha 3 Left 3,260 : Top 3,20 Caption 3,"Stations:"
Check 7 : top 7,87 left 7,5 Track_Bar 5 Left 5,20: Top 5,85 Width 5,222: Height 5,26 Min 5,0 : Max 5,65535 On_Change 5,NiveauSon Progress_Bar 6 Left 6,20: Top 6,120 Width 6,222: Height 6,10
' Tableau FREQUENCE Container 10 Caption 10,"FREQUENCE" Left 10,20 :Top 10,20 Width 10,200 : Height 10,52 Hide 10
LeftD%=-10 For Q%=11 to 16 LeftD%=LeftD%+30 DIGIT1 Q% Parent Q%,10 Top Q%,15 Width Q%,20 Height Q%,34 Left Q%,LeftD% Color Q%,0,255,0 Caption Q%,"" Next Q% Show 10
Button 20 Left 20,221 : Top 20,28 Width 20,21 : Height 20,21 Font_Size 20,16 Font_Bold 20 Caption 20,"+" On_Click 20,Plus
Button 30 Left 30,221 : Top 30,52 Width 30,21 : Height 30,21 Font_Size 30,20 Font_Bold 30 Caption 30,"-" On_Click 30,Moin
Frequence%=0
On_User_Event ChangeVolume res% = dll_call0("CreateMasterVolume") TotalVol% = dll_call0("GetMasterVolume") position 5,TotalVol% res% = dll_call0("GetMasterMute") if res%=0 then mark_on 7 on_click 7,ChangeMute
form 1000 : caption 1000,"VuMeters" : left 1000,left(0)+width(0) : top 1000,top(0) width 1000,650 : height 1000,250 res% = dll_call1("CreateAutoUpdater",100) VUL% = dll_call3("CreateVUMeter",handle(1000),1,0) res% = dll_call5("LocalizeVuMeter",VUL%,0,0,200,200) res% = dll_call3("SetVuMeterLimits",VUL%,65535,50000) res% = dll_call2("SetVuMeterOrientation",VUL%,0)
VUT% = dll_call3("CreateVUMeter",handle(1000),1,0) res% = dll_call5("LocalizeVuMeter",VUT%,200,20,200,200) res% = dll_call3("SetVuMeterLimits",VUT%,65535,50000) res% = dll_call2("SetVuMeterOrientation",VUT%,2)
VUR% = dll_call3("CreateVUMeter",handle(1000),1,0) res% = dll_call5("LocalizeVuMeter",VUR%,400,0,200,200) res% = dll_call3("SetVuMeterLimits",VUR%,65535,50000) res% = dll_call2("SetVuMeterOrientation",VUR%,1) res% = dll_call4("InitSpeakerControl",100,adr(GaucheVol%),adr(DroitVol%),adr(Volume%)) res% = dll_call2("AutoUpdate",VUL%,adr(GaucheVol%)) res% = dll_call2("AutoUpdate",VUT%,adr(Volume%)) res% = dll_call2("AutoUpdate",VUR%,adr(DroitVol%))
End
' changement du volume dans le panneau du mixeur Windows ChangeVolume: if User_Event_WParam=hex("06020000") then position 5,User_Event_LParam if User_Event_WParam=hex("06010000") if User_Event_LParam=0 Mark_On 7 else Mark_Off 7 end_if end_if return ' changement de l'état actif/muet du haut-parleur ChangeMute: if checked(7)=1 res% = dll_call1("SetMasterMute",0) else res% = dll_call1("SetMasterMute",1) end_if return
' selection des fréquences + ou - Plus: Set_Focus 10 Frequence%=Frequence%+1 If Frequence%=>42 Then Frequence%=1 Item_Select 2,Frequence% Gosub Choix Return
Moin: Set_Focus 10 Frequence%=Frequence%-1 If Frequence%=<0 Then Frequence%=42 Item_Select 2,Frequence% Gosub Choix Return
' selection des stations Choix: Caption 11,"" : Caption 12,"" : Caption 13,"" : Caption 14,"" : Caption 15,"" : Caption 16,""
If Clicked(2)=1 Then Frequence%=Item_Index(2) Select Frequence% Case 1 : Station$="France-Inter" Caption 13,"8" : Caption 14,"7" : Caption 15,"-" : Caption 16,"8" :Caption 1,Station$ url$="http://www.ecouterradioenligne.com/france-inter/" Case 2 : Station$="Générations" Caption 13,"8" : Caption 14,"8" : Caption 15,"-" : Caption 16,"2" :Caption 1,Station$ url$="http://www.ecouterradioenligne.com/generations/" Case 3 : Station$="Nostalgie" Caption 13,"9" : Caption 14,"0" : Caption 15,"-" : Caption 16,"4" :Caption 1,Station$ url$="http://www.ecouterradioenligne.com/nostalgie/" Case 4 : Station$="Chante-France" Caption 13,"9" : Caption 14,"0" : Caption 15,"-" : Caption 16,"9" :Caption 1,Station$ url$="http://www.ecouterradioenligne.com/chante-france/" Case 5 : Station$="Contact-Fm" Caption 13,"9" : Caption 14,"1" : Caption 15,"-" : Caption 16,"4" :Caption 1,Station$ url$="http://www.ecouterradioenligne.com/contact-fm/" Case 6 : Station$="Cherie-Fm" Caption 12,"9" : Caption 13,"1." : Caption 14,"7" : Caption 15,"-" : Caption 16,"1" :Caption 1,Station$ url$="http://www.ecouterradioenligne.com/cherie/" Case 7 : Station$="France-Musique" Caption 12,"9" : Caption 13,"2." : Caption 14,"0" : Caption 15,"-" : Caption 16,"0" :Caption 1,Station$ url$="http://www.ecouterradioenligne.com/france-musique/" Case 8 : Station$="France-culture" Caption 12,"9" : Caption 13,"3." : Caption 14,"5" : Caption 15,"-" : Caption 16,"0" :Caption 1,Station$ url$="http://www.ecouterradioenligne.com/france-culture/" Case 9 : Station$="Orient-Fm" Caption 12,"9" : Caption 13,"4." : Caption 14,"3" : Caption 15,"-" : Caption 16,"0" :Caption 1,Station$ url$="http://www.ecouterradioenligne.com/orient/" Case 10 : Station$="Galaxie FM France" Caption 12,"9" : Caption 13,"5." : Caption 14,"3" : Caption 15,"-" : Caption 16,"0" :Caption 1,Station$ url$="http://www.ecouterradioenligne.com/galaxie/" Case 11 : Station$="Puls Radio" Caption 12,"9" : Caption 13,"5." : Caption 14,"4" : Caption 15,"-" : Caption 16,"0" :Caption 1,Station$ url$="http://www.ecouterradioenligne.com/puls/" Case 12 : Station$="Jazz" Caption 12,"9" : Caption 13,"5." : Caption 14,"7" : Caption 15,"-" : Caption 16,"0" :Caption 1,Station$ url$="http://www.ecouterradioenligne.com/jazz/" Case 13 : Station$="Skyrock" Caption 12,"9" : Caption 13,"6." : Caption 14,"0" : Caption 15,"-" : Caption 16,"0" :Caption 1,Station$ url$="http://www.ecouterradioenligne.com/skyrock/" Case 14 : Station$="Voltage" Caption 12,"9" : Caption 13,"6." : Caption 14,"9" : Caption 15,"-" : Caption 16,"0" :Caption 1,Station$ url$="http://www.ecouterradioenligne.com/voltage/" Case 15 : Station$="Rire et chanson" Caption 12,"9" : Caption 13,"7." : Caption 14,"4" : Caption 15,"-" : Caption 16,"0" :Caption 1,Station$ url$="http://www.ecouterradioenligne.com/rire-et-chanson/" Case 16 : Station$="Metropolys" Caption 12,"9" : Caption 13,"7." : Caption 14,"6" : Caption 15,"-" : Caption 16,"0" :Caption 1,Station$ url$="http://www.ecouterradioenligne.com/metropolys/" Case 17 : Station$="FG DJ Radio" Caption 12,"9" : Caption 13,"8." : Caption 14,"2" : Caption 15,"-" : Caption 16,"0" :Caption 1,Station$ url$="http://www.ecouterradioenligne.com/fg-dj/" Case 18 : Station$="Vibration FM" Caption 12,"9" : Caption 13,"8." : Caption 14,"7" : Caption 15,"-" : Caption 16,"0" :Caption 1,Station$ url$="http://www.ecouterradioenligne.com/vibration/" Case 19 : Station$="Latina" Caption 12,"9" : Caption 13,"9." : Caption 14,"0" : Caption 15,"-" : Caption 16,"0" :Caption 1,Station$ url$="http://www.ecouterradioenligne.com/latina/" Case 20 : Station$="France Maghreb 2 France" Caption 12,"9" : Caption 13,"9." : Caption 14,"5" : Caption 15,"-" : Caption 16,"0" :Caption 1,Station$ url$="http://www.ecouterradioenligne.com/maghreb-2/" Case 21 : Station$="NRJ" Caption 11,"1" : Caption 12,"0" : Caption 13,"0." : Caption 14,"3" : Caption 15,"-" : Caption 16,"1" :Caption 1,Station$ url$="http://www.ecouterradioenligne.com/nrj-france/" Case 22 : Station$="Alouette France" Caption 11,"1" : Caption 12,"0" : Caption 13,"0." : Caption 14,"3" : Caption 15,"-" : Caption 16,"2" :Caption 1,Station$ url$="http://www.ecouterradioenligne.com/alouette/" Case 23 : Station$="Fun Radio" Caption 11,"1" : Caption 12,"0" : Caption 13,"1." : Caption 14,"9" : Caption 15,"-" : Caption 16,"0" :Caption 1,Station$ url$="http://www.ecouterradioenligne.com/fun/" Case 24 : Station$="Oui FM" Caption 11,"1" : Caption 12,"0" : Caption 13,"2." : Caption 14,"3" : Caption 15,"-" : Caption 16,"0" :Caption 1,Station$ url$="" Case 25 : Station$="MFM Radio France" Caption 11,"1" : Caption 12,"0" : Caption 13,"2." : Caption 14,"7" : Caption 15,"-" : Caption 16,"0" :Caption 1,Station$ url$="http://www.ecouterradioenligne.com/mfm/" Case 26 : Station$="Gold FM" Caption 11,"1" : Caption 12,"0" : Caption 13,"3." : Caption 14,"3" : Caption 15,"-" : Caption 16,"0" :Caption 1,Station$ url$="http://www.ecouterradioenligne.com/gold-fm/" Case 27 : Station$="Virgin" Caption 11,"1" : Caption 12,"0" : Caption 13,"3." : Caption 14,"5" : Caption 15,"-" : Caption 16,"0" :Caption 1,Station$ url$="http://www.ecouterradioenligne.com/virgin/" Case 28 : Station$="RFM" Caption 11,"1" : Caption 12,"0" : Caption 13,"3." : Caption 14,"9" : Caption 15,"-" : Caption 16,"0" :Caption 1,Station$ url$="http://www.ecouterradioenligne.com/rfm/" Case 29 : Station$="Hit West France" Caption 11,"1" : Caption 12,"0" : Caption 13,"4." : Caption 14,"1" : Caption 15,"-" : Caption 16,"0" :Caption 1,Station$ url$="http://www.ecouterradioenligne.com/hit-west/" Case 30 : Station$="RTL" Caption 11,"1" : Caption 12,"0" : Caption 13,"4." : Caption 14,"3" : Caption 15,"-" : Caption 16,"0" :Caption 1,Station$ url$="http://www.ecouterradioenligne.com/rtl/" Case 31 : Station$="Europe 1" Caption 11,"1" : Caption 12,"0" : Caption 13,"4." : Caption 14,"7" : Caption 15,"-" : Caption 16,"0" :Caption 1,Station$ url$="http://www.ecouterradioenligne.com/europe/" Case 32 : Station$="Radio FIP" Caption 11,"1" : Caption 12,"0" : Caption 13,"5." : Caption 14,"1" : Caption 15,"-" : Caption 16,"0" :Caption 1,Station$ url$="http://www.ecouterradioenligne.com/fip/" Case 33 : Station$="France-Info" Caption 11,"1" : Caption 12,"0" : Caption 13,"5." : Caption 14,"5" : Caption 15,"-" : Caption 16,"0" :Caption 1,Station$ url$="http://www.ecouterradioenligne.com/france-info/" Case 34 : Station$="RTL2" Caption 11,"1" : Caption 12,"0" : Caption 13,"5." : Caption 14,"9" : Caption 15,"-" : Caption 16,"0" :Caption 1,Station$ url$="http://www.ecouterradioenligne.com/rtl2/" Case 35 : Station$="Beur FM France" Caption 11,"1" : Caption 12,"0" : Caption 13,"6." : Caption 14,"7" : Caption 15,"-" : Caption 16,"0" :Caption 1,Station$ url$="http://www.ecouterradioenligne.com/beur/" Case 36 : Station$="France-Bleu" Caption 11,"1" : Caption 12,"0" : Caption 13,"7." : Caption 14,"1" : Caption 15,"-" : Caption 16,"0" :Caption 1,Station$ url$="http://www.ecouterradioenligne.com/france-bleu/" Case 37 : Station$="RFI France" Caption 11,"1" : Caption 12,"0" : Caption 13,"7." : Caption 14,"9" : Caption 15,"-" : Caption 16,"0" :Caption 1,Station$ url$="http://www.ecouterradioenligne.com/rfi/" Case 38 : Station$="Radio Meuh France" Caption 12,"9" : Caption 13,"9" : Caption 14,"9." : Caption 15,"0" : Caption 16,"1" :Caption 1,Station$ url$="http://www.ecouterradioenligne.com/meuh/" Case 39 : Station$="Enjoy Radio" Caption 12,"9" : Caption 13,"9" : Caption 14,"9." : Caption 15,"0" : Caption 16,"2" :Caption 1,Station$ url$="http://www.ecouterradioenligne.com/enjoy/" Case 40 : Station$="La Grosse Radio France" Caption 12,"9" : Caption 13,"9" : Caption 14,"9." : Caption 15,"0" : Caption 16,"3" :Caption 1,Station$ url$="http://www.ecouterradioenligne.com/la-grosse/" Case 41 : Station$="Africa-1-France" Caption 12,"9" : Caption 13,"9" : Caption 14,"9." : Caption 15,"0" : Caption 16,"4" :Caption 1,Station$ url$="http://www.ecouterradioenligne.com/africa-1-france/" Case 42 : Station$="Swigg Radio" Caption 12,"9" : Caption 13,"9" : Caption 14,"9." : Caption 15,"0" : Caption 16,"5" :Caption 1,Station$ url$="http://www.ecouterradioenligne.com/ado/" End_Select gosub Lecture Return
Lecture: res% = dll_call2("WB_Url",WB%,adr(url$)) NiveauSon() Return
' / GESTIONS DU VOLUME / *********************************************************** NiveauSon: TotalVol%=position(5) If TotalVol%<0 Then TotalVol%=0 If TotalVol%>65535 Then TotalVol%=65535 res% = dll_call1("SetMasterVolume",TotalVol%) Return
Sub NiveauSon() ' RECUPERE LE NIVEAU ACTUEL DU SON TotalVol% = dll_call0("GetMasterVolume") position 5,TotalVol% End_Sub
************************************************************
Etein: res% = dll_call0("DeleteMasterVolume") res% = dll_call1("WB_Delete",WB%) Dll_Off Terminate Return
Mais ça donne délà une idée, et ça montre comment attacher un VuMeter à ce genre d'information. | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Dim 17 Déc 2017 - 19:40 | |
| Bonsoir klaus ! J'ai des difficultés (lenteur) pour télécharge KGF depuis le lien dans ta signature. Et depuis le site http://klauspanoramic.esy.es/ j'ai une archive corrompue à chaque essai ! Pourrais tu remettre l'archive KGF à jour stp. Merci d'avance. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Dim 17 Déc 2017 - 19:55 | |
| C'est fait - site principoal, site miroir et WebDav. | |
| | | Contenu sponsorisé
| Sujet: Re: KGF_dll - nouvelles versions | |
| |
| | | | KGF_dll - nouvelles versions | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |