在MessageBox上单击NO后使程序自动关闭(C ++)

时间:2013-12-03 17:22:20

标签: c++ messagebox auto-close

我正在学校和我自己学习C ++编程。现在我正在尝试对视觉体验和用户界面进行一些升级。我的问题是,只需单击MessageBox的“NO”按钮即可关闭程序。程序运行后,我想跳过“按任意键继续”。这是代码: `

#include<iostream>
#include<windows.h>
#include<stdlib.h>
using namespace std;
int main()
{
MessageBox ( NULL, "7. Adott az a(i), i=1,n szamsor. Hozzuk létre a b szamsort", "Feladat szovege", MB_OK);
float a[111], b[111], n;
cout<<"n= ?\b";

MessageBox ( HWND_DESKTOP, "Kerlek irj be egy szamot, hogy hany ertek van a sorozatban!", "10_tombok/07", MB_OK);

cin>>n;
cout<<"\n";

for(int i=1; i<=n; i++)
{
    cout<<"a"<<i<<"= ?\b";
    cin>>a[i];
}

for(int i=1; i<=n; i++)
{

    if (a[i]>=0)
    {
        b[i]=2*a[i];
    }
    else
    {
        b[i]=-a[i]/2;
    }

}

cout<<"\nA 'b' szamsor: ";

for(int i=1; i<=n; i++)
{
    if (i!=n)
        cout<<b[i]<<", ";
    else
        cout<<b[i]<<"\n";
}
int mbID= MessageBox (NULL, "Szeretned ujra futtatni a programot?", "Program end", MB_ICONQUESTION | MB_YESNO | MB_DEFBUTTON2);
switch (mbID)
{
    case IDYES:

    {
        return main();
        break;
    }
    case IDNO:
    {
        //here i need something
        return 0;
        break;
    }
}

`

1 个答案:

答案 0 :(得分:1)

要解决这个问题,如果从Visual Studio中运行,您将获得“按任意键继续”。提示。尝试直接运行可执行文件。

对于评论中的问题,请使用循环。至少这样的事情:

int main()
{
    int done = 0;
    while(!done)
    {
        // skipping all the other program code above...

        switch (mbID)
        {
        case IDYES:
            break;
        case IDNO:
            done = 1;
            break;
        }
    }

    return 0;
}

从C ++程序中调用main()实际上是未定义的行为。

如果您对Windows UI编程非常感兴趣,请查看一些Win32或MFC教程。它与构建控制台应用程序略有不同。

相关问题