如何创建坐标大于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函数可以得到相同的结果。
我需要创建一个带滚动和子控件的窗口(简单形式)。
答案 0 :(得分: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 );
}
答案 1 :(得分:0)
您使用哪种操作系统来运行代码?
在我的项目中,虽然Windows 7似乎将坐标截断为16位有符号整数范围(-32768和32767),但Window XP似乎没有这样做并且允许从-2147483648到2147483647的定位,整个32位签名整数范围。