Vous êtes actuellement hors ligne, en attente de reconnexion à Internet.

Le jeu de travail d'une application est rognée lorsque sa fenêtre de niveau supérieur est réduit

IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d’articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d’avoir accès, dans votre propre langue, à l’ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s’exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s’efforce aussi continuellement de faire évoluer son système de traduction automatique.

La version anglaise de cet article est la suivante: 293215
Symptômes
Lorsque fenêtre de niveau supérieur une application est réduit via la commande réduire son menu système ou un clic sur le bouton Réduire , le système d'exploitation découper le jeu de travail pour le processus. Ceci est effectué pour libérer la mémoire vive (RAM) pour les applications de premier plan. En raison de cette limitation, un processus pouvez rencontrer beaucoup et des performances réduites car ses pages de mémoire sont en cours défectueuses en mémoire vive (RAM).
Plus d'informations
Si une application réduit la fenêtre de niveau supérieur par programmation en appelant l'API ShowWindow() avec la commande SW_MINIMIZE, l'ensemble du processus de travail est supprimé. Toutefois, la plage de travail définie va pas être supprimés lorsque la fenêtre est réduite par programmation via l'utilisation de ShowWindow() avec la commande SW_SHOWMINIMIZED.

Le jeu de travail d'un processus est l'ensemble de pages de mémoire actuellement visibles pour le processus dans la RAM physique. Accès à cette mémoire est très rapide car les pages sont résidentes et disponibles pour une application d'utiliser sans déclencher une défaillance de page.

Un processus pouvez explicitement découper son propre travailler ensemble en appelant l'API SetProcessWorkingSetSize() tout en transmettant valeur-1 pour le dwMinimumWorkingSetSize et le dwMaximumWorkingSetSize . Il s'agit essentiellement comment le système supprime le processus lorsque sa fenêtre de niveau supérieur est réduit. Cela ne signifie pas que les pages de mémoire utilisés par le processus sont immédiatement supprimées de mémoire vive (RAM). En fait, ces pages peuvent rester résidents pendant un certain temps. Ils sont simplement marqués afin que le système puissiez les utiliser pour les autres processus que nécessaire. Cette méthode est beaucoup plus rapide qu'attend algorithme rognage standard du système.

Lorsqu'une fenêtre est réduite via la commande réduire son menu système ou le bouton Réduire , la fenêtre est envoyée un message WM_SYSCOMMAND avec la commande SC_MINIMIZE. Si la procédure de fenêtre transfère ce message sur la procédure de fenêtre par défaut du système en appelant DefWindowProc(), la procédure par défaut va gérer le message en appelant ShowWindow() avec la commande SW_MINIMIZE. Comme nous l'avons vu, cela entraînera le processus de travail jeu à être supprimés.

Vous pouvez écrire une application qui peut être réduite sans avoir son jeu de travail supprimé. Pour ce faire, la procédure de fenêtre de la fenêtre de niveau supérieur doit intercepter le message WM_SYSCOMMAND et répondre à la commande SC_MINIMIZE par appel ShowWindow() directement avec la commande SW_SHOWMINIMIZED. Il ne passez pas la commande SC_MINIMIZE sur DefWindowProc().

Exemple de code

Le code suivant montre comment écrire une procédure de fenêtre intercepte le message WM_SYSCOMMAND à ignorer la procédure de fenêtre par défaut et empêcher le jeu de travail de processus d'être supprimés :
LRESULT CALLBACK WndProc (HWND hWnd, UINT iMsg, WPARAM wParam,       LPARAM lParam) {   switch (iMsg) {      case WM_SYSCOMMAND:         if (wParam == SC_MINIMIZE) {            // programmatically minimize the window            ShowWindow(hWnd, SW_SHOWMINIMIZED);            // do not pass the minimize command on to the system's            // default window procedure            return 0;         }         // allow other system commands to be passed on to the         // default window procedure         break;       // handle other window messages here...      case WM_WHATEVER:         break;   }   return DefWindowProc(hWnd, iMsg, wParam, lParam);}				

Avertissement : cet article a été traduit automatiquement

Propriétés

ID d'article : 293215 - Dernière mise à jour : 11/21/2006 15:36:05 - Révision : 5.1

Microsoft Win32 Application Programming Interface

  • kbmt kbapi kbkernbase kbmemory kbprb KB293215 KbMtfr
Commentaires
/html>tsByTagName("head")[0].appendChild(m);