IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

[debutant] Window n'apparait pas!


Sujet :

Windows

  1. #1
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    556
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 556
    Points : 588
    Points
    588
    Par défaut [debutant] Window n'apparait pas!
    Bijour ici,

    en fait, j'ai un problème.
    C'est le premier programme Win32 que je fais alors allez y molo siouplé

    Venons on au prob :

    Dans une Box, quand je fais un while, ben la box n'apparait pas, mais j'ai bien le prog dans la liste des processus...

    Voici le code complet de mon prog :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    #include <windows.h>
    #include <lmcons.h>
    #include <stdio.h>
    #include <stdlib.h>
    
    #include "resource.h"
    
    
    //-----------------------------------------------------------------------------
    // Definitions
    //-----------------------------------------------------------------------------
    #define WINDOWS_CLASS	"TestProg"
    #define WINDOW_TITLE	"Test Prog"
    
    //-----------------------------------------------------------------------------
    // Variables global
    //-----------------------------------------------------------------------------
    LRESULT CALLBACK InfoDlgProc&#40;HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam&#41;;
    void LoaderMain&#40;HWND hDlg&#41;;
    
    //-----------------------------------------------------------------------------
    // Name&#58; WinMain&#40;&#41;
    // Desc &#58; Entre du programme, recherche des driver et afiichage des infos 
    //-----------------------------------------------------------------------------
    int WINAPI WinMain&#40;HINSTANCE hInstance,
    				   HINSTANCE hPrevInstance,
    				   LPSTR lpCmdLine,
    				   int NshowCmd&#41;
    &#123;
    
    	DialogBox&#40;hInstance, MAKEINTRESOURCE&#40;IDD_LOADER&#41;, GetDesktopWindow&#40;&#41;, &#40;DLGPROC&#41; InfoDlgProc&#41;;
    
    	return 0;
    &#125;
    
    LRESULT CALLBACK InfoDlgProc&#40;HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam&#41;
    &#123;
        static int      iCurrent = 0;
        static DWORD    dwHost = 0;
    
        switch &#40;uMsg&#41;
        &#123;
    		case WM_INITDIALOG&#58;
                LoaderMain&#40;hDlg&#41;;
                return TRUE;
    
            case WM_COMMAND&#58;
                switch &#40;HIWORD&#40;wParam&#41;&#41;
                &#123;
                    case BN_CLICKED&#58;
                        switch &#40;LOWORD&#40;wParam&#41;&#41;
                        &#123;
    					case IDC_CLOSE&#58;
    						EndDialog&#40;hDlg, 0&#41;;
    						break;
    
    					case IDC_ABOUT&#58;
    						MessageBox&#40;hDlg, "Mon premier prog win32!", "About ...", MB_OK&#41;;
    						break;
    					&#125;
    			&#125;
    
                break;
        &#125;
    
        return FALSE;
    &#125;
    
    
    void LoaderMain&#40;HWND hDlg&#41;
    &#123;
    	int x = 1;
    	int y = 2;
    	while&#40;x != y&#41;
    	&#123; 
    		Sleep&#40;5&#41;;
    		SetDlgItemText&#40;hDlg, IDC_WHAT, "X AND Y ARE DIFFERENT"&#41;;
    	&#125; 
    
    &#125;
    Voilà, en fait, là, ca ne run même pas le programme, bien que je le vois dans la liste des processus. (en fait je ne vois pas la fenetre)

    Moi je voudrai donc que ca run le programme, que je vois la fenetre et que ca me marque indéfiniment X AND Y ARE DIFFERENT, ou jusqu'a ce qu'à un moment Y devienne 1, ou qu'X devienne 2.

    J'espere que vous avez compris

    Perso j'ai cherché pendant 4 heures et rien trouvé

    Merci d'avance

    Edit : Je programme sous Visual C++ 6 sous XP

  2. #2
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Salut,
    il ne faut pas créer une boucle avec TranslateMessage ou quelque chose dans ce genre là pour envoyer les messages à ta fenetre :

  3. #3
    Membre expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Points : 3 369
    Points
    3 369
    Par défaut
    Il te manquerait pas toute la boucle des messages et la création de la fenêtre ?
    Sans ça, tu vas pas aller loin

    Il faudrait lire des tutos...

    A+

  4. #4
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 752
    Points : 10 683
    Points
    10 683
    Billets dans le blog
    3
    Par défaut
    Il utilise DialogBox donc pas besoin.
    Tu appelles LoaderMain lors de WM_INITDIALOG, soit avant que ta dialog ne soit visible.
    les boucles sans fin et les sleep c'est pas la bonne méthode.
    Crée un timer lors de WM_INITDIALOG et fais ton SetDlgItemText lors de WM_TIMER.

  5. #5
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    556
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 556
    Points : 588
    Points
    588
    Par défaut
    Merci du conseil Aurelien j'vais vite tester ca

  6. #6
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    556
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 556
    Points : 588
    Points
    588
    Par défaut
    Bon j'ai refait tout mon code mais là j'ai un second prob

    En effet, au moment où il affiche "X AND Y ARE DIFFERENT", ben le logiciel ne répond plus
    (Oui, oui, il écrit bien X AND Y ARE DIFFERENT)

    Si je met pas de Sleep(5), ben ca écrit et réecrit encore et encore le X AND Y ... (clignote quoi)...
    Par contre si je met le Sleep(5), ben là ca répond plus -_-

    Idée?

    Michi d'avance

  7. #7
    Nouveau membre du Club
    Inscrit en
    Octobre 2002
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 42
    Points : 25
    Points
    25
    Par défaut
    qi tu cré un timer, utilise WM_TIMER. A ce moment la, Sleep n a plus besoin d etre. en plus je crois que Sleep "fige" ta fenetre donc c pas la bonne methode. Le mieux comme on te l a dit c est le timer.
    Bonne soiree

  8. #8
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 752
    Points : 10 683
    Points
    10 683
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par Aurelien.Regat-Barrel
    les boucles sans fin et les sleep c'est pas la bonne méthode.
    Crée un timer lors de WM_INITDIALOG et fais ton SetDlgItemText lors de WM_TIMER.

  9. #9
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    556
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 556
    Points : 588
    Points
    588
    Par défaut
    Re,

    Ben merci, j'ai testé mais ca me fait toujours la même chose
    A croire que j'y arriverai jamais

    En fait, là j'essai quelque chose d'autre

    un FindWindow en fait ^^

    Comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while&#40;!hWnd&#41;
    &#123;
        hWnd = FindWindow&#40;NULL, "Poste de travail"&#41;;
    &#125;
    et que j'y mette un Sleep(int) ou un Timer, ca me fait idem : utilise 99% du CPU...

  10. #10
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 752
    Points : 10 683
    Points
    10 683
    Billets dans le blog
    3
    Par défaut
    Enlève tous tes while. On n'est pas sous DOS, tout le temps que tu passes dans un while pendant ce temps la fenêtre ne répond plus.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FindWindow&#40;NULL, "Poste de travail"&#41;;
    C'est quoi le but ?

  11. #11
    Nouveau membre du Club
    Inscrit en
    Octobre 2002
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 42
    Points : 25
    Points
    25
    Par défaut
    j vois pas du tout pkoi tu utilise un FindWindow ???
    Si tu veux faire un timer le seul moyen c est avec SetTimer que tu met dans WM_INITDIALOG. Ensuite tu geres toutes les x secondes ton code dans WM_TIMER.

  12. #12
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 752
    Points : 10 683
    Points
    10 683
    Billets dans le blog
    3
    Par défaut
    Je crois qu'il cherche à avoir un handle sur une fenêtre Explorer ouverte sur le poste de travail. Mais pour faire quoi...

  13. #13
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    556
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 556
    Points : 588
    Points
    588
    Par défaut
    Je fais des tests en fait, et le FindWindow c'est juste un test (par exemple pour modifier le nom de volume du C:, ou modifier le nom du pc, etc)

    Et pour le Timer, ca me donne le même résultat que le while (Ne répond plus)

  14. #14
    Nouveau membre du Club
    Inscrit en
    Octobre 2002
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 42
    Points : 25
    Points
    25
    Par défaut
    Si tu pouvais mettre ton code avec le timer pour que l on puisse voir de quoi il s agit
    Bonne journée

  15. #15
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 752
    Points : 10 683
    Points
    10 683
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par JulienDuSud
    Je fais des tests en fait, et le FindWindow c'est juste un test (par exemple pour modifier le nom de volume du C:, ou modifier le nom du pc, etc)
    Je vois pas trop le rapport entre FindWindow et le nom du PC ou du volume.
    Et pour le Timer, ca me donne le même résultat que le while (Ne répond plus)
    Pareil que DalKiT, sans code on va pas aller très loin.

  16. #16
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    556
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 556
    Points : 588
    Points
    588
    Par défaut
    Bon je m'y suis pris comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    // Test.cpp &#58; Defines the entry point for the application.
    //
    
    #include "stdafx.h"
    #include "resource.h"
    
    // Declaration des differentes dialogs
    LRESULT CALLBACK MainProc&#40;HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam&#41;;
    
    // Declaration pour la fonction Search
    HWND hWnd;
    void Search&#40;HWND hDlg&#41;;
    
    // Entrée du programme
    int APIENTRY WinMain&#40;HINSTANCE hInstance,
                         HINSTANCE hPrevInstance,
                         LPSTR     lpCmdLine,
                         int       nCmdShow&#41;
    &#123;
    
    	DialogBox&#40;hInstance, MAKEINTRESOURCE&#40;IDD_MAIN&#41;, GetDesktopWindow&#40;&#41;, &#40;DLGPROC&#41; MainProc&#41;; 
    
    	return 0;
    &#125;
    
    // Dialog principale
    LRESULT CALLBACK MainProc&#40;HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam&#41;
    &#123;
    	int Select;
    	switch&#40;uMsg&#41;
    	&#123;
    	case WM_COMMAND&#58;
    		Select=LOWORD&#40;wParam&#41;;
    		switch&#40;Select&#41;
    		&#123;
    		case IDCANCEL&#58;
    			EndDialog&#40;hDlg,Select&#41;;
    			PostQuitMessage&#40;0&#41;;
    			return TRUE;
    		case IDC_SEARCH&#58;
    			Search&#40;hDlg&#41;;
    			return TRUE;
    		&#125;
    	case WM_TIMER&#58;
    		hWnd = FindWindow&#40;NULL,"Poste de travail"&#41;;
    		if &#40;hWnd&#41;
    		&#123;
    			SetDlgItemText&#40;hDlg, IDC_WHAT, "Trouvé"&#41;;
    		&#125;
    		else
    		&#123;
    			SetDlgItemText&#40;hDlg, IDC_WHAT, "Recherche"&#41;;
    		&#125;
    		return TRUE;
    	default&#58;
    		return FALSE;
    	&#125;
    &#125;
    
    // Fonction Search &#40;Test de findwindow&#41;
    void Search&#40;HWND hDlg&#41;
    &#123;
    	SetTimer&#40;hDlg, NULL, 1000, NULL&#41;;
    &#125;
    Mais bon, c'est pas propre, sachant que je set le Timer à un endroit que j'aime pas, et que je met la recherche dans un endroit que j'aime pas non plus, donc...

    Vous auriez pas une autre idée de placement?

    Mais au moins, là je n'ai plus de (Pas de réponse)
    Merci beaucoup pour ca déjà

  17. #17
    Nouveau membre du Club
    Inscrit en
    Octobre 2002
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 42
    Points : 25
    Points
    25
    Par défaut
    met ton settimer dans WM_INITDIALOG
    Ensuite cré une variable globale int count = 0;
    Puis dans WM_TIMER
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    case WM_TIMER&#58;
    switch&#40;count&#41;
    &#123;
    case 0&#58;
        SetDlgItemText&#40;hDlg, IDC_WHAT, "count 0"&#41;; 
        break;
    case 1&#58;
        SetDlgItemText&#40;hDlg, IDC_WHAT, "count 1"&#41;; 
        break;
    case 2&#58;
        SetDlgItemText&#40;hDlg, IDC_WHAT, "count 2"&#41;; 
        break;
    &#125;
    count++;
    &#125;
    Avec ca tu verras si ton timer fonctionne bien ou non.
    Bonne journée

    [Balises [code] ajoutées par ARB, merci d'y penser]

  18. #18
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    556
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 556
    Points : 588
    Points
    588
    Par défaut
    Ben oui, oui il fonctionne!

    Mais je préfère placer tout ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    hWnd = FindWindow&#40;NULL,"Poste de travail"&#41;;
          if &#40;hWnd&#41;
          &#123;
             SetDlgItemText&#40;hDlg, IDC_WHAT, "Trouvé"&#41;;
          &#125;
          else
          &#123;
             SetDlgItemText&#40;hDlg, IDC_WHAT, "Recherche"&#41;;
          &#125;
    En dehors de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LRESULT CALLBACK MainProc&#40;HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam&#41;
    Possible?

  19. #19
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    556
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 556
    Points : 588
    Points
    588
    Par défaut
    Ok c'est bon j'ai trouvé ^^

  20. #20
    Nouveau membre du Club
    Inscrit en
    Octobre 2002
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 42
    Points : 25
    Points
    25
    Par défaut
    bon c est cool alors
    Bon coding

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Problème de dualboot windows n'apparait pas dans le grub
    Par céforminux dans le forum Linux
    Réponses: 3
    Dernier message: 12/02/2011, 03h40
  2. Service Windows n'apparait pas dans la liste
    Par Invité dans le forum C#
    Réponses: 3
    Dernier message: 04/11/2009, 11h49
  3. [Debutant] [Windows] livre programmation windows
    Par orelero dans le forum Windows
    Réponses: 8
    Dernier message: 11/02/2005, 13h32
  4. [Q] que faire quand un plugin n'apparait pas dans eclipse
    Par zolive dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 30/08/2004, 23h38
  5. Réponses: 4
    Dernier message: 15/01/2004, 22h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo