Changer la fenetre principale d'une SDI [VISUAL C++] - C++ - Programmation
Marsh Posté le 29-03-2003 à 16:56:49
Question idiote le S c'est pas pour single et mdi pour multiple?
Ou alors ça ne fonctionne pas comme VB6.
Marsh Posté le 29-03-2003 à 17:08:19
ouyi, en effet c pour Single. on n'en veut pas plusieurs ....
notre probleme est que l'on aimerait juste remplacer la fenetre principale du sdi (en dessous du menu) par une autre...
Marsh Posté le 29-03-2003 à 17:17:55
Pourquoi l'avoir si c'est pour la remplacer.
Je ne connais quasiment pas vc++ mais si tu as besoin que d'une form tu la crée avec l'assistant.
Tu cherches à faire une boite de dialogue ou quelque chose de plus compliqué ?
Marsh Posté le 29-03-2003 à 17:23:38
Je viens d'essayer et apparement il faut:
Créer un new projet sdi.
Ajouter une dialog box c'est çà?
Sinon si c'est un petit projet, au lieu de choisir sdi ou mdi il existe dialog.
Marsh Posté le 29-03-2003 à 17:26:40
amsterdam a écrit : Je viens d'essayer et apparement il faut: |
c'est ca, on aimerai remplacer la dialog box qui s'affiche de base par une autre....mais on ne trouve pas la fonction qui permettrait de remplacer la premiere dialog box par une autre...
Marsh Posté le 29-03-2003 à 17:27:52
oui, c ca...maintenant, par exemple, creer un bouton sur la premiere dialog ki par exemple remplacera celle-ci par une autre dialog
Marsh Posté le 29-03-2003 à 17:30:26
Donc tu as une première form avec un bouton et tu veux afficher via un show la deuxième form en cliquant.
En VB c'est justement show donc regarde si il y a qque chose d'approchant en vc++.
Marsh Posté le 29-03-2003 à 17:36:50
amsterdam a écrit : Donc tu as une première form avec un bouton et tu veux afficher via un show la deuxième form en cliquant. |
y'a :
BOOL Create( LPCTSTR lpszTemplateName, CWnd* pParentWnd = NULL );
BOOL Create( UINT nIDTemplate, CWnd* pParentWnd = NULL );
et :
BOOL ShowWindow
( HWND hWnd, // handle to window
int nCmdShow // show state of window ) ;
mais impossible de compiler l'une ou l'autre, on a pas vraiment compris ce qu'etaient : LPCTSTR lpszTemplateName, CWnd* pParentWnd, UINT nIDTemplate et HWND hWnd, dc en fait c pas gagné.....
Marsh Posté le 29-03-2003 à 17:40:03
Désolé mais là je passe la main au pros de la prog zindows.
Désolé mais srti de VB y am une grosse quiche.
Sinon tu as cherché des tutos sur vc++6 sur le net?
Marsh Posté le 30-03-2003 à 14:33:34
harrysauce a écrit : |
MFC Library Reference
Citation : CDialog::Create |
A+,
Marsh Posté le 30-03-2003 à 15:53:10
gilou a écrit :
|
Merci, mais en fait c'est pas des CDialog qu'on doit créer mais des CFormView, et la la syntaxe n'est plus du tout la meme, y'a 5-6 arguments a passer et j'y capte plus grand chose.....
Marsh Posté le 30-03-2003 à 16:09:19
Je viens d'essayer ca :
Code :
|
mais ca marche pas, ca compile mais qd on clique sur le bouton il ne se passe rien
J'ai 2 dialog, une de type CFormView (la premiere, créée par visual) et une autre de type CDialog (la classe dérivée est "fen2" ).
L'ID de la seconde est IDD_DIALOG2
Le code au dessus est éxecuté qd on clique sur un bouton de la premiere Dialog (la CFormView)
Marsh Posté le 30-03-2003 à 22:10:37
Euh ta fenetre a creer c une dialog ? Si oui euh pkoi new CWnd ?
Pour faire simple:
1 - cree une ressource dialog ds les ressources (a priori tu as deja fait)
2 - ClassWizard > cree une classe associee a la nvelle dialog derivant de type CDialog
3 - dans le code de ton button qui doit affucher la dialog
Code :
|
Maintenant si tu veux une boite de dialog qui bloque pas ta SDI/MDI/Dlg derriere faut faire pareil sauf que passe par une thraed qui creera la dlg en elel meme.
Marsh Posté le 31-03-2003 à 03:55:29
VisualC++ a écrit : Euh ta fenetre a creer c une dialog ? Si oui euh pkoi new CWnd ?
|
voui mais la si on bouge la fenetre de derriere ca va laisser celle qu'on vient de créer par dessus a sa place originelle, spa terrible...
Marsh Posté le 31-03-2003 à 10:29:16
Bah deja si t t plus explicite ds ta question aussi
Car la si je te comprend tu voudrais qu en plus ta dlg ouverte soit positionne vis a vis du cframewnd de ta fenetre originale.
Donc la si tu veux faire ca, c'est pa une dlg qu il te faudrait mais une nouvelle cformview, enfin la comem ca en regardant rapidement.
Marsh Posté le 31-03-2003 à 12:27:59
VisualC++ a écrit : Bah deja si t t plus explicite ds ta question aussi |
Oui moi aussi, j'avais pas compris avec ses histoires de dialog alors qu'il s'agit en fait de CFormView.
lapiou> Si tu veux switcher plusieurs CFormView dans une appli SDI, c'est expliqué ici :
http://www.codeguru.com/doc_view/ScreenSwitch.shtml
Marsh Posté le 29-03-2003 à 16:17:20
Comment changer la fenetre de fond d'une SDI? On a vu qu'il fallait créer une dialog, la mettre en "child", mais ensuite, ca bloque...
Comment faire pour remplacer la principale par notre nouvelle dialog???