Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Inverser l'ecran

10 réponses
Avatar
Mamelook
Bonjour, Je voudrai faire une blague a un ami en lui envoyant un programme
qui inverse l'image de l'ecran, de fasson temporaire bien sur, le probleme
c'est que je voit pas du tout comment faire ... Quelqun aurai une idée ?

10 réponses

Avatar
Christian ASTOR
Mamelook wrote:
Bonjour, Je voudrai faire une blague a un ami en lui envoyant un
programme qui inverse l'image de l'ecran, de fasson temporaire bien
sur, le probleme c'est que je voit pas du tout comment faire ...
Quelqun aurai une idée ?



DM_DISPLAYORIENTATION si c'est supporté (Mobile par ex)
Sinon, temporairement, StretchBlt() vers fenêtre plein-écran
Avatar
Mamelook
J'ai esseyer sa :

DEVMODE devMode = {0};
devMode.dmSize = sizeof(DEVMODE);
//devMode.dmPelsWidth = 1024;
//devMode.dmPelsHeight = 768;
devMode.dmFields = 0x00800000; //DM_DISPLAYORIENTATION
devMode.dmOrientation = 90;

if(ChangeDisplaySettingsEx(NULL, &devMode, NULL, 0,
(LPVOID)180)!=DISP_CHANGE_SUCCESSFUL){
MessageBox(NULL, "pasok", "", MB_OK);
}

A l'execution, il n'y a pas de messagebox (donc la fonction na pas
retourner d'erreur), mais l'ecran na pas bouger non plus.
http://msdn2.microsoft.com/en-us/library/ms908108.aspx

Help me please !!!

Le Sun, 03 Feb 2008 16:14:34 +0100, Christian ASTOR
a écrit:

DM_DISPLAYORIENTATION


Avatar
Christian ASTOR
Mamelook wrote:

J'ai esseyer sa :

DEVMODE devMode = {0};
devMode.dmSize = sizeof(DEVMODE);
//devMode.dmPelsWidth = 1024;
//devMode.dmPelsHeight = 768;
devMode.dmFields = 0x00800000; //DM_DISPLAYORIENTATION
devMode.dmOrientation = 90;

if(ChangeDisplaySettingsEx(NULL, &devMode, NULL, 0,
(LPVOID)180)!=DISP_CHANGE_SUCCESSFUL){
MessageBox(NULL, "pasok", "", MB_OK);
}

A l'execution, il n'y a pas de messagebox (donc la fonction na pas
retourner d'erreur), mais l'ecran na pas bouger non plus.



Il y a un peu n'importe quoi dans les paramètres.
DM_DISPLAYORIENTATION, c'est 0x00000080
dmOrientation, c'est DMDO_90 entre autres.
180, ça ne correspond à rien.
Avatar
Mamelook
Oki, donc ce qui nous donne :

#define DMDO_DEFAULT 0
#define DMDO_90 1
#define DMDO_180 2
#define DMDO_270 3
#define DM_DISPLAYORIENTATION 0x00000080

DEVMODE devMode = {0};
devMode.dmSize = sizeof(DEVMODE);
devMode.dmFields = DM_DISPLAYORIENTATION;

devMode.dmOrientation = DMDO_180;
if(ChangeDisplaySettingsEx(NULL, &devMode, NULL, 0,
NULL)!=DISP_CHANGE_SUCCESSFUL)
MessageBox(NULL, "pasok", "", MB_OK);

Il ni a toujour pas d'erreur retourner ni de changement a l'écran...

Le Sun, 03 Feb 2008 17:10:54 +0100, Christian ASTOR
a écrit:

Mamelook wrote:

J'ai esseyer sa :
DEVMODE devMode = {0};
devMode.dmSize = sizeof(DEVMODE);
//devMode.dmPelsWidth = 1024;
//devMode.dmPelsHeight = 768;
devMode.dmFields = 0x00800000; //DM_DISPLAYORIENTATION
devMode.dmOrientation = 90;
if(ChangeDisplaySettingsEx(NULL, &devMode, NULL, 0,
(LPVOID)180)!=DISP_CHANGE_SUCCESSFUL){
MessageBox(NULL, "pasok", "", MB_OK);
}
A l'execution, il n'y a pas de messagebox (donc la fonction na pas
retourner d'erreur), mais l'ecran na pas bouger non plus.



Il y a un peu n'importe quoi dans les paramètres.
DM_DISPLAYORIENTATION, c'est 0x00000080
dmOrientation, c'est DMDO_90 entre autres.
180, ça ne correspond à rien.






--
Utilisant le client e-mail révolutionnaire d'Opera :
http://www.opera.com/mail/
Avatar
Christian ASTOR
Mamelook wrote:
Oki, donc ce qui nous donne :

#define DMDO_DEFAULT 0
#define DMDO_90 1
#define DMDO_180 2
#define DMDO_270 3
#define DM_DISPLAYORIENTATION 0x00000080

DEVMODE devMode = {0};
devMode.dmSize = sizeof(DEVMODE);
devMode.dmFields = DM_DISPLAYORIENTATION;

devMode.dmOrientation = DMDO_180;
if(ChangeDisplaySettingsEx(NULL, &devMode, NULL, 0,
NULL)!=DISP_CHANGE_SUCCESSFUL)
MessageBox(NULL, "pasok", "", MB_OK);

Il ni a toujour pas d'erreur retourner ni de changement a l'écran...



Les champs principaux doivent normalement être renseignés (width,
height, frequency, ...)
On récupère les valeurs pas défaut avec EnumDisplaySettingsEx()
On doit ensuite tester avec CDS_TEST, puis valider (éventuellement avec
d'autres flags CDS_*)
Mais même là, si le driver ne supporte pas, ça ne marchera peut-être pas
ou il faudra rebooter (DISP_CHANGE_RESTART)...
Avatar
Mamelook
Bon voila ske j'ai fait :

################################################
/*Define nécessaire*/
#define DMDO_DEFAULT 0
#define DMDO_90 1
#define DMDO_180 2
#define DMDO_270 3
#define DM_DISPLAYORIENTATION 0x00000080
#define CDS_VIDEOPARAMETERS 0x00000020
/*Creation des variables*/
DEVMODE devMode = {0};
devMode.dmSize = sizeof(DEVMODE);
/*Recuperation du DEVMODE actuel*/
EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &devMode);
/*On indique qu'on veut faire une orientation*/
devMode.dmFields = DM_DISPLAYORIENTATION;
devMode.dmOrientation = DMDO_180;
/*Test*/
if(ChangeDisplaySettingsEx(NULL, &devMode, NULL, CDS_TEST,
NULL)!=DISP_CHANGE_SUCCESSFUL){
MessageBox(NULL, "pasok1", "", MB_OK);
/*Validation*/
if(ChangeDisplaySettingsEx(NULL, &devMode, NULL, CDS_VIDEOPARAMETERS,
NULL)!=DISP_CHANGE_SUCCESSFUL){
MessageBox(NULL, "pasok2", "", MB_OK);
}
}
################################################

Toujours aucun resulta, cette fois c'est la messagebox pasok2 qui
s'affiche...


Le Sun, 03 Feb 2008 21:14:28 +0100, Christian ASTOR
a écrit:

CDS_TEST





--
Utilisant le client e-mail révolutionnaire d'Opera :
http://www.opera.com/mail/
Avatar
Mamelook
Dsl j'ai pas mit le bon code, le voici :

################################################
/*Define nécessaire*/
#define DMDO_DEFAULT 0
#define DMDO_90 1
#define DMDO_180 2
#define DMDO_270 3
#define DM_DISPLAYORIENTATION 0x00000080
#define CDS_VIDEOPARAMETERS 0x00000020
/*Creation des variables*/
DEVMODE devMode = {0};
devMode.dmSize = sizeof(DEVMODE);
/*Recuperation du DEVMODE actuel*/
EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &devMode);
/*On indique qu'on veut faire une orientation*/
devMode.dmFields = DM_DISPLAYORIENTATION;
devMode.dmOrientation = DMDO_180;
/*Test*/
if(ChangeDisplaySettingsEx(NULL, &devMode, NULL, CDS_TEST,
NULL)!=DISP_CHANGE_SUCCESSFUL){
MessageBox(NULL, "pasok1", "", MB_OK);
}else{
/*Validation*/
if(ChangeDisplaySettingsEx(NULL, &devMode, NULL, CDS_VIDEOPARAMETERS,
NULL)!=DISP_CHANGE_SUCCESSFUL){
MessageBox(NULL, "pasok2", "", MB_OK);
}
}
################################################

Le Sun, 03 Feb 2008 21:14:28 +0100, Christian ASTOR
a écrit:

Mamelook wrote:
Oki, donc ce qui nous donne :
#define DMDO_DEFAULT 0
#define DMDO_90 1
#define DMDO_180 2
#define DMDO_270 3
#define DM_DISPLAYORIENTATION 0x00000080
DEVMODE devMode = {0};
devMode.dmSize = sizeof(DEVMODE);
devMode.dmFields = DM_DISPLAYORIENTATION;
devMode.dmOrientation = DMDO_180;
if(ChangeDisplaySettingsEx(NULL, &devMode, NULL, 0,
NULL)!=DISP_CHANGE_SUCCESSFUL)
MessageBox(NULL, "pasok", "", MB_OK);
Il ni a toujour pas d'erreur retourner ni de changement a l'écran...



Les champs principaux doivent normalement être renseignés (width,
height, frequency, ...)
On récupère les valeurs pas défaut avec EnumDisplaySettingsEx()
On doit ensuite tester avec CDS_TEST, puis valider (éventuellement avec
d'autres flags CDS_*)
Mais même là, si le driver ne supporte pas, ça ne marchera peut-être pas
ou il faudra rebooter (DISP_CHANGE_RESTART)...


Avatar
Christian ASTOR
Mamelook wrote:
Dsl j'ai pas mit le bon code, le voici :



Il y a toujours des erreurs (dmFields, test retour, CDS_*)
mais si ce n'est pas un Mobile, il y a peu de chances que cela soit
supporté.
Avatar
Mamelook
DSl, j'arrive vraiment pas a le faire marcher ...
Si tu voit ou sont les erreurs, peut tu modifier ce petit bou de code stp ?

Le Fri, 08 Feb 2008 09:07:32 +0100, Christian ASTOR
a écrit:

Mamelook wrote:
Dsl j'ai pas mit le bon code, le voici :



Il y a toujours des erreurs (dmFields, test retour, CDS_*)
mais si ce n'est pas un Mobile, il y a peu de chances que cela soit
supporté.


Avatar
Marilyn Dubois
Mais c'est quoi du langage C ? ou un script en perl ?
Et comment envoyer cela pout l'utiliser ?


"Mamelook" a écrit dans le message de news:

Bonjour, Je voudrai faire une blague a un ami en lui envoyant un programme
qui inverse l'image de l'ecran, de fasson temporaire bien sur, le probleme
c'est que je voit pas du tout comment faire ... Quelqun aurai une idée ?