Substituindo o controle de uma janela por outra em tempo de execução
Pergunta
Eu tenho uma alça em uma janela e seu controle de richedit. Eu seria capaz de substituir o referido controle por um dos meus? Eu gostaria que se comportasse como o original, ou seja, fazer parte da janela e assim como.
Atualmente, vou elaborar o cenário - atualmente estou desmontando um aplicativo de cujos recursos é um editor de texto. Meu ambiente atual (restrito) possui vários ganchos aos procedimentos, um dos quais produz a alça à janela do editor. Outro me permite adquirir a alça para o richedit20a controla os hosts da janela.
O que eu gostaria de fazer é isso - substitua o controle com o meu (seu equivalente .NET, presumivelmente) e corrigente as chamadas GetWindowText do aplicativo para usar a nova. Para implementá -lo, pretendo escrever a biblioteca de classes em C#/gerenciado C ++ e importá -lo para o meu aplicativo (que está escrito em C ++ não gerenciado).
Além disso, pode haver um número arbitrário de instâncias do editor de texto.
Solução
Isso parece muito complexo. Basta substituir seu wndproc (GWL_WNDPROC
), encaminhando nada e invalide o HWND. Que forçará um redesenho (WM_PAINT
) que você pode capturar. O proprietário provavelmente nem notaria (a menos que eles tenham fisgado também, é claro)