我想知道父窗口类型是框架窗口还是基于对话框的窗口。
我们知道框架窗口可以通过CreateWindow
函数创建,而基于对话框的窗口可以通过CreateDialog
函数创建。
另外,我尝试使用GetClassName
函数,但它给了我一个未知值“ ex:#32770”。
WCHAR clsName[50];
GetClassName(hWnd, clsName, 50);
MessageBox(hWnd, clsName, L"", MB_OK);
在基于对话框的窗口中给我#32770,但是在框架窗口的情况下给我项目名称,而不是框架窗口的类名。
是否可以知道父窗口的类型以及如何?
答案 0 :(得分:1)
您可以获得window style属性,该属性由CreateWindow用于在GetWindowLong上创建窗口,然后检查样式。
即像这样:
::DWORD style = static_cast<DWORD>( ::GetWindowLong(hWnd, GWL_STYLE) );
if( WS_OVERLAPPEDWINDOW == (style & WS_OVERLAPPEDWINDOW) ) {
std::cout<< "Frame" << std::endl;
} else if( WS_DLGFRAME == (style & WS_DLGFRAME) ) {
std::cout<< "Dialog" << std::endl;
}
答案 1 :(得分:1)
一个dialog box has class name #32770。因此,您可以使用它来区分对话框和不是对话框的窗口。