C++ 在Windows下,打开两个具有相同对话框ID的窗口是否有效

C++ 在Windows下,打开两个具有相同对话框ID的窗口是否有效,c++,mfc,C++,Mfc,使用MFC,我有多个派生类 class CImageView : public CFormView { }; 并打开3个窗口,所有窗口都具有相同的对话框ID。 这有效吗?他们不会互相干涉吗? 我知道对于对话框中的子窗口,使用相同的对话框ID是无效的 谢谢是的,这很好。它只是标识用于创建窗口的对话框资源的资源id。生成的视图窗口实际上是使用不同/唯一的窗口句柄HWND值创建的。子控件不应具有重复ID的原因是,它会混淆诸如GetDlgItem之类的API,这些API用于根据指定的ID检索特定控件的

使用MFC,我有多个派生类

class CImageView : public CFormView
{
};
并打开3个窗口,所有窗口都具有相同的对话框ID。 这有效吗?他们不会互相干涉吗? 我知道对于对话框中的子窗口,使用相同的对话框ID是无效的


谢谢

是的,这很好。它只是标识用于创建窗口的对话框资源的资源id。生成的视图窗口实际上是使用不同/唯一的窗口句柄HWND值创建的。子控件不应具有重复ID的原因是,它会混淆诸如GetDlgItem之类的API,这些API用于根据指定的ID检索特定控件的HWND


真诚地说,

是的,这很好。它只是标识用于创建窗口的对话框资源的资源id。生成的视图窗口实际上是使用不同/唯一的窗口句柄HWND值创建的。子控件不应具有重复ID的原因是,它会混淆诸如GetDlgItem之类的API,这些API用于根据指定的ID检索特定控件的HWND


诚恳地说,

只有子窗口具有控件ID。弹出窗口没有控件ID;API无法设置一个。如果您查看的文档,您将看到Humenu参数重载。它仅用于在创建子窗口时设置控件ID


您所指的对话框ID实际上是用于在可执行映像的资源部分中查找资源的标识符。创建对话框后,该ID即消失。使用从同一对话框模板创建的多个对话框是安全的,多个实例不会相互干扰。

只有子窗口具有控件ID。弹出窗口没有控件ID;API无法设置一个。如果您查看的文档,您将看到Humenu参数重载。它仅用于在创建子窗口时设置控件ID

您所指的对话框ID实际上是用于在可执行映像的资源部分中查找资源的标识符。创建对话框后,该ID即消失。使用从同一对话框模板创建的多个对话框是安全的,并且多个实例不会相互干扰