begin process at 2012 05 28 15:24:38
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

MFC

 > 

Changement de couleur de curseur et ajout de ligne de couleur


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Changement de couleur de curseur et ajout de ligne de couleur

lundi 4 mai 2009 à 11:41:08 | Changement de couleur de curseur et ajout de ligne de couleur

ringo44

Bonjour je n'arrive pas à adapter mon code en fonction de cet exemple situé à cette adresse : [ Lien ]

Je voudrais avoir chaque curseur d'une couleur différente et également la ligne de couleur associée au curseur comme dans l'exemple (TrackT1). J'ai essayé de le faire mais je rencontre un problème avec SetColor, pouvez-vous m'aider? Merci.

Mon code :
// Dlg_Demo_Slider.cpp : implementation file
//

#include "stdafx.h"
#include "SliderMultiple.h"
#include "Dlg_Demo_Slider.h"


#include "Utilitaire.h"
#include "XSliderCtrl.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif


int * heure_coupure;

/////////////////////////////////////////////////////////////////////////////
// CDlg_Demo_Slider dialog


CDlg_Demo_Slider::CDlg_Demo_Slider(CWnd* pParent /*=NULL*/)
 : CDialog(CDlg_Demo_Slider::IDD, pParent)
{
 //{{AFX_DATA_INIT(CDlg_Demo_Slider)
 m_SliderValue = _T("");
 m_strHeure = _T("");
 //}}AFX_DATA_INIT
}


void CDlg_Demo_Slider::DoDataExchange(CDataExchange* pDX)
{
 CDialog::DoDataExchange(pDX);
 //{{AFX_DATA_MAP(CDlg_Demo_Slider)
 DDX_Control(pDX, IDC_STATICHEURE, m_StaticHeure);
 DDX_Control(pDX, IDOK, m_OK);
 DDX_Text(pDX, IDC_STATICHEURE, m_strHeure);
 //}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDlg_Demo_Slider, CDialog)
 //{{AFX_MSG_MAP(CDlg_Demo_Slider)
 ON_BN_CLICKED(IDC_BUTTON1, OnMoins)
 ON_BN_CLICKED(IDC_BUTTON2, OnPlus)
 
 //ON_WM_HSCROLL(OnHScroll)


 //}}AFX_MSG_MAP

 ON_WM_HELPINFO()

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDlg_Demo_Slider message handlers

BOOL CDlg_Demo_Slider::OnInitDialog()
{
CDialog::OnInitDialog();
CString strTemp;
m_hTable = LoadAccelerators(AfxGetInstanceHandle(), MAKEINTRESOURCE(ID_DEMO_DEMO ));  // charger les raccourcis clavier propre a la boite de dialogue .

if(nb_slider-7>0)
 largeur_dyna=nb_slider-7;       // Variable permettant de redimensionner la largueur de la plupart des contrôles
else
 largeur_dyna=0;
m_parametres= m_OK.GetParent();


nb_slider=6;

strTemp.Format("%d", nb_slider);
SetDlgItemText(IDC_NBSLIDER,strTemp);

affich_slider();
UpdateData(FALSE);

 //pTool = new CToolTipCtrl();
 //pTool->Create(this,TTS_ALWAYSTIP|TTF_TRACK|TTF_ABSOLUTE|TTF_IDISHWND  );
 //pTool->Create(this, TTF_TRACK|TTF_ABSOLUTE|TTF_IDISHWND  );


return TRUE;
}

/***************************************************************************
       Incrémentation
****************************************************************************/

void CDlg_Demo_Slider::OnMoins()
{
libere_slider();
nb_slider--;
if (nb_slider<1) nb_slider=1;

CString strTemp;

strTemp.Format("%d", nb_slider);
SetDlgItemText(IDC_NBSLIDER,strTemp);

affich_slider();
UpdateData(FALSE);
}

/***************************************************************************
       Décrémentation
****************************************************************************/

void CDlg_Demo_Slider::OnPlus()
{
libere_slider();
nb_slider++;
if (nb_slider>15) nb_slider=15;
CString strTemp;

strTemp.Format("%d", nb_slider);
SetDlgItemText(IDC_NBSLIDER,strTemp);

affich_slider();
UpdateData(FALSE);
}


/**************************************************************************
    Création et Initialisation des Sliders
***************************************************************************/

void CDlg_Demo_Slider::OnOK()
{

 

register int i,j;
CString m_Heure;
for (j=0;j<nb_slider;j++)
 {

 i=(*pSliderCtrl[j]).GetPos();  //position de chaque curseur en mémoire (i)

 m_Heure.Format("%02d:%02d",i/60,i%60);


}


 CDialog::OnOK();
 
}


void CDlg_Demo_Slider::affich_slider()
{
CString strTemp;
int j;

int heure_min, heure_max;

if (!(pSliderCtrl=(CSliderCtrl**)malloc(sizeof(CSliderCtrl*)*nb_slider)))  // réservation mémoire   
 return;
if (!(pWndHeure=(CWnd**)malloc(sizeof(CWnd*)*nb_slider)))  // réservation mémoire   
 return;
if (!(pString=(CString**)malloc(sizeof(CString*)*nb_slider)))  // réservation mémoire   
 return;
if (!(heure_coupure=(int*)malloc(4*nb_slider)))  // réservation mémoire   
 return;


heure_min=1500;heure_max=0;
for (j=0;j<nb_slider;j++)
 {
 heure_coupure[j]=120+(240*j)/nb_slider;
 if (heure_coupure[j]<heure_min)
  heure_min=heure_coupure[j];
 if (heure_coupure[j]>heure_max)
  heure_max=heure_coupure[j];
 }


for (j=0;j<nb_slider;j++)
 {

 RECT rect={20,20,20,20};
 pSliderCtrl[j]=new CSliderCtrl();
 pString[j]=new CString();

 DWORD dwStyle = TBS_NOTICKS | WS_CHILD | WS_VISIBLE | WM_HSCROLL     ;
   

 (*pSliderCtrl[j]).Create(dwStyle|TBS_BOTTOM|TBS_HORZ ,rect, m_parametres,m_OK.GetDlgCtrlID()+(10000+j));

 (*pSliderCtrl[j]).SetWindowPos(&m_OK,120,10+(j*20),175,20,SWP_NOZORDER);
 (*pSliderCtrl[j]).SetRange(0,heure_max-heure_min+160);  // tranche horaire
 (*pSliderCtrl[j]).SetPos(heure_coupure[j]-heure_min+30); //retrait de chq slider pour les différencier
 

 (*pString[j]).Format("%02d:%02d",heure_coupure[j]/60,heure_coupure[j]%60);
 
 
 pWndHeure[j] = new CWnd;
 pWndHeure[j]->Create(_T("STATIC"), *pString[j], WS_CHILD | WS_VISIBLE    ,
       CRect(300, 10+j*20, 380, 30+j*20), this, 1234);
 

/* pWndHeure[j]->DestroyWindow();
 pWndHeure[j]->Create(_T("STATIC"), *pString[j], WS_CHILD | WS_VISIBLE,
       CRect(300, 10+j*20, 380, 30+j*20), this, 1234);
*/
 }

}

/********************************************************************************
      Libération mémoire
********************************************************************************/

void CDlg_Demo_Slider::libere_slider()
{
CString strTemp;         //variable locale
int j;

for (j=0;j<nb_slider;j++)
 {
 delete (pSliderCtrl[j]);
 delete (pWndHeure[j]);
 delete (pString[j]);
 }
free (pSliderCtrl);
free (pWndHeure);
free (pString);
free(heure_coupure);
}

 

/*void CDlg_Demo_Slider::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
    // TODO: Add your message handler code here and/or call default
 
/////////
 for (int j=0;j<nb_slider;j++)
 {
  if(GetDlgItem(10000 + j)== pScrollBar)
  {
   num_active_slider = j;//mémoriser le slider actif
   
  // ((CSliderCtrl*)pScrollBar)->SetToolTips(pTool);
 //pascal : do the work here ======== CSliderCtrl::SetToolTips : Assigns a tooltip control to a slider control.  : void SetToolTips(   CToolTipCtrl* pWndTip );
   break;// on a fini
  }
 }
   // CDlg_Demo_Slider::OnHScroll(nSBCode, nPos, pScrollBar);
}*/

 

/********************************************************************************
                 ²             Actualisation de l'info-bulle lors du déplacement des curseurs
********************************************************************************/

BOOL CDlg_Demo_Slider::OnHelpInfo(HELPINFO* pHelpInfo)
{
 // TODO : ajoutez ici le code de votre gestionnaire de messages et/ou les paramètres par défaut des appels
 return CDialog::OnHelpInfo(pHelpInfo);
}

BOOL CDlg_Demo_Slider::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
{//gestion des notifications d'affichage des tooltip par défaut pour les changer à la volée
 // TODO : ajoutez ici votre code spécialisé et/ou l'appel de la classe de base
     NMHDR* pnmh = (NMHDR*)lParam;
     *pResult = TRUE;
     static bool bReentrant = false;
  int nPos ;

 
if (pnmh->code == TTN_SHOW && !bReentrant)
          {
          bReentrant = true;
    char szText[80] = "";
    TOOLINFO ti;
    memset(&ti, 0, sizeof(ti));
    ti.cbSize = sizeof(ti);
    ::SendMessage(pnmh->hwndFrom, TTM_ENUMTOOLS, 0, (LPARAM)&ti ); //::SendMessage(pnmh->hwndFrom, TTM_GETTOOLINFO, 0, (LPARAM)&ti);
    ti.hinst = AfxGetInstanceHandle();
    ti.lpszText = szText;
    nPos = ::SendMessage(ti.hwnd, TBM_GETPOS, 0, 0);
    // formattage maison ........
    sprintf(szText, "%02d:%02d ", nPos / 60, nPos % 60); //ajout d'espaces pour se décaler du curseur souris
    ::SendMessage(pnmh->hwndFrom, TTM_UPDATETIPTEXT, 0, (LPARAM)&ti);
    bReentrant = false;
    return TRUE;
          }
 return CDialog::OnNotify(wParam, lParam, pResult);
}

 

 

 


 

 

 



Cette discussion est classée dans : heure, nb, slider, demo, cdlg


Répondre à ce message

Sujets en rapport avec ce message

slider et edit box sous visual c++ [ par a-sophie ] j imagine que cela se fait facilement, mais je n arrive pas a faire communiquer un slider et une edit box.par ex le contenu de l edit box change en fo Prendre l'heure du bios [ par JosueClement ] Quelle fonction dois-je utiliser pour prendre l'heure du bios pour pouvoir faire un prog (horloge) ?Avec un exemple ce serait cool !..Josué Clémentjos Comment faire un slider [ par Gundam ] Es-que quelqu'un pourrait me dire comment on fait un slider en m'expliquant ou en mettant un source Problème incompréhensible [ par JosueClement ] Regardez plutot...Ce programme est une sorte d'horloge!Il n'y a aucune erreur de compilation, mais les heures n'augmentent jamais!!A la ligne 54, j'ai nb de seconde ---> COleDateTime [ par owel ] salut !!!!je voudrai savoir comment faire pour convertir un short qui represente un nb de seconde en un COleDateTime ....ou plus simplement si c possi Récupération de la date et heure de cration d'un fichier [ par MELISA ] Bonjour à tousJ'essaie de récupérer la date et heure de création d'un fichier.Existe-t-il déjà une API à intégrer?Merci beaucoup pour votre aide.MELIS Pb avec 'SYSTEM' [ par AtomicREW ] Je vous previens tout de suite mon code est vraiment foireux, j'ai commence le C qu'aujourd'hui et sans doc a proprement dit. J'ai mis la ligne où Dev format de dateet heure [ par tertulia ] comment modifier le format de la date et de l'heure.je m'explique je recupere la date et l'heure grace aux fonctions suivantes _tstrdate(datebuf);_ts [C] lignes d'un fichier dans un tableau : Segmentation fault [ par Michel76 ] Bonjour,Pardonnez-moi de cette question de débutant.Soit un fichier contenant :-----001002-----Je souhaiterais mettre chacune des lignes de ce fichier conversion d'une variable time en seconde [ par kalf2000 ] salut, alor voila je doit récupérer l'heure du système dans une vaiable (ca peu être de type time_t ou tt autre chose) puis convertir cette heure en s


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,607 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales