我在c ++编程中有问题......希望你能解决它。 我用c ++做wxwidget编程。主要问题是在我调用与按钮绑定的方法之后制作对象时,该值无法进入该方法..包含垃圾值。
我有三个文件:
1> main.h,main.cpp中
2 - ; frame.h,frame.cpp
3> widget.h,widget.cpp
我们在框架类中形成框架(窗口)并在主文件中执行....即框架文件包含与框架相关的代码,而主类仅包含框架类执行的代码。 我必须在框架上添加一些项目(即文本框,静态文本,按钮和日历)。我们可以通过两种方式完成此操作1)在框架类中编写项目代码2)将代码写入其他文件并在框架类中使用.....第一次运行正常,我必须通过第二种方式。 所以,我正确的wxwidget.cpp文件中包含calendar_control类的所有项的代码。所有项目运行正常,但事件绑定按钮不起作用,当我们绑定框架类中的按钮按钮工作但事件方法中的值包含垃圾值.......即时发送框架文件的代码和小部件文件......
//frame.cpp
#include "frame.h"
#include "widget.h"
frame :: frame()
:wxFrame(NULL,wxID_ANY,wxT(""), wxPoint(-1, -1), wxSize(400,400))
{
d_parent_panel = new wxPanel(this,-1);
cal = new calendar_control(d_parent_panel,25,25)
;
/*****if i connect here it work but have garbage value in there event method , if we not use here only last object i.e cal2 work not cal**/
//Connect(this->cal->d_id_date_on_calendar_popup_button,wxEVT_COMMAND_BUTTON_CLICKED,wxCommandEventHandler(calendar_control::d_on_date_calendar_popup_button_evt));
cal2 = new calendar_control(d_parent_panel,25,90);
//Connect(this->cal2->d_id_date_on_calendar_popup_button,wxEVT_COMMAND_BUTTON_CLICKED,wxCommandEventHandler(calendar_control::d_on_date_calendar_popup_button_evt));
};
//widget.cpp
#include "widget.h"
calendar_control :: calendar_control(wxPanel *parent_panel,int x,int y)
{
date_on_calendar_display_box = new wxTextCtrl(parent_panel,wxID_ANY,wxT(""),wxPoint(x,y+5),wxSize(120,25),wxTE_READONLY);
date_on_calendar_name_text = new wxStaticText(parent_panel,wxID_ANY,CALENDAR_FORMAT_TEXT ,wxPoint(x,y+40),wxDefaultSize);
date_on_calendar_popup_button = new wxBitmapButton(parent_panel,d_id_date_on_calendar_popup_button=wxNewId(),calendar_pop_up_bitmap,wxPoint(x+135,y),wxDefaultSize,wxNO_BORDER);
//Connect(d_id_date_on_calendar_popup_button,wxEVT_COMMAND_BUTTON_CLICKED,wxCommandEventHandler(calendar_control:: d_on_date_calendar_popup_button_evt));
mystring =wxString::Format(wxT("%i"),d_id_date_on_calendar_popup_button);
wxPuts(mystring);
}
/*
* *********************************************
* Event handling
* **********************************************
*/
void calendar_control::d_on_date_calendar_popup_button_evt(wxCommandEvent& event)
{
wxPuts(mystring);
//contain id of button , but using here it contain garbage value
but not in constructor
}