C++ 重置按钮的作用与计算按钮的作用相同

C++ 重置按钮的作用与计算按钮的作用相同,c++,events,button,event-handling,wxwidgets,C++,Events,Button,Event Handling,Wxwidgets,我使用的是wxWidgets,我尝试过分离这两个按钮的大小,但当我同时单击它们时,它们仍然会产生相同的结果。查看标题和cpp代码。我需要帮助。我在这里呆了一个小时。谢谢:( 标题: #include <vector> #include <wx/wx.h> using namespace std; const int MAX = 100; class determinantsFrame : public wxFrame { public: determinants

我使用的是wxWidgets,我尝试过分离这两个按钮的大小,但当我同时单击它们时,它们仍然会产生相同的结果。查看标题和cpp代码。我需要帮助。我在这里呆了一个小时。谢谢:(

标题:

#include <vector>
#include <wx/wx.h>
using namespace std;

const int MAX = 100;
class determinantsFrame : public wxFrame
{
public:
    determinantsFrame();
    virtual ~determinantsFrame();

    void OnQuit(wxCommandEvent &event);
    void OnAbout(wxCommandEvent &event);
    void OnClose(wxCloseEvent &event);
    void OnCalculateClick(wxCommandEvent &event);
    void OnReset(wxCommandEvent &event);
    double determinant(double matrix[MAX][MAX], int order);

private:
    wxPanel *MainPanel;
    wxButton *Enter;
    wxButton *Reset;
    wxMenu *fileMenu;
    wxMenu *helpMenu;
    wxMenuBar *menuBar;
    wxTextEntryDialog *td;
    wxString str;
    //vector<double> value;

    DECLARE_EVENT_TABLE();
};
#包括
#包括
使用名称空间std;
常数int MAX=100;
类行列式框架:公共wxFrame
{
公众:
行列式框架();
虚~行列式框架();
退出时作废(wxCommandEvent&事件);
关于(wxCommandEvent&event)的无效;
一旦关闭无效(wxCloseEvent和event);
计算单击无效(wxCommandEvent&event);
重置无效(wxCommandEvent&event);
双行列式(双矩阵[MAX][MAX],整数阶);
私人:
wxPanel*主面板;
wxButton*输入;
wxButton*复位;
wxMenu*文件菜单;
wxMenu*帮助菜单;
wxMenuBar*菜单栏;
wxtentrydialog*td;
wxString-str;
//向量值;
声明事件表();
};
CPP:

#包括
#包括“行列式框架.h”
#包括
#包括
#包括
#包括
使用名称空间std;
开始事件表(行列式框架,WX框架)
EVT_菜单(wxID_关于,行列式框架::OnAbout)
EVT_菜单(wxID_退出,行列式框架::OnQuit)
EVT_关闭(行列式框架::关闭)
EVT_按钮(wxID_任意,行列式框架::OnCalculateClick)
EVT_按钮(wxID_任意,行列式帧::OnReset)
结束事件表()
int n;
wxTextCtrl*数字[100][100];
void determinesframe::OnClose(wxCloseEvent和event)
{
出口(1);
}
无效行列式框架::OnAbout(wxCommandEvent和event)
{
wxString味精;
msg.Printf(wxT(“您好,欢迎来到%s”),wxVERSION\u字符串);
wxMessageBox(msg,wxT(“关于行列式计算器”);
}
无效行列式框架::OnQuit(wxCommandEvent&event)
{
Close();
}
行列式框架::~行列式框架()
{
破坏();
}
行列式框架::行列式框架():wxFrame(NULL,wxID_ANY,wxT(“行列式计算器”),wxDefaultPosition,wxDefaultSize,wxDEFAULT_框架样式)
{
wxStaticBoxSizer*矩阵;
wxFlexGridSizer*单元格;
wxBoxSizer*子框;
wxBoxSizer*主机箱;
fileMenu=newwxmenu;
帮助菜单=新的wxMenu;
菜单栏=新的wxMenuBar();
帮助菜单->附加(wxID_ABOUT,wxT(“&ABOUT”),wxT(“显示关于对话框”);
fileMenu->Append(wxID_EXIT,wxT(&EXIT),wxT(“退出此程序”);
菜单栏->附加(文件菜单,wxT(“&File”);
菜单栏->附加(帮助菜单,wxT(“&Help”);
td=newwxtentrydialog(this,wxT(“输入维度数”)、wxGetTextFromUserPromptStr,wxT(“2”);
td->ShowModal();
设置菜单栏(菜单栏);
str=td->GetValue();
n=wxAtoi(str);
mainBox=新的wxBoxSizer(Wx垂直);
主面板=新的wxPanel(此,wxID_ANY);
矩阵=新wxStaticBoxSizer(wxVERTICAL,主面板,“矩阵:”);
单元格=新的wxFlexGridSizer(0,n,0,0);
子框=新的wxBoxSizer(wxVERTICAL);
对于(int i=0;i添加(数字[i][j],0,wxALL | wxALIGN_中心| wxALIGN_中心|水平| wxALIGN_中心|垂直,5);
}
矩阵->添加(单元格,1,wxALL | wxEXPAND | wxALIGN |中心|水平| wxALIGN |中心|垂直,2);
子框->添加(矩阵,1,wxALL | wxEXPAND | wxALIGN_中心|水平| wxALIGN_中心|垂直,5);
wxBoxSizer*enb=新的wxBoxSizer(wxHORIZONTAL);
wxBoxSizer*rnb=新的wxBoxSizer(wxHORIZONTAL);
wxBoxSizer*bc=新的wxBoxSizer(wxHORIZONTAL);
输入=新的wxButton(主面板,wxID_ANY,wxT(“计算”),wxDefaultPosition,wxDefaultSize);
重置=新的wxButton(主面板,wxID_ANY,wxT(“重置”),wxDefaultPosition,wxDefaultSize);
enb->Add(输入,1,wxALL | wxEXPAND | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL,5);
rnb->添加(重置,1,wxALL | wxEXPAND | wxALIGN |中心|水平| wxALIGN |中心|垂直,5);
bc->Add(enb,0,wxALL | wxEXPAND);
bc->Add(rnb,0,wxALL | wxEXPAND);
子框->添加(bc,0,wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL);
主面板->设置器(子框);
主框->添加(主面板);
mainBox->Fit(这个);
此->设置器(主框);
中心屏幕();
}
无效行列式框架::OnReset(wxCommandEvent&事件)
{
对于(int i=0;iSetLabelText(wxEmptyString);
}
无效行列式框架::OnCalculateClick(wxCommandEvent&event)
{
双元素[MAX][MAX],det;
对于(int i=0;iGetValue());
det=行列式(elem,n);
wxMessageBox(wxString::Format(wxT(“%.2f”),det));
}
双行列式框架::行列式(双矩阵[MAX][MAX],整数阶)
{
双检测器=0,温度[MAX][MAX];整数行,列;
如果(顺序==1)
返回矩阵[0][0];
否则如果(顺序==2)
返回((矩阵[0][0]*矩阵[1][1])-(矩阵[0][1]*矩阵[1][0]);
其他的
{
for(int r=0;r
您的问题在于您分配给按钮的ID,该ID对两个按钮都是wxID\u ANY,并且您的消息映射也在CPP文件中

EVT_BUTTON(wxID_ANY, determinantsFrame::OnCalculateClick)
EVT_BUTTON(wxID_ANY, determinantsFrame::OnReset)
当wxID_ANY的消息映射被触发时,它首先由OnCalculateClick处理,因此重置按钮与计算按钮的作用相同。我打赌如果你
EVT_BUTTON(wxID_ANY, determinantsFrame::OnCalculateClick)
EVT_BUTTON(wxID_ANY, determinantsFrame::OnReset)