opengl in dialog box en vc++
Dernière réponse : dans Programmation
bonjours tout le monde,
voilà je developpe en vc++ un programme basé sur boite de dialogue en affichant sur la mm boite de dialogue un objet en 3D en opengl, mais pour manipuler cette objet avec des controles de la boite de dialogue, comme un slider , qui fait varié par exemple un angle de rotation ou une distance pour une translation, j y arrive pas .
bref mon problème si on peut appeler ça bien sur un problème, juste que je manque de pratique et de connaissance. donc je daisais mon probleme est que je n'arrive pas à faire la communication entre mes controles et ma vue
merci pour votre aide
:-(
voilà je developpe en vc++ un programme basé sur boite de dialogue en affichant sur la mm boite de dialogue un objet en 3D en opengl, mais pour manipuler cette objet avec des controles de la boite de dialogue, comme un slider , qui fait varié par exemple un angle de rotation ou une distance pour une translation, j y arrive pas .
bref mon problème si on peut appeler ça bien sur un problème, juste que je manque de pratique et de connaissance. donc je daisais mon probleme est que je n'arrive pas à faire la communication entre mes controles et ma vue
merci pour votre aide
:-(
Autres pages sur : opengl dialog box
Lassé par la pub ? Créez un compte
voilà,
j un projet basé sur une boite de dialogue puis j ajouté une classe basé sur generic CWnd,
et dans cette classe j mets tout dans j besoin pour creer une scene contenant un cube en 3D en utilisant opengl, puis tjrs dans la mm boite dialogue j mets des controles comme le slider et des édit box pour manipuler le cube, la definition des controles j'arrive à la faire mais par exemple associer la valeur du slider reccuper à une autre variable ( par exemple un angle) pour faire une rotation au cube j arrive pas c ça mon problème
merci
j un projet basé sur une boite de dialogue puis j ajouté une classe basé sur generic CWnd,
et dans cette classe j mets tout dans j besoin pour creer une scene contenant un cube en 3D en utilisant opengl, puis tjrs dans la mm boite dialogue j mets des controles comme le slider et des édit box pour manipuler le cube, la definition des controles j'arrive à la faire mais par exemple associer la valeur du slider reccuper à une autre variable ( par exemple un angle) pour faire une rotation au cube j arrive pas c ça mon problème
merci
voilà des brides de code de mon programme mais c juste l'essentiel,
donc comme je l'ai dejà dit c un pprogramme basé sur les boite de dialogue.
ma boite de dialogue à un coté pour afficher la vue du cube en 3D et un coté pour les controles ( sans utiliser le splitter) ,
juste que j ajouté à mon projet une classe COpenGL basé sur generic CWnd, et j fait l'initialisation et la creation de la fenetre dans ma classe dialogue CFastDlg.
en ce qui conserne les controle pour l'instant j esseye avec un slider et un edit box pour afficher la valeur courante du slider , voici comment j fait pour le slider :
je l'ai initialiser dans l'OnInitDialog():
et dans DoDataExchange(CDataExchange* pDX):
ensuite j ajouté un msg windows:
Puis j ajouté à la classe COpenGL une variable mmbre theta , et une fonction membre GetTheta(){ return theta}
Ensuite j esseyé de reccuperer la valeur courante du slider dans la variable theta ,
J ajouté dans OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
et la valeur theta que je dois reccuperer doit me servir à faire une rotation du cube 3D, mais j(arrive pas à faire ça
merci
donc comme je l'ai dejà dit c un pprogramme basé sur les boite de dialogue.
ma boite de dialogue à un coté pour afficher la vue du cube en 3D et un coté pour les controles ( sans utiliser le splitter) ,
juste que j ajouté à mon projet une classe COpenGL basé sur generic CWnd, et j fait l'initialisation et la creation de la fenetre dans ma classe dialogue CFastDlg.
CFastDlg::CFastDlg(CWnd* pParent /*=NULL*/) : CDialog(CFastDlg::IDD, pParent) { //{{AFX_DATA_INIT(CFastDlg) str = _T(""); //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); // construction de la classe m_pDisplay = new COpenGL; }
en ce qui conserne les controle pour l'instant j esseye avec un slider et un edit box pour afficher la valeur courante du slider , voici comment j fait pour le slider :
je l'ai initialiser dans l'OnInitDialog():
CString str; CSliderCtrl *pSlide1 = (CSliderCtrl*) GetDlgItem(IDC_SLIDER1); pSlide1->SetRange(0,100); pSlide1->SetPos(m_nSlider); str.Format("%d", pSlide1->GetPos());
et dans DoDataExchange(CDataExchange* pDX):
if(pDX->m_bSaveAndValidate) { TRACE(" m à j\n"); CSliderCtrl* pSlide1 = (CSliderCtrl*) GetDlgItem(IDC_SLIDER1); m_nSlider=pSlide1->GetPos(); }
ensuite j ajouté un msg windows:
void CFastDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) { CSliderCtrl *pSlide1=(CSliderCtrl*) pScrollBar; CString str; str.Format("%d", pSlide1->GetPos()); SetDlgItemText(IDC_EDIT1,str); GetDlgItem(IDC_EDIT1); CDialog::OnHScroll(nSBCode, nPos, pScrollBar); }
Puis j ajouté à la classe COpenGL une variable mmbre theta , et une fonction membre GetTheta(){ return theta}
Ensuite j esseyé de reccuperer la valeur courante du slider dans la variable theta ,
J ajouté dans OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
// pour reccuperer la valeur courante du slider theta=pSlide1->GetPos(); // pour metre à jours la valeur de theta dans la classe COpenGL m_pDisplay->GetTheta();
et la valeur theta que je dois reccuperer doit me servir à faire une rotation du cube 3D, mais j(arrive pas à faire ça
merci
Lassé par la pub ? Créez un compte