HWND CreateWindowExPatched(DWORD exStyle, LPCTSTR className, LPCTSTR title, DWORD style, int x, int y, int width, int height, HWND parent, HMENU menu, HINSTANCE instance, LPVOID param)
{
HWND hWnd = NULL;
ScrollWindow(parent, -x, -y, NULL, NULL);
hWnd = CreateWindowEx(exStyle, className, title, style, 0, 0, width, height, parent, menu, instance, param);
ScrollWindow(parent, x, y, NULL, NULL);
return hWnd;
}
HWND CreateWindowPatched(LPCTSTR className, LPCTSTR title, DWORD style, int x, int y, int width, int height, HWND parent, HMENU menu, HINSTANCE instance, LPVOID param)
{
return CreateWindowExPatched(0, className, title, style, x, y, width, height, parent, menu, instance, param);
}
这看起来好像是一个窗口限制,试图在Delphi中放一个按钮在左= 50000,并立即将其减少到32767.您可能需要重新考虑您的布局,以便您不需要如此大的滚动宽度。 – Dampsquid 2012-02-27 14:25:52
目前我正在修复非常旧的项目中的错误,并且不可能进行任何重构。顺便说一句,如果我将窗口滚动到底部并使用MoveWindow - 控件移动正确,并且它们在返回滚动(更多32767)后保持在正确的坐标中。目前我正在实施解决方法 - 挂钩滚动和聚焦事件的窗口管理器,但我不想要这样丑陋的解决方案。 – 2012-02-27 14:42:00