Screen Management Library en dotnet
Salut, voici la seconde librairie que je vous avais promis, encapsulant du code natif pour jouer avec les résolutions d’affichages en dotnet managed.
Cette librairie n’est pas évidente à comprendre je vais donc vous montrer un exemple et n’hésitez pas à poser vos questions.
Dans notre exemple nous avons deux listbox, une listant les devices (sorties graphique) et une autre listant les mode de la device selectionné (par exemple, ecran 1 peu faire du 800*600 en 16bit, 800*600 en 32bit… etc… etc…).
Pour des questions de facilitées je reste sur du wpf “crado”, c’est a dire sans binding et autre mvvm afin de parler a un maximum de personne et correspondre a un maximum de cas.
Lors de l’instanciation nous remplirons notre première listbox ainsi :
this.listDevices.ItemsSource = Screenmgmt.EnumDevices();
Avec cela nous récuperons toutes les devices dans une List<string>
Ensuite,dans le handler tu SelectionChanged sur la listDevices :
int devNum = listDevices.SelectedIndex;
btnSet.IsEnabled = Screenmgmt.MainDevice(devNum);
this.listSettings.ItemsSource = Screenmgmt.EnumModes(devNum).Distinct().Reverse();
Nous récupérons le selected index, si c’est la device principale on active le bouton “appliquer” (optionnel) et enfin nous récuperons tous les modes d’affichage de notre device.
Enfin, lorsque l’on click sur appliquer nous voulons a la fois appliquer la nouvelle resolution mais aussi donner la possibilitée de faire un rollback sur cancel :
List<int> now = Screenmgmt.SearchActualResolutionModes();
int set = Screenmgmt.SearchSettingsString(listSettings.SelectedValue.ToString(), listDevices.SelectedIndex);
if (set != -1)
{
Screenmgmt.ChangeResolution(listDevices.SelectedIndex, set);
if (MessageBox.Show(“Accept ? “, “?”, MessageBoxButtons.OKCancel) == MessageButtons.Cancel)
Screenmgmt.ChangeResolution(now[0], now[1]);
}
On récupère dans une list<string> le numéro de l’écran et l’index du mode actuel de ce dernier afin de pouvoir revenir en arrière. ensuite on récupère l’index du mode a tester, pour ce faire on envoi les deux items sélectionné a une fonction permettant de chercher en string les éléments et qui retourne ensuite le mode associé. On applique ensuite le changement de résolution avec change résolution en donnant l’index de l’ecran et l’index du mode. Une messageBox est ensuite affiché, si la réponse est Cancel, on reviens avec ChangeResolution a la précédente résolution grace au tableau récupéré au debut contenant le précédent index du mode et de l’ecran.
J’ai développé un control custom fonctionnant comme une message box avec un timer pour ce cas ci. En effet, si la résolution n’est pas supporté par exemple, il sera impossible a l’utilisateur de cliquer sur “Cancel”. Je posterai cette custom message box avec un timer bientôt. Mais je ne voulais pas mélanger cette dernière a cet article.
Voila le code source :- Source -:
Et la librairie :- DLL -:
Inform@tiquement
Cours sur les librairies dans le développement logiciel
Salut à tous, j’ai eu l’occasion de donner une leçon dans le cadre du cours de Mr Cailleuw sur l’utilisation de librairies dans le développement logiciel ainsi que sur les raisons qui poussent a segmenter ses logiciels en librairies de composants (indépendamment du facteur non réécriture de code). Les slides ne servant que de support, je mettrai en ligne un complément reprenant ce qui a été donné oralement.
Liens vers les slides sur Scribd
http://www.scribd.com/doc/49791480/langageProc
Présentation powerpoint en pptx (Office 2010)
http://manu404.wolfplex.org/blogdoc/langageProc.pptx
Présentation powerpoint en pdf
http://manu404.wolfplex.org/blogdoc/langageProc.pdf
Inform@tiquement
Istace Emmanuel – Manu404


Laisser un commentaire