如何将此C#foreach代码转换为C++;? 我用VisualStudio窗口窗体用C++制作了Ti-Tac趾游戏。 如何将这个C代码转换成C++代码? private Void disableButtons() { try { foreach (Control c in Controls) { Button b = (Button)c; b.Enabled = false; } } catch{ } } 不能将其转换为纯C++代码,而不使用任何具有“强>控件按钮< /强>”的附加库,而按钮类具有“启用”公共成员。 但是,您可以将它转换为 C++ +CLI代码,也可以混合纯C++代码。 private Void disableButtons() { try { for each (Control^ c in Controls) { Button^ b = (Button^)c; b->Enabled = false; } } catch{ } }

如何将此C#foreach代码转换为C++;? 我用VisualStudio窗口窗体用C++制作了Ti-Tac趾游戏。 如何将这个C代码转换成C++代码? private Void disableButtons() { try { foreach (Control c in Controls) { Button b = (Button)c; b.Enabled = false; } } catch{ } } 不能将其转换为纯C++代码,而不使用任何具有“强>控件按钮< /强>”的附加库,而按钮类具有“启用”公共成员。 但是,您可以将它转换为 C++ +CLI代码,也可以混合纯C++代码。 private Void disableButtons() { try { for each (Control^ c in Controls) { Button^ b = (Button^)c; b->Enabled = false; } } catch{ } },c++,visual-c++,C++,Visual C++,下面是一个关于如何在C++中使用C的foreach的示例: 如果您想更改原始元素,可以在type和name之间加上(&D) < > >(类型和名称:集合){/ /您的代码} < /代码> < p>您已经标记了这个VisualC++,所以我假设您使用的是MFC。如果您使用的是Qt或wxWidgets或其他东西,答案会有所不同 如果您已经在一个容器中设置了控件ID,并且要为每个控件打开该容器,则: UINT Controls[] = { IDC_BUTTON1, IDC_BUTTON2, IDC_

下面是一个关于如何在C++中使用C的
foreach
的示例:

如果您想更改原始元素,可以在type和name之间加上(&D)


< > >(类型和名称:集合){/ /您的代码} < /代码>

< p>您已经标记了这个VisualC++,所以我假设您使用的是MFC。如果您使用的是Qt或wxWidgets或其他东西,答案会有所不同

如果您已经在一个容器中设置了控件ID,并且要为每个控件打开该容器,则:

UINT Controls[] = { IDC_BUTTON1, IDC_BUTTON2, IDC_BUTTON3, IDC_BUTTON4, IDC_BUTTON5 };

for (UINT c : Controls)
{
    CWnd *b = GetDlgItem(c);
    if (b)
        b->EnableWindow(FALSE);
}
但是,如果您没有这样的控件容器,但仍希望迭代所有控件,则:

CWnd *c = GetWindow(GW_CHILD);
while (c)
    {
    c->EnableWindow(FALSE);
    c = c->GetNextWindow(GW_HWNDNEXT);
    }

我建议使用第一个选项,因为这样您就可以指定要修改哪些控件。如果您只需要按钮,则第二个选项将很棘手。

您使用的是什么框架?MFC?如何转换FACH或如何使按钮在C++中工作?一个是微不足道的,一个不是。我想转换C++的Frach循环。
UINT Controls[] = { IDC_BUTTON1, IDC_BUTTON2, IDC_BUTTON3, IDC_BUTTON4, IDC_BUTTON5 };

for (UINT c : Controls)
{
    CWnd *b = GetDlgItem(c);
    if (b)
        b->EnableWindow(FALSE);
}
CWnd *c = GetWindow(GW_CHILD);
while (c)
    {
    c->EnableWindow(FALSE);
    c = c->GetNextWindow(GW_HWNDNEXT);
    }