begin process at 2012 05 29 22:14:56
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

Autre

 > 

Probleme sous-classement? [C-Win32]


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

Probleme sous-classement? [C-Win32]

mercredi 11 juillet 2007 à 17:29:23 | Probleme sous-classement? [C-Win32]

fredsor

Membre Club
Bonjour a tous,
Voici mon probleme :
Je lis un fichier txt contenant les infos me permettant de créer mes composants sur ma page.
Ces composants peuvent etre des boutons, possédant un identifiant... Bref je gere ces identifiants, qui font par exemple que si l'utilisiteur appuie sur la touche clavier "Entrée", alors il va simuler le clik sur le bouton possedant comme identifiant "RETURN".
Vous me suivez? Bon voila, cela fonctionne tres bien pour ma premiere page.
J'ai donc voulu simuler maintenant plusieurs page a la suite. Lors d'un clik sur bouton, je "destroy" tous mes composants, je reinitialise mes tableaux et lit un nouveau fichiers txt, qui me permet d'afficher ma deuxieme page
Voici le hic : si dans cette deuxieme page j'ai egalement un bouton avec l'identifiant "RETURN", alors il simule également le clik, sans que je n'ai rappuyer pour autant sur la touche Entrée!!

Autrement dis, si je lis X fichiers contenant chacun un bouton contenant l'identifiant RETURN, alors si j'appuis une premiere fois sur Entrée, tous mes ecrans vont defiler a la suite sans rien faire...

Je ne comprends pas, j'ai essayé en reinitialisant toutes mes variables, ca ne marche toujours pas
J'en appelle donc a votre bonne volonté, merci
jeudi 12 juillet 2007 à 20:27:34 | Re : Probleme sous-classement? [C-Win32]

juju12

Tu devrais mettre un bout de code, notamment là où tu crées les contrôles et là où tu gère le click (enfin la touche clavier du coup), parce que là c'est difficile à voir.
vendredi 13 juillet 2007 à 09:03:30 | Re : Probleme sous-classement? [C-Win32]

fredsor

Membre Club
Pas de souci juju12, merci de répondre je commencais a desesperer!!
Voici ma création de controle :
case WM_CREATE:
{
            for(int i=0;i<GetNombreComposant();i++)
            {
                if(strncmp(GetTableauDescription(i),"B",1)==0)
                {
                    hBtn[i] = CreateWindowEx(
                        0,
                        TEXT("BUTTON"),
                        ConvertAnsiToUnicode(GetContenu(i)),
                        WS_VISIBLE | WS_BORDER | WS_CHILD,
                        atoi(GetAbscisse(i)),
                        atoi(GetOrdonnee(i)),
                        atoi(GetLargeur(i,"B")),
                        atoi(GetHauteur(i,"B")),
                        hWnd,
                        HMENU(ID_BUTTON),
                        hinst,
                        NULL);
          //          OldButtonProc= NULL;
                    OldButtonProc = (WNDPROC) SetWindowLong(hBtn[i], GWL_WNDPROC, (LPARAM)ButtonProc);                                 if(GetFocalisation(i)!=NULL)
                    {
                        boutonPourFocus=hBtn[i];
                    }
                    if(GetCouleur(i)!=NULL)
                    {
                        AttribuerCouleur(i,GetCouleur(i));
                    }
                    else
                    {
                        couleurFond[i]=fondGris;
                        couleurFondTexte[i]=gris;
                        couleurTexte[i]=noir;
                    }                                   
                }
                else
                {
                    hBtn[i]=NULL;
                }
                if(strncmp(GetTableauDescription(i),"E",1)==0)
                {
                    hEdit[i] = CreateWindowEx(
                        0,
                        TEXT("EDIT"),
                        ConvertAnsiToUnicode(GetContenu(i)),
                        WS_VISIBLE | WS_BORDER |  WS_CHILD|WS_TABSTOP,
                        atoi(GetAbscisse(i)),
                        atoi(GetOrdonnee(i)),

Pour t'expliquer un peu cette premiere partir, en fait je fais un parsing d'un fichier "codé" me disant quel composant créer, et j'en extrait les données. Donc si je tombe sur une ligne commencant par "B", je créé un Bouton avec les données requises. Ensuite je fais mon sous classement vers ButtonProc
Voila pourle sous classement par exemple du Bouton :
LRESULT CALLBACK ButtonProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch(message)
    {
        case WM_COMMAND:
        {
            if(LOWORD(wParam) == MYACCEL)
            {
                varGlobale = 1;
                TabulationArriere();
            }
            break;
        }
        case WM_KEYUP:
        {
            EcrireFichierBidon("keyup btnproc");
            if(wParam == VK_TAB)
            {
                if(!varGlobale)
                {
                    GererKeyUp(hwnd,message,wParam,lParam);
                }
                else varGlobale = 0;
            }
            else
            {
                GererKeyUp(hwnd,message,wParam,lParam);
                varGlobale=0;
            }
            break;
        }
        case WM_CHAR: // on gere le cas où une lettre est tapée : on doit vérifier si elle correspond à un bouton (premiere lettre soulignée par exemple)
        {
            EcrireFichierBidon("wmchar btnproc");
            VerifierSiRaccourci(hwnd, message, wParam, lParam);
            break;
        }
        default:
            break;
    }
    return CallWindowProc(OldButtonProc, hwnd, message, wParam, lParam);
}

Dans ce sous classement je gere :
    si une touche est relachee ( genre Entree, alors si le bouton a la focus on simule le clik
    si une touche Char est entree, on verifie si le bouton n'a pas cette lettre de soulignée, auquel cas on simule egalement le clik
    etc...
J'ai ainsi fait sur le meme principe un sous classement pour mes editbox, mes listbox et le WndProc général, si le focus est nulle part...
Et donc le souci, c'est que si j'appui sur un bouton pouvant etre utile également au deuxieme écran, il semble croire que j'appui également sur ce bouton une deuxieme fois..
J'espere que tu auras compris mes explications au combien claires ^^

Pour info, j'ai essayé d'initialiser toutes mes procedures de sous classement avant la création de l'ecran suivant, genre :
EditProc(NULL,NULL,NULL,NULL);
    WndProc(NULL,NULL,NULL,NULL);
    ListBoxProc(NULL,NULL,NULL,NULL);
    ButtonProc(NULL,NULL,NULL,NULL);
    GererKeyUp(NULL,NULL,NULL,NULL);
    VerifierSiRaccourci(NULL,NULL,NULL,NULL);


Et meme essayé de mettre le MSG capté a NULL( ca c'est ptet pas terribl je l'avoue) :
    msg.hwnd=NULL;
    msg.lParam=NULL;
    msg.message=NULL;
    msg.time=NULL;
    msg.wParam=NULL;

Voilou, je ne sais plus quoi faire!!
 

vendredi 13 juillet 2007 à 15:48:58 | Re : Probleme sous-classement? [C-Win32]

fredsor

Membre Club
Réponse acceptée !
Résolu!
Désolé d'avoir fait perdre du temps avec un problème venant de mon code...
Lorsque je gérais la touche "Entrée" par exemple, je parcourais tout le tableau pour savoir si un composant possédais la touche "Entrée" comme parametre, et si je le trouvais alor je lancais l'action "cliquer sur le bouton"... mais je n'arretais pas la boucle, disant que le bouton était trouvé et donc que je pouvais m'arreter de boucler sans cesse...
Bon je ne suis pas clair?
Toujours est-il qu'avec un petit booleen , tout ceci rentre dans l'ordre
Merci a toi juju12 d'avoir pris le temps de t'intéresser a mon probleme, qui je l'avoue ne donne pas tres envie a quiconque de se plonger dedans
Merci, j'adore ce site!!!


Cette discussion est classée dans : bouton, page, probleme, contenant, identifiant


Répondre à ce message

Sujets en rapport avec ce message

Probleme pour faire apparaitre un message tip [ par blork ] Salut !J'aimerai savoir comment faire pour que lorsque l'on place la souris sur un bouton par ex, il y ai un petit rectangle jaune qui apparaisse ou l Probleme C++Builder, gestion de boutons etc. [ par FXL ] Bonjour a tous, je vous écris car j'ai un projet de licence a réaliser qui consiste a faire une interface graphique, créer un petit logiciel simple et Probleme: controls (bouton et autres) visibles mais non cliquable [ par weexity ] j'utilise une appli SDI   Dans la classe CChildView j'ai comme attribut 4 Classe differentes personnelles derivé chacune de CDialog.  En gros, ce sont probleme d'affichage d'une icone dans un bouton (MFC) [ par MadNomad53 ] J'ai un souci pour afficher une icone dans un bouton. J'arrive a afficher une icone standard (genre logo windows) mais quand c'est ma propore icone ca Multitache pour un ihm [ par mr_alicia ] Voilà j'ai fait un ihm avec les bibliotheque QT, pour piloter un robot. Le probleme est de rendre cette ihm multitache. j'explike le probleme :)Quand probleme avec changement du texte d'un bouton [ par chriscrepin1 ] mon probleme je veux passer a une boite dialogue le texte d'un bouton a partir de ma fenetre mere je creer un objet de ma second fenetre j'appelle la Probleme d'image sur un bouton [ par DraaFil ] Bonjour,j'ai trouver un bout de code qui me permet de mettre une image (bmp) sur le bouton. le probleme c'est que je ne sais pas dans quel class et fo probleme html [ par istase ] J'ai un petit probleme : je voudrai à partir d'un bouton se trouvant dans un formulaire en html faire appel au magnétophone de windows...c le lien c:W Probleme affichage de page [ par ralebole ] J'ai un petit probleme avec les pages de cppfrance. Depuis peu à chaque fois que j'ouvre une page sur cppfrance et sur tout code sources mes pas sur l Probleme de bouton en C [ par yohan49 ] Salut les gars , vous pouvez me donner l'astuce pour pouvoir afficher un bouton avec icone + text ,ca fait des jour que je cherche et le resultat est


Nos sponsors


Sondage...

Comparez les prix

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 : 0,842 sec (4)

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