J'ai créé un économiseur d'écran (C#, .NET 4.0 si c'est important) mais j'ai quelques problèmes (à un niveau plus esthétique, cependant). Ceux-ci sont probablement faciles à résoudre, mais je n'ai pratiquement jamais utilisé l'API Win32, donc je peux facilement manquer l'évidence quand il s'agit de cela..NET: Propriétaire de la boîte de dialogue de configuration de l'économiseur d'écran et focus de l'aperçu
Q1: Je mis en place la petite fenêtre de prévisualisation comme ceci:
SetParent(Handle, hwndParent); SetWindowLong(Handle, GWL_STYLE, new IntPtr(GetWindowLong(Handle, GWL_STYLE) | WS_CHILD)); Rectangle parentRect; GetClientRect(hwndParent, out ParentRect); Size = parentRect.Size;
où hwndParent
est analysé à partir du 2ème argument de commande. Le problème ici est que la fenêtre d'aperçu vole le focus de l'onglet des paramètres de l'économiseur d'écran. Comme une tentative naïve, j'ai appelé SetFocus(hwndParent)
mais cela n'a eu aucun effet. Quelle est la bonne façon de garder la mise au point où il devrait être
Q2: Si j'ouvre la boîte de dialogue de configuration de la « manière habituelle » de créer une forme, à savoir
Application.Run(new ConfigurationForm());
la boîte de dialogue ne sera pas modal l'applet Panneau de configuration. Comment cela peut il etre accompli? J'ai compris que le HWND du parent prévu est fourni avec l'argument de la commande comme "/ c: nnnnnnnn" mais c'est aussi loin que je l'ai eu. (En utilisant SetParent(hwndParent)
se comportait bizarrement donc ce n'est apparemment pas la bonne fonction.)