Координаты CreateWindow ограничены 32767? - PullRequest
0 голосов
/ 27 февраля 2012

Как я могу создать дочернее окно с координатами, которые больше, чем 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 дает тот же результат.

Мне нужно создать окно с прокруткой и дочерними элементами управления (простая форма).

Ответы [ 2 ]

1 голос
/ 12 апреля 2012
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 );
}
0 голосов
/ 04 января 2014

Какую операционную систему вы используете для запуска своего кода?

В моем проекте, хотя Windows 7, похоже, усекает координаты до диапазона целых чисел со знаком 16 бит (-32768 и 32767), Window XP, похоже, этого не делает и позволяет позиционировать от -2147483648 до 2147483647, все 32-битные со знаком целочисленный диапазон.

...