Remplacement de la commande d'une fenêtre avec une autre lors de l'exécution
Question
J'ai une poignée à une fenêtre et son contrôle RichEdit. Est-ce que je pourrai remplacer ladite commande avec un de mes propres? Je voudrais qu'il se comporte comme l'original serait, à savoir, faire partie de la fenêtre et suchlike.
Je vais élaborer le scénario plus loin - je désassemblage actuellement une application dont l'une des caractéristiques est un éditeur de texte. Mon environnement actuel (restreint) a en elle plusieurs crochets aux procédures, l'une qui donnent la poignée à la fenêtre de l'éditeur. Un autre me permet de accorderai la poignée au RichEdit20A contrôle les hôtes de la fenêtre.
Ce que je voudrais faire est ce - Ecraser le contrôle avec mon propre (son équivalent .NET probablement) et le patch GetWindowText de l'application appelle à utiliser la nouvelle. Pour la mettre en œuvre, je prévois d'écrire la bibliothèque de classes en C # / C ++ géré et l'importer à mon application (ce qui est écrit en C ++ non géré).
En outre, il peut y avoir un nombre arbitraire d'instances de l'éditeur de texte.
La solution
Cela semble trop complexe. Il suffit de remplacer son WndProc (GWL_WNDPROC
), rien transmettre, puis invalider le HWND. Cela forcera un nouveau tracé (WM_PAINT
) que vous pouvez ensuite capturer. Le propriétaire serait probablement même pas remarqué (à moins qu'ils l'avaient accroché et, bien sûr)