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

C# Discussion :

[PDA] Ôter sablier de chargement au démarrage d'une application


Sujet :

C#

  1. #1
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Par défaut [PDA] Ôter sablier de chargement au démarrage d'une application
    Bonjour,

    je développe une application PDA (console) et j'utilise le Compact Framework. Ma tâche est un "démon" qui tourne en tâche de fond et je veux donc que quand je le lance, le sablier disparaisse de lui même.

    Pour l'instant, quand je lance l'appli, j'ai le sablier qui tourne et ne s'enlève que quand je change de fenêtre...

    Ce que j'ai (en ultra-simplifié) :

    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
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
     
            static void Main(string[] args)
            {
                    for (int i = 0; i < 60; i++)
                    {
                        DoEvents();
                        Thread.Sleep((int)new TimeSpan(0, 0, 1).TotalMilliseconds);
                    }
            #region DoEvents
            [StructLayout(LayoutKind.Sequential)]
            struct MSG
            {
                public IntPtr hwnd;
                public UInt32 message;
                public IntPtr wParam;
                public IntPtr lParam;
                public UInt32 time;
                public POINT pt;
            }
     
            [StructLayout(LayoutKind.Sequential)]
            struct POINT
            {
                public int X;
                public int Y;
     
                public POINT(int x, int y)
                {
                    this.X = x;
                    this.Y = y;
                }
     
                public static implicit operator System.Drawing.Point(POINT p)
                {
                    return new System.Drawing.Point(p.X, p.Y);
                }
     
                public static implicit operator POINT(System.Drawing.Point p)
                {
                    return new POINT(p.X, p.Y);
                }
            }
     
            [DllImport("coredll.dll")]
            static extern bool TranslateMessage([In] ref MSG lpMsg);
     
            [DllImport("coredll.dll")]
            [return: MarshalAs(UnmanagedType.Bool)]
            static extern bool GetMessage(out MSG lpMsg, IntPtr hWnd, uint wMsgFilterMin,
               uint wMsgFilterMax);
     
            [DllImport("coredll.dll")]
            static extern IntPtr DispatchMessage([In] ref MSG lpmsg);
     
            [DllImport("coredll.dll")]
            [return: MarshalAs(UnmanagedType.Bool)]
            static extern bool PeekMessage(out MSG lpMsg, IntPtr hWnd, uint wMsgFilterMin,
               uint wMsgFilterMax, PeekMessageParams wRemoveMsg);
     
            [Flags]
            public enum QueueStatusFlags : uint
            {
                QS_KEY = 0x0001,
                QS_MOUSEMOVE = 0x0002,
                QS_MOUSEBUTTON = 0x0004,
                QS_POSTMESSAGE = 0x0008,
                QS_TIMER = 0x0010,
                QS_PAINT = 0x0020,
                QS_SENDMESSAGE = 0x0040,
                QS_HOTKEY = 0x0080,
                QS_ALLPOSTMESSAGE = 0x0100,
                QS_RAWINPUT = 0x0400,
                QS_MOUSE = QS_MOUSEMOVE | QS_MOUSEBUTTON,
                QS_INPUT = QS_MOUSE | QS_KEY | QS_RAWINPUT,
                QS_ALLEVENTS = QS_INPUT | QS_POSTMESSAGE | QS_TIMER | QS_PAINT | QS_HOTKEY,
                QS_ALLINPUT = QS_INPUT | QS_POSTMESSAGE | QS_TIMER | QS_PAINT | QS_HOTKEY | QS_SENDMESSAGE
            }
     
            [Flags]
            public enum PeekMessageParams : uint
            {
                PM_NOREMOVE = 0x0000,
                PM_REMOVE = 0x0001,
                PM_NOYIELD = 0x0002,
                PM_QS_INPUT = QueueStatusFlags.QS_INPUT << 16,
                PM_QS_POSTMESSAGE = (QueueStatusFlags.QS_POSTMESSAGE | QueueStatusFlags.QS_HOTKEY | QueueStatusFlags.QS_TIMER) << 16,
                PM_QS_PAINT = QueueStatusFlags.QS_PAINT << 16,
                PM_QS_SENDMESSAGE = QueueStatusFlags.QS_SENDMESSAGE << 16
            }
     
            public static void DoEvents()
            {
                MSG pMsg;
     
                while (PeekMessage(out pMsg, IntPtr.Zero, 0, 0, PeekMessageParams.PM_REMOVE))
                {
                    TranslateMessage(ref pMsg);
                    DispatchMessage(ref pMsg);
                }
            }
            #endregion
    Seulement ça n'a aucun effet
    Etant donné que je suis en console, je ne dispose pas de la classe Cursor...

    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

  2. #2
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Par défaut
    Bon, en fait c'était beaucoup plus simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        [DllImport("coredll.dll")]
        public static extern IntPtr SetCursor(IntPtr hCursor);
     
        static void Main(string[] args)
        {
            IntPtr hOldCursor = SetCursor(IntPtr.Zero);
     
        // Mon code ... :)
        }
    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

Discussions similaires

  1. image en démarrage d'une application
    Par Invité dans le forum 2D
    Réponses: 3
    Dernier message: 21/03/2007, 15h19
  2. Plantage au démarrage d'une application
    Par Nico_stras dans le forum Windows
    Réponses: 22
    Dernier message: 31/01/2007, 11h23
  3. Chargement d'image dans une application graphique
    Par chocoboy dans le forum Langage
    Réponses: 2
    Dernier message: 26/10/2006, 21h29
  4. fenêtre de démarrage d(une application
    Par lesipce dans le forum JBuilder
    Réponses: 1
    Dernier message: 28/08/2006, 16h34
  5. Réponses: 4
    Dernier message: 11/10/2005, 21h08

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