有没有办法知道父窗口的类型(基于框架或对话框)?
is there a way to know the type of parent window (frame or dialog-based)?
我想知道父窗口类型是框架窗口还是基于对话框的窗口。
众所周知,框架窗口可以通过CreateWindow
函数创建,基于对话框的窗口可以通过CreateDialog
函数创建。
另外,我尝试使用GetClassName
函数,但它给了我一个未知值"例如:#32770"。
WCHAR clsName[50];
GetClassName(hWnd, clsName, 50);
MessageBox(hWnd, clsName, L"", MB_OK);
如果是基于对话框的窗口,则给我#32770,但在框架窗口的情况下,给我项目名称,而不是框架窗口的类名。
是否可以知道父窗口的类型以及如何知道?
您可以通过 GetWindowLong 获取 CreateWindow 用于创建窗口的窗口样式属性,然后检查样式。
即像这样:
::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;
}
对话框的类名为 #32770。因此,您可以使用它来区分对话框和非对话框的窗口。
相关文章:
- 在没有Xcode的情况下在Mac捆绑包中嵌入框架
- catch框架有没有办法比较流或文件
- 如何将不同的可执行文件合并到一个窗口框架中进行编码?像浏览器一样
- 使用Qt框架在c ++类中创建API调用
- 如何在ECS框架中更新组件数据和通知系统
- VSCode IntelliSense无法识别SDL框架的SDL_image扩展库
- 用于C++的静态二进制检测或二进制重写工具和框架
- GoogleMock是否仍然打算与任何测试框架一起使用?
- 带有框架的 QGraphicsTextItem 的 QPropertyAnimation 会使文本抖动
- 在C++中使用 Catch 测试框架编译错误"error: expected ';' at end of declaration list"
- 修改生成文件以简化框架 #include 路径
- 无敌框架并受到伤害等级
- 如何在提升构建中设置环境变量以进行提升单元测试框架?
- 使用 gtest 框架在单元测试代码中检查目标对象的私有变量的最佳实践是什么?
- Xcode 中的加速框架以获得 A 的 QR 分解,但找不到 zgeqrf
- 是否可以在 Xcode C++项目中包含框架?
- 适用于交互式移动地图的语言/框架
- 是否有一个类似于.NET框架的基于C++的DebianLinux web应用程序框架
- 在 mac 上的 gnu/clang 编译器中定义相对于可执行文件的框架路径
- 我的c++应用依赖于.net框架吗?