当与其他框架中的按钮绑定时,事件包含垃圾值

时间:2011-04-08 10:05:29

标签: wxwidgets

我在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
}

0 个答案:

没有答案