日期:2014-05-16 浏览次数:20814 次
void dialog_calendar (GtkEntry *widget,
DateTrans *dtEntry){ //DateTrans是我自定义的结构体指针,分别指向一个窗口和输入框
GtkWidget *dlCalendar;
GtkWidget *vbCalendar;
GtkWidget *calendar;
GtkWidget *hbb;
gint result;
guint year;
guint month;
guint day;
char *calendardate;
dlCalendar = gtk_dialog_new_with_buttons ("Calendar",
GTK_WINDOW(dtEntry->window),
GTK_DIALOG_MODAL,
GTK_STOCK_CLEAR,
GTK_RESPONSE_NO,
GTK_STOCK_CANCEL,
GTK_RESPONSE_REJECT,
GTK_STOCK_OK,
GTK_RESPONSE_OK,
NULL);
gtk_dialog_set_has_separator (GTK_DIALOG (dlCalendar), FALSE);
vbCalendar = GTK_DIALOG (dlCalendar)->vbox;
gtk_widget_show (vbCalendar);
calendar = gtk_calendar_new ();
gtk_widget_show (calendar);
gtk_box_pack_start (GTK_BOX (vbCalendar), calendar, TRUE, TRUE, 0);
hbb = GTK_DIALOG (dlCalendar)->action_area;
gtk_widget_show (hbb);
gtk_button_box_set_layout (GTK_BUTTON_BOX (hbb), GTK_BUTTONBOX_END);
result = gtk_dialog_run(GTK_DIALOG(dlCalendar));
switch (result){
case GTK_RESPONSE_NO:
gtk_entry_set_text(GTK_ENTRY(dtEntry->entry), "");
break;
case GTK_RESPONSE_OK:
gtk_calendar_get_date(GTK_CALENDAR(calendar),
&year,&month,&day);
g_sprintf(calendardate,"%d-%d-%d",year,month,day);
gtk_entry_set_text(GTK_ENTRY(dtEntry->entry),
calendardate);
break;
}
//free(calendardate); //加了这句后,第一次执行该函数就会挂调。
gtk_widget_destroy(dlCalendar);
}