gpt4 book ai didi

c - 使用 SetParent 将 HWND 嵌入到外部进程中

转载 作者:太空狗 更新时间:2023-10-29 16:31:05 27 4
gpt4 key购买 nike

我正在尝试使用 SetParent 函数将我的进程中的一个窗口嵌入到外部进程的窗口中,遇到了一些问题,我希望有人能帮助我解决这些问题。首先,这是我目前正在做的将我的窗口嵌入到应用程序中的概述:

HWND myWindow; //Handle to my application window
HWND externalWindow; //Handle to external application window

SetParent(myWindow,externalWindow);

//Remove WS_POPUP style and add WS_CHILD style
DWORD style = GetWindowLong(myWindow,GWL_STYLE);
style = style & ~(WS_POPUP);
style = style | WS_CHILD;
SetWindowLong(myWindow,GWL_STYLE,style);

此代码有效,我的窗口出现在其他应用程序中,但引入了以下问题:

  • 当我的窗口获得输入焦点时,外部进程的主应用程序窗口失去焦点(即标题栏改变颜色)
  • 当我的窗口获得焦点时,主应用程序的键盘快捷键命令不起作用

有人知道解决这个问题的方法吗?我希望我的窗口被视为主应用程序的另一个子窗口。

最佳答案

好吧,我终于找到了问题的答案。

要解决主应用失去焦点的问题,您需要使用 AttachThreadInput 函数将嵌入式窗口线程附加到主应用线程。

此外,还可以使用 TranslateAccelerator 函数来响应 WM_KEYDOWN 消息,以确保触发主应用程序的加速器消息。

关于c - 使用 SetParent 将 HWND 嵌入到外部进程中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/170800/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com