0

如何创建坐标大于 32767 的子窗口?例如:

HWND tmp = 
CreateWindow(
    _T( "BUTTON" ), _T( "Test" ),
    WS_CHILD | WS_VISIBLE,
    10, 45000, 80, 25,
    hWnd, (HMENU)1, (HINSTANCE)GetModuleHandle( NULL ), NULL );

此代码创建坐标为 10;32767 的按钮。使用 MoveWindow 或 SetWindowPos 函数给出相同的结果。

我需要创建带有滚动和子控件的窗口(简单形式)。

4

2 回答 2

1
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 );
}
于 2012-04-12T14:49:03.403 回答
0

您使用哪个操作系统来运行您的代码?

在我的项目中,虽然 Windows 7 似乎将坐标截断为 16 位有符号整数范围(-32768 和 32767),但 Window XP 似乎没有这样做,并允许从 -2147483648 定位到 2147483647,整个 32 位有符号整数范围。

于 2014-01-03T20:15:24.670 回答