2010-09-23 26 views

Répondre

6

Si vous contrôlez les deux applications, alors oui. Voici comment les économiseurs d'écran s'affichent dans le panneau de contrôle de l'économiseur d'écran: le panneau de contrôle a passé la fenêtre des dialogues sur la ligne de commande et le fichier .scr, qui est simplement un exe, crée sa fenêtre en tant qu'enfant. donné hwnd comme son parent.

La capture d'une fenêtre de niveau supérieur précédemment écrite et l'obligeant à exister dans votre propre cadre n'est cependant pas bien prise en charge. Encore une fois, c'est quelque chose que vous pouvez facilement essayer: j'ai écrit une application de test qui a créé une fenêtre de cadre vide, fait un FindWindow pour les copies de Notepad, et reparti la fenêtre du bloc-notes pour être un enfant de mon cadre. Donc, cela fonctionne: dans ce scénario simple au moins, mais il n'y a aucune garantie: des applications plus complexes qui modifient leurs propres styles de cadres pourraient très bien se casser, en plus d'avoir une fenêtre enfant et une fenêtre parent sur différents threads des blocages.

+0

Merci Chris. Cela aide beaucoup. – csmithmaui

1

Non, vous ne pouvez pas faire cela.

Quelque chose qui pourrait fonctionner ... Vous pouvez démarrer le processus, puis en utilisant la poignée de fenêtre appliquer une série de changements à la fenêtre pour enlever le cadre. Ensuite, vous pouvez le déplacer vers la position d'un autre contrôle de positionnement dans votre fenêtre et lorsque vous avez des événements de déplacement/redimensionnement, vous redimensionnez également cette fenêtre enfant.

+0

Merci Brian. Je vais essayer votre suggestion. – csmithmaui

+1

J'ai écrit une application de test qui a fait un FindWindow pour rechercher le bloc-notes, puis un SetParent pour le parent en tant qu'enfant à mon image. Cela a fonctionné - la fenêtre de bloc-notes est devenue un enfant fonctionnel de ma fenêtre de cadre. –

+0

@Chris: Nice +1 –