代码之家  ›  专栏  ›  技术社区  ›  shadeMe

在运行时用另一个窗口的控件替换窗口的控件

  •  1
  • shadeMe  · 技术社区  · 14 年前

    我有一个窗口的句柄和它的richedit控件。我能用我自己的控制器来替换所说的控制器吗?我希望它表现得像原来的一样,也就是说,它是窗户的一部分,类似这样。

    我将进一步阐述这个场景——我目前正在分解一个应用程序,其中一个功能是文本编辑器。我当前(受限制)的环境中有各种挂接到过程的钩子,其中一个将句柄提供给编辑器窗口。另一个允许我获取richedit20a控制窗口主机的句柄。

    我想做的是-用我自己的控件(大概相当于.NET)覆盖该控件,然后修补应用程序的getWindowText调用以使用新的控件。为了实现这一点,我计划编写C类库/托管C++中的类库并将其导入到我的应用程序(它是用非托管C++编写的)。

    此外,文本编辑器可以有任意数量的实例。

    1 回复  |  直到 14 年前
        1
  •  0
  •   MSalters    14 年前

    听起来太复杂了。只需更换它的wndproc( GWL_WNDPROC ,不转发任何内容,然后使hwnd无效。这将迫使重画( WM_PAINT )然后你就可以捕捉到。主人可能根本不会注意到(当然,除非他们也把它钩上了)