假设我HWND
在 win32 c++ 编程中有一个窗口。如何以编程方式创建具有完全相同样式的另一个窗口?我知道我必须使用CreateWindowEx
,但我如何找到现有窗口的所有参数传递给CreateWindowEx
?
问问题
766 次
3 回答
6
GetWindowInfo应该从原始窗口中检索您需要的内容。它返回一个带有以下内容的WINDOWINFO结构:
typedef struct tagWINDOWINFO {
DWORD cbSize;
RECT rcWindow;
RECT rcClient;
DWORD dwStyle;
DWORD dwExStyle;
DWORD dwWindowStatus;
UINT cxWindowBorders;
UINT cyWindowBorders;
ATOM atomWindowType;
WORD wCreatorVersion;
} WINDOWINFO, *PWINDOWINFO, *LPWINDOWINFO;
于 2013-08-09T21:16:25.507 回答
3
DWORD existingStyle = (DWORD)GetWindowLongPtr(hWnd, GWL_STYLE);
DWORD existingExStyle = (DWORD)GetWindowLongPtr(hWnd, GWL_EXSTYLE);
这将获取现有样式(dwStyle
参数 to CreateWindowEx
)和扩展样式(dwExStyle
参数CreateWindowEx
)。
另请注意,您几乎不应该GetWindowLong
直接调用。尽管在这种情况下它是无害的,但这不是一个好习惯,因为它不适用于 64 位 Windows 上的指针。GetWindowLongPtr
被记录为您应该调用的内容。
于 2013-08-09T21:14:20.017 回答
2
用于GetWindowLong()
查询 GWL_STYLE 和 GWL_EXSTYLE 标志。
于 2013-08-09T21:15:28.373 回答