为什么我这里不管点击哪个按钮都是display

为啥我点击哪个按钮都是display?

img

img


#include "Mangagement.h"
#include<conio.h>
#include

using namespace std;
Mangagement::Mangagement()
{
::loadimage(&m_bk, "./images/bk.png", Window::width(), Window::height());

//主界面按钮初始化
menu_btns.push_back(new PushButton("查看学生"));
menu_btns.push_back(new PushButton("添加学生"));
menu_btns.push_back(new PushButton("删除学生"));
menu_btns.push_back(new PushButton("修改学生"));
menu_btns.push_back(new PushButton("查找学生"));
menu_btns.push_back(new PushButton("退出系统"));

//设置坐标,不让按钮堆叠到一起
for (int i = 0; i < menu_btns.size(); i++)
{
    menu_btns[i]->setFixedSize(250, 50);

    int bx = (Window::width() - menu_btns[i] ->width()) / 2;

    int vspace = (Window::height() - menu_btns.size() * menu_btns[i]->height()) / 2;
    int by = vspace + i * menu_btns[i]->height();

    menu_btns[i]->move(bx,by);
}

}
void Mangagement::run()
{
//获取菜单的返回值
int op = Menu;
//双缓冲绘图,防闪屏
Window::beginDraw();
while (true)
{
Window::clear();
drawBackground();
if (Window::hasMsg())
{
m_msg = Window::getMsg();
switch(m_msg.message)
{
case WM_KEYDOWN: //按键按下
//按esc退出操作,返回主界面
if (m_msg.vkcode == VK_ESCAPE)
{
op = Menu;
}

            break;
        default:    //鼠标操作
            
            
            break;
        }
    }

    switch (op)
    {
    case Menu:
        op = menu();
        break;
    case Mangagement::Display:
        display();
        break;
    case Mangagement::Insert:
        add();
        break;
    case Mangagement::Remove:
        erase();
        break;
    case Mangagement::Modify:
        modify();
        break;
    case Mangagement::Search:
        search();
        break;
    default:
    
            break;
        }

    Window::flushDraw();
    }
Window::endDraw();
}

int Mangagement::menu()
{
for (auto btn : menu_btns)
{
btn->show();
}
for (int i = 0; i < menu_btns.size(); i++)
{
menu_btns[i]->show();
menu_btns[i]->eventLoop(m_msg);
if (menu_btns[i]->isClicked())//被点击
{
return i;
}
}

return Menu;

}

void Mangagement::display()
{
outtextxy(0, 0, "displ

好炫酷的界面,这是 MFC 吗,不是很懂

进入这个函数,你单步调试下? 这个 eventLoop 不会自动退出吧,直到你按下键盘为止

但是你按下去的时候 i 一直都是初始值 0,所以每次都是 display

img