设置子窗口的正确z位置

时间:2018-07-02 09:43:22

标签: c++ winapi

我有一个具有主窗口的应用程序。我正在编写此应用程序使用的dll。我可以检索此主窗口的hwnd。我想要做的是添加一个子窗口,该子窗口将充当主窗口的子元素-基本上固定在其左上角。我已经在dll中创建了类似于此表单的子窗口:

WNDCLASSEX wc;
wc.hInstance = NULL;
wc.lpszClassName = "InjectedDLLWindowClass";
wc.lpfnWndProc = DLLWindowProc;
wc.style = CS_DBLCLKS;
wc.cbSize = sizeof(WNDCLASSEX);
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.lpszMenuName = NULL;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hbrBackground = (HBRUSH)COLOR_BACKGROUND;
if (!RegisterClassEx(&wc))
    return 0;

gHwnd = CreateWindowEx(WS_EX_WINDOWEDGE , "InjectedDLLWindowClass", "InjectedDLLWindowClass", NULL, CW_USEDEFAULT, CW_USEDEFAULT, 400, 300, widgetHWND, NULL, NULL, NULL);
SetWindowLong(gHwnd, GWL_STYLE, 0); // to remove all borders

我想在子DLLWindowProc函数中获取WM_SIZING和WM_MOVING消息,并使用SetWindowPos函数为子窗口设置正确的大小和位置。但是,由于它进行移动和缩放的父窗口没有消息到达。我试图设置一个定期计时器,该计时器将更新我的子窗口的大小,位置和窗口顺序,但这只会导致我的窗口不断变为活动状态并占用控件。所以我的问题是-如何在不访问父窗口WinProc的情况下将子窗口固定到父窗口?

0 个答案:

没有答案