Afficher une image après l'appui d'un bouton poussoir

grandfrancis Messages postés 12 Date d'inscription vendredi 24 février 2006 Statut Membre Dernière intervention 14 mars 2006 - 14 mars 2006 à 12:18
Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 - 14 mars 2006 à 14:22
Salut, j'aimerais afficher plusieurs images après l'appui de boutons via une carte d'acquisition.
J'ai installé un timer qui scrute les entrées toutes les 20ms, pour que lorsque j'appui sur le bouton poussoir une image s'affiche.
Mais sa marche pas, le timer fonctionne (j'ai testé avec un messagebeep), normalement l'acquisition fonctionne (j'ai testé auparavant), jpense que j'ai un problème de code: je dois retourner la valeur (1 ou 0 du bouton) que je lis dans Ontimer, j'ai mis return val1 (type unsigned long) et je voudrais récupérer cette valeur dans onpaint avec un switch(val1) case 1 afficher image1
case 2 afficher image2
G aucune erreur de compilation mais aucune image n'apparait après l'appui....

Voilà merci pour vos aides. (si possible détaillées car je commence...)

6 réponses

TheSaib Messages postés 2367 Date d'inscription mardi 17 avril 2001 Statut Membre Dernière intervention 26 décembre 2007 23
14 mars 2006 à 12:26
Un bout de code pour nous aider ...

::|The S@ib|::
MVP C#.NET
0
grandfrancis Messages postés 12 Date d'inscription vendredi 24 février 2006 Statut Membre Dernière intervention 14 mars 2006
14 mars 2006 à 12:39
//Prototypes

void afficherI2S1(CPaintDC * phdcI2S1);
long val1=0;


BEGIN_MESSAGE_MAP(CBouteillesDlg, CDialog)
//{{AFX_MSG_MAP(CBouteillesDlg)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_WM_DESTROY()
ON_WM_TIMER()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()



BOOL CBouteillesDlg::OnInitDialog()
{
CDialog::OnInitDialog();

SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon

// installation d'une minuterie système
int minuterie;
minuterie=SetTimer(1,20,NULL);
if (minuterie==0)
{
MessageBox("la minuterie ne peut être installée");
}
return TRUE; // return TRUE unless you set the focus to a control
}

/////////////////////////////////////////////////////////////////////////////
// Fonction OnPaint ////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////

void CBouteillesDlg::OnPaint()
{
CPaintDC* phdcI2S1=0; //pointeurs sur la clase
CPaintDC hdc(this);
phdcI2S1=&hdc;

//cas d'affichage

switch(val1)
{
case 1 : //bouton start solo pupitre1

{ afficherI2S1(phdcI2S1);
}
break;}


void afficherI2S1(CPaintDC * phdcI2S1)
{

HBITMAP bit;
BITMAP bitmap;
HBITMAP bit1;
BITMAP bitmap1;

bit= (HBITMAP) LoadImage(NULL, "ECRAN invi solo.bmp", IMAGE_BITMAP,0,0, LR_DEFAULTSIZE|LR_LOADFROMFILE);
GetObject(bit, sizeof(BITMAP), &bitmap);
int surf_width = bitmap.bmWidth;
int surf_height = bitmap.bmHeight;
HDC bit_dc = CreateCompatibleDC(*phdcI2S1);
SelectObject(bit_dc, bit);

bit1= (HBITMAP) LoadImage(NULL, "ECRAN invi duo.bmp", IMAGE_BITMAP,0,0, LR_DEFAULTSIZE|LR_LOADFROMFILE);
GetObject(bit1, sizeof(BITMAP), &bitmap1);
int surf_width1 = bitmap1.bmWidth;
int surf_height1 = bitmap1.bmHeight;
HDC bit1_dc = CreateCompatibleDC(*phdcI2S1);
SelectObject(bit1_dc, bit1);


StretchBlt(*phdcI2S1, 1025,0, 1024,768 , bit_dc, 0,0,surf_width,surf_height, SRCCOPY);

DeleteDC(bit_dc);//Suppression du DC Memoire du Bitmap
DeleteObject(bit);
}


void CBouteillesDlg::OnDestroy()
{
CDialog::OnDestroy();
KillTimer(1);
// TODO: Add your message handler code here
}

int CBouteillesDlg::OnTimer(UINT nIDEvent)
{
CDialog::OnTimer(nIDEvent);
//MessageBeep((WORD)-1);

//lecture du port 6
unsigned long val=0;
val1=EDRE_DioRead(1000006578,6,&val);
return val1;
}
0
grandfrancis Messages postés 12 Date d'inscription vendredi 24 février 2006 Statut Membre Dernière intervention 14 mars 2006
14 mars 2006 à 12:40
voila j'ai essayer d'enlever le code qui servait à rien
mais bon sa reste assez lourd à lire
merci quand meme
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
14 mars 2006 à 12:51
Salut,
Ce n'est en tout cas pas du C#, tu devrais plutot aller demander sur les forums de cppfrance

-> www.cppfrance.com


Mx
MVP C#
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
grandfrancis Messages postés 12 Date d'inscription vendredi 24 février 2006 Statut Membre Dernière intervention 14 mars 2006
14 mars 2006 à 14:11
Pourquoi c pas du c++???
0
Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 13
14 mars 2006 à 14:22
C'est du C++.
Ce n'est pas du C#.

Ce forum est dédié au C#.
Tu aura donc plus de chance de trouver de l'aide sur un forum dédié au C++... en suivant le lien de MorpionMx :)
0
Rejoignez-nous