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

WinDev Discussion :

[WD10] Curseurs souris (SOLUTION)


Sujet :

WinDev

  1. #1
    Inactif  
    Profil pro
    Inscrit en
    Février 2003
    Messages
    4 341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 4 341
    Points : 5 953
    Points
    5 953
    Par défaut [WD10] Curseurs souris (SOLUTION)
    Bonjour,

    Voila, je voudrais savoir s'il est possible, et si oui comment , de changer les curseurs par défaut dans toute l'application.

    Je sais que je peux définir les curseurs pour les champs, et même les fenêtres, mais ça veut dire, "le faire en conception à chaque champs et chaque fenêtre" avec le risque d'oublier, bien évidemment.

    En plus, ça ne me satisfera pas dans tout les cas (redimensionnement, Drag'nDrop, ...) et également avec la procédure "Sablier" !

    Bref, y-a-t-il un moyen avec Windev (v10) de modifier les curseurs souris pour toute l'application !
    Je sais qu'en Delphi c'est possible, mais en Windev ?

    Si quelqu'un l'a déjà fait, ou sait comment faire...
    Merci

  2. #2
    Membre chevronné
    Avatar de mogwai162
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 376
    Points : 1 860
    Points
    1 860
    Par défaut
    Via des APIs alors
    Patrick Catella

    Je ne réponds pas aux messages privés si ceux ci suivent un sujet. Il est préférable pour tous de poursuivre la discussion dans le sujet d'origine.

    Je suis Concepteur développeur Windev (10 ans) et Windev mobile (4 ans) en recherche d'emploi. J'etudie toute proposition

  3. #3
    Inactif  
    Profil pro
    Inscrit en
    Février 2003
    Messages
    4 341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 4 341
    Points : 5 953
    Points
    5 953
    Par défaut
    Ouaip ! C'est ce que je pense aussi !

    J'ai trouvé les APIs suivantes

    LoadCursor : qui permet de récupérer un curseur (systeme, par exemple)
    LoadCursorFromFile : Ben ça semble evident
    SetSystemCursor : qui permet de changer un curseur system.

    Je bloque pour le moment sur la 1ère étape (ca commence bien ).

    Syntaxe de LoadCursor
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    HCURSOR LoadCursor(
     
        HINSTANCE hInstance,    // handle of application instance
        LPCTSTR lpCursorName     // name string or cursor resource identifier  
       );
    Dans le lpCursor on peut spécifier une ressource systeme comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MAKEINTRESOURCE(IDC_WAIT)
    dans le cas du sablier !

    Le problème c'est MAKEINTRESOURCE ! Je ne sais pas comment l'interpréter en Windev !

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Février 2003
    Messages
    4 341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 4 341
    Points : 5 953
    Points
    5 953
    Par défaut [SOLUTION] Pour changer un curseur systeme
    Bon, voila, j'ai trouvé alors je met la solution, si ça peut interresser quelqu'un !
    L'exemple change le "sablier".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    //Déclaration globales du Projet
        hc_SysWait        est un entier            //Handle du curseur souris IDC_WAIT
        hc_CopyWait      est un entier           //On a besoin d'en garder une copie
        hc_NewWait        est un entier            //Mon curseur d'Attente
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    //Dans l'init du projet
    hc_SysWait = AppelDLL32( "user32", "LoadCursorA", 0, IDC_WAIT) //Curseur Wait
    SI hc_SysWait = Null ALORS
        Erreur( "Erreur de chargement du curseur système")
    SINON
        hc_CopyWait = AppelDLL32( "user32", "CopyImage", hc_SysWait, IMAGE_CURSOR, 0, 0, LR_COPYFROMRESOURCE)
        hc_NewWait = AppelDLL32("user32", "LoadCursorFromFileA" , cp_FichierCurseur)
        SI hc_NewWait <> Null ALORS
            SI AppelDLL32("user32", "SetSystemCursor" , hc_NewWait, OCR_WAIT) = 0 ALORS  //Curseur Wait
                Erreur( "Erreur de changement de curseur")
            FIN
        FIN
    FIN
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    //Code de Fin de Projet
    SI hc_CopyWait <> Null ALORS
        AppelDLL32("user32", "SetSystemCursor" , hc_CopyWait, 32514)
        AppelDLL32( "user32", "DestroyCursor", hc_CopyWait)
    FIN
    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
     
    //Les constantes utilisées : (Source Microsoft - MSDN)
    constant
      //Ressources
      IMAGE_BITMAP        = 0
      IMAGE_ICON          = 1
      IMAGE_CURSOR        = 2
      IMAGE_ENHMETAFILE   = 3
     
      //Flags de Copie
      LR_DEFAULTCOLOR     = 0x0000
      LR_MONOCHROME       = 0x0001
      LR_COLOR            = 0x0002
      LR_COPYRETURNORG    = 0x0004  
      LR_COPYDELETEORG    = 0x0008
      LR_LOADFROMFILE     = 0x0010
      LR_LOADTRANSPARENT  = 0x0020
      LR_DEFAULTSIZE      = 0x0040
      LR_VGACOLOR         = 0x0080
      LR_LOADMAP3DCOLORS  = 0x1000
      LR_CREATEDIBSECTION = 0x2000
      LR_COPYFROMRESOURCE = 0x4000
      LR_SHARED           = 0x8000
     
      //Ressources Curseurs Standard
      IDC_ARROW           = 32512
      IDC_IBEAM           = 32513
      IDC_WAIT            = 32514
      IDC_CROSS           = 32515
      IDC_UPARROW         = 32516
      IDC_SIZE            = 32640 // OBSOLETE: use IDC_SIZEALL 
      IDC_ICON            = 32641 // OBSOLETE: use IDC_ARROW 
      IDC_SIZENWSE        = 32642
      IDC_SIZENESW        = 32643
      IDC_SIZEWE          = 32644
      IDC_SIZENS          = 32645
      IDC_SIZEALL         = 32646
      IDC_NO              = 32648 //not in win3.1 
      IDC_HAND            = 32649
      IDC_APPSTARTING     = 32650 // not in win3.1 
      IDC_HELP            = 32651
     
      //Identifiant des Curseurs
      OCR_NORMAL          = 32512
      OCR_IBEAM           = 32513
      OCR_WAIT            = 32514
      OCR_CROSS           = 32515
      OCR_UP              = 32516
      OCR_SIZE            = 32640   // OBSOLETE: use OCR_SIZEALL
      OCR_ICON            = 32641   // OBSOLETE: use OCR_NORMAL 
      OCR_SIZENWSE        = 32642
      OCR_SIZENESW        = 32643
      OCR_SIZEWE          = 32644
      OCR_SIZENS          = 32645
      OCR_SIZEALL         = 32646
      OCR_ICOCUR          = 32647   // OBSOLETE: use OIC_WINLOGO
      OCR_NO              = 32648
      OCR_HAND            = 32649
      OCR_APPSTARTING     = 32650
     
    FIN
    Voilà. L'exemple est donné pour un changement du curseur "WAIT" dans tout le projet. Il est évident qu'on peut placer le code dans une fenêtre, par exemple.
    Certains d'entre vous ce poseront la question "Mais pourquoi fait-il une copie du curseur système ?".
    Bon, d'abord, je fais ce que je veux !
    Ensuite, la procedure "SetCursorSystem" appelle la procédure "DestroyCursor" pour le libérer l'ancien curseur, donc, lors de la restauration du curseur d'origine, la resource ayant été libérée, le changement n'a pas lieu. Ca ne plante pas l'appli, mais le curseur système est changé.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. position curseur souris par rapport à ma JTable
    Par jdewalqu dans le forum Composants
    Réponses: 3
    Dernier message: 24/08/2006, 17h21
  2. Mettre le curseur souris en sablier pdt thread
    Par maxxou dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 11/03/2006, 20h44
  3. Taille curseur souris custom
    Par ypicman dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 13/02/2006, 15h57
  4. Curseur souris bloqué
    Par rahimk dans le forum Matériel
    Réponses: 2
    Dernier message: 04/11/2005, 07h41
  5. Réponses: 3
    Dernier message: 20/10/2005, 20h24

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