OVH Cloud OVH Cloud

Problème de débutant

4 réponses
Avatar
Olivier
Bonjour,

Voici mon petit problème :

Je veux créer une fenêtre de document de 340000 par 340000 pixels dans mon
application :

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
cs.cx = 340000;
cs.cy = 340000;
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
return TRUE;
}

void CGSMView::OnInitialUpdate()
{
SetScrollSizes(MM_TEXT, CSize(340000,340000));
CScrollView::OnInitialUpdate();
}

Et je veux que la position courante de la souris apparaisse dans la barre
d'état :

void CGSMView::OnUpdateMouseX(CCmdUI *pCmdUI)
{
pCmdUI->Enable();
CString strPos;
POINT lpPoint;
GetCursorPos(&lpPoint);
ScreenToClient(&lpPoint);
strPos.Format("X = %d", lpPoint.x);
pCmdUI->SetText(strPos);
}

void CGSMView::OnUpdateMouseY(CCmdUI *pCmdUI)
{
pCmdUI->Enable();
CString strPos;
POINT lpPoint;
GetCursorPos(&lpPoint);
ScreenToClient(&lpPoint);
strPos.Format("Y = %d", lpPoint.y);
pCmdUI->SetText(strPos);
}

Tout fonctionne très bien mais lorsque je fais scroller ma fenêtre, les
valeurs X et Y de la souris n'augmentent pas !!????
Pourquoi ?

Cordialement,

Olivier

4 réponses

Avatar
dark poulpo
"Olivier" a écrit dans le message de
news:425569b0$0$15285$
Bonjour,

Voici mon petit problème :

Je veux créer une fenêtre de document de 340000 par 340000 pixels dans mon
application :



t'as pas plus large encore? c'est indiscret si je demande pourqu'elle type
de programme tu as besoin de scroller 2 heures ?
le temps d'arriver d'un bout à l'autre, la batterie de la souris est à
plat!! :-p

void CGSMView::OnUpdateMouseY(CCmdUI *pCmdUI)
{
pCmdUI->Enable();
CString strPos;
POINT lpPoint;
GetCursorPos(&lpPoint);
ScreenToClient(&lpPoint);
strPos.Format("Y = %d", lpPoint.y);
pCmdUI->SetText(strPos);
}

Tout fonctionne très bien mais lorsque je fais scroller ma fenêtre, les
valeurs X et Y de la souris n'augmentent pas !!????
Pourquoi ?



QCM)
tu la fait scroller comment?
a) en deplacant la fenetre pour voir la suite?
b) en utilisant la barre de progression horizontale?
c) en te deplacant dans l'ecran avec une taille plus grande que la
resolution ?
d) rien de tout ca, veuillez specifier ci-dessous


essayez cela :
1) verifie si GetCursorPos() te renvoie pas un 0 significatif d'une erreur
2) met ScreenToClient() en // et verifie les valeurs affichées par
GetCursorPos()
3) pareil avec ScreenToClient()
4) good luck, may the force be with u

--
-----
http://dark.freezee.org/
http://www.dark-team.cjb.net/
Avatar
Olivier
"dark poulpo" a écrit dans le message de
news:4256359f$0$1211$
"Olivier" a écrit dans le message de
news:425569b0$0$15285$
> Bonjour,
>
> Voici mon petit problème :
>
> Je veux créer une fenêtre de document de 340000 par 340000 pixels dans


mon
> application :

t'as pas plus large encore? c'est indiscret si je demande pourqu'elle type
de programme tu as besoin de scroller 2 heures ?
le temps d'arriver d'un bout à l'autre, la batterie de la souris est à
plat!! :-p



C'est pour un systeme d'affichage de coordonnées GPS...


> void CGSMView::OnUpdateMouseY(CCmdUI *pCmdUI)
> {
> pCmdUI->Enable();
> CString strPos;
> POINT lpPoint;
> GetCursorPos(&lpPoint);
> ScreenToClient(&lpPoint);
> strPos.Format("Y = %d", lpPoint.y);
> pCmdUI->SetText(strPos);
> }
>
> Tout fonctionne très bien mais lorsque je fais scroller ma fenêtre, les
> valeurs X et Y de la souris n'augmentent pas !!????
> Pourquoi ?

QCM)
tu la fait scroller comment?
a) en deplacant la fenetre pour voir la suite?
b) en utilisant la barre de progression horizontale?
c) en te deplacant dans l'ecran avec une taille plus grande que la
resolution ?
d) rien de tout ca, veuillez specifier ci-dessous



En fait lorsque je met ma souris à l'extremite gauche de la fenetre g bien
"X = 0" dans la barre d'état,
à l'extremite droite g "X = 1149".
Je deplace la barre de scroll horizontale jusqu'au bout et retrouve les
memes valeurs aux extremites.
Idem pour la barre verticale.



essayez cela :
1) verifie si GetCursorPos() te renvoie pas un 0 significatif d'une erreur
2) met ScreenToClient() en // et verifie les valeurs affichées par
GetCursorPos()
3) pareil avec ScreenToClient()
4) good luck, may the force be with u



Meme problemes....

Merci pour ton aide


--
-----
http://dark.freezee.org/
http://www.dark-team.cjb.net/





Avatar
dark poulpo
> C'est pour un systeme d'affichage de coordonnées GPS...


tu m'ettones john!!!

mais ca sert a quoi davoir une fenetre de 100km si on peu que voir 1km² de
la carte?
parceque si tu cherches une position bien precise sans savoir ou elle se
trouve sur la carte, tu va mettre 2 jours pour la trouver.
se serait pas mieux de faire la carte en taille de la fenetre avec
possibilité de zoomer sur un endroit pour voir un meilleur details? (comme
les logiciels de cartographies ou comme mappy.fr )

En fait lorsque je met ma souris à l'extremite gauche de la fenetre g bien
"X = 0" dans la barre d'état,
à l'extremite droite g "X = 1149".
Je deplace la barre de scroll horizontale jusqu'au bout et retrouve les
memes valeurs aux extremites.
Idem pour la barre verticale.



oué ok, tas les coordonnées de l'ecran (meme probleme que IE pour js),
faudrait que tu puisses (à defaut de trouver mieux) ajouter la valeur de la
barre de progression dans le calcul de la position


--------
http://dark.freezee.org/
http://www.dark-team.cjb.net/
Avatar
Olivier
Merci pour ta réponse...
Voici la solution que g trouvé et ça fonctionne très bien...

void CGSMView::OnUpdateMouseX(CCmdUI *pCmdUI)
{
pCmdUI->Enable();
GetCursorPos(&lpPoint); // Retire la position du
curseur
ScreenToClient(&lpPoint); // Converti les coordonnées
d'écran en coordonnées client
xPos=lpPoint.x;
xPos+T0000;
lpPoint=GetDeviceScrollPosition(); // Retire la position courante
de la barre de scroll
xPos+=lpPoint.x;
strPos.Format("%d", xPos);
strPos.Insert(3,".");
pCmdUI->SetText(strPos);
}


"dark poulpo" a écrit dans le message de
news:4257b2e3$0$1238$
> C'est pour un systeme d'affichage de coordonnées GPS...
tu m'ettones john!!!

mais ca sert a quoi davoir une fenetre de 100km si on peu que voir 1km² de
la carte?
parceque si tu cherches une position bien precise sans savoir ou elle se
trouve sur la carte, tu va mettre 2 jours pour la trouver.
se serait pas mieux de faire la carte en taille de la fenetre avec
possibilité de zoomer sur un endroit pour voir un meilleur details? (comme
les logiciels de cartographies ou comme mappy.fr )

> En fait lorsque je met ma souris à l'extremite gauche de la fenetre g


bien
> "X = 0" dans la barre d'état,
> à l'extremite droite g "X = 1149".
> Je deplace la barre de scroll horizontale jusqu'au bout et retrouve les
> memes valeurs aux extremites.
> Idem pour la barre verticale.

oué ok, tas les coordonnées de l'ecran (meme probleme que IE pour js),
faudrait que tu puisses (à defaut de trouver mieux) ajouter la valeur de


la
barre de progression dans le calcul de la position


--------
http://dark.freezee.org/
http://www.dark-team.cjb.net/