9.9

notebook.c

//#include <gdk/gdkkeysyms>
#include "main.h"
#include <gtk/gtk.h>
#include <stdio.h>
#include <string.h>
#include<stdlib.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<netdb.h>
#define i 10
#define q 7
#define p 101
#define m 35
char year[27];//系统时间888888888888888888888888888888888888888888888888888888888888888888888888888
/*全局变量****************************************************************************************/
/*char* host_name="127.0.0.1";//"192.168.100.1";
int port=8888;	
	GtkWidget *entry1;//收件人gg
	GtkWidget *entry11;//密送gg
	GtkWidget *entry2;//主题gg

	char *text;
	

static GtkWidget *window_color;
static GdkColor color;
	GtkWidget *window;
static GtkWidget *drawarea;
GtkWidget *view;//编辑窗口
char name[20]="hjlhsa";//邮件地址gggggggggggggggggg
const char *nickname="guosiyu";
const char *weidu_number="3";

//char weidu_number[10];*/
	GtkWidget *filew;//fujian chuangkou
	GtkWidget *notebook;
/*函数声明*****************************************************************************************/
int change_color ( );//改变颜色
	void on_ok_clicked  (GtkButton* button, gpointer data);//改变颜色
void cleanup();//清空重新编辑
int change_ziti();//改变字体
	void on_font_select_ok (GtkWidget *button,GtkFontSelectionDialog *fs);
	void on_button_clicked (GtkWidget *button,gpointer userdata);


void gtk_notebook_next_page(GtkNotebook* notebook);
GtkWidget *gtk_notebook_new();
GtkWidget *gtk_window_new(GTK_WINDOW_TOPLEVEL);

/*得到收件人内容**********************************************************************gg*/
void get_recer(char* re_name)
{
	strcpy(re_name,gtk_entry_get_text(GTK_ENTRY(entry_receive)));
}
/*得到密送内容************************************************************************gg*/
void get_misong(char* misong_name)
{
	char misong[100];
	int k;
	int j=0;
	strcpy(misong,gtk_entry_get_text(GTK_ENTRY(entry_receive_se)));
	for(k=0;misong[k]!='\0';k++)
	{
		if(misong[k]==';')
		{
			misong_name[j]='*';
			j++;
			misong_name[j]=';';
			j++;
		}
		else
		{
			misong_name[j]=misong[k];
			j++;
		}	
	}
	misong_name[j]='\0';
}
/*得到信得主题************************************************************************gg*/
void get_title(char* title)
{
	strcpy(title,gtk_entry_get_text(GTK_ENTRY(entry_subject)));
}
/*得到信主题内容**********************************************************************gg*/
void get_text()
{
	GtkTextBuffer *pTextBuffer ;
	GtkTextIter iterStart;
	GtkTextIter iterEnd;
	pTextBuffer=gtk_text_view_get_buffer(view);
	gtk_text_buffer_get_start_iter(pTextBuffer,&iterStart);
	gtk_text_buffer_get_end_iter(pTextBuffer,&iterEnd);
	text=(gchar *)gtk_text_buffer_get_text(pTextBuffer,&iterStart,&iterEnd,FALSE);
	printf("aaaaaaa\n");
	printf("%s\n",text);
}

/*得到本地时间***********************************************************************gg*/
void get_time()//888888888888888888888888888888888888888888888888888888888888888888888888888888
{
	char* stime;
	char month[6];
	char day[6];
	char hour[6];
	char min[6];
	char sec[6];
	int k;
	time_t now;
	struct tm *timenow;
	time(&now);
	timenow=localtime(&now);
	printf("Local time is %s\n",asctime(timenow));
	stime=asctime(timenow);
	if(stime[4]=='F'){month[0]=' ';month[1]='2';}
	if(stime[4]=='M'&&stime[6]=='y'){month[0]=' ';month[1]='5';}
	if(stime[4]=='J'&&stime[5]=='a'){month[0]=' ';month[1]='1';}
	if(stime[4]=='M'&&stime[5]=='a'){month[0]=' ';month[1]='3';}
	if(stime[4]=='A'&&stime[5]=='a'){month[0]=' ';month[1]='4';}
	if(stime[4]=='J'&&stime[6]=='n'){month[0]=' ';month[1]='6';}
	if(stime[4]=='J'&&stime[6]=='l'){month[0]=' ';month[1]='7';}
	if(stime[4]=='A'&&stime[5]=='u'){month[0]=' ';month[1]='8';}
	if(stime[4]=='S'){month[0]=' ';month[1]='9';}
	if(stime[4]=='O'){month[0]='1';month[1]='0';}
	if(stime[4]=='N'){month[0]='1';month[1]='1';}
	if(stime[4]=='D'){month[0]='1';month[1]='2';}
	month[2]='\0';

	for(k=0;k<4;k++)
	{
		year[k]=stime[k+20];
	}year[k]='\0';
	for(k=0;k<2;k++)
	{
		sec[k]=stime[k+17];
	}sec[k]='\0';

	for(k=0;k<2;k++)
	{
		min[k]=stime[k+14];
	}min[k]='\0';
	for(k=0;k<2;k++)
	{
		day[k]=stime[k+8];
	}day[k]='\0';
	for(k=0;k<2;k++)
	{
		hour[k]=stime[k+8];
	}hour[k]='\0';
	strcat(year,"/");
	strcat(year,month);
	strcat(year,"/");
	strcat(year,day);
	strcat(year," ");
	strcat(year,hour);
	strcat(year,":");
	strcat(year,min);
	strcat(year,":");
	strcat(year,sec);
	printf("%s\n",year);

        year[27]='\0';
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
	printf("%s\n",year);
}



/*发送写信页面发送所有内容********************************************************************gggggggggggggggggggggg*/
int xiexin_cbd()
{
	progress();
	printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
	char buf[1024];
	memset(buf,0,sizeof(buf));
	/*传入数据库的各个字符串的拼接*********************************************************/
	char str[1024];//str表示拼接后的字符串
	memset(str,' ',sizeof(str));
	char re_name[100];
	char misong_name[100];
	char title[100];
	//char text[200];
	int count=0;
	int tag;//标记是草稿箱还是发信
	int k,j;
	get_recer(re_name);
	get_misong(misong_name);
	get_title(title);
	get_text();
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);	
printf("%s",text);
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);	
	get_time();
//printf("str0:%s\n",str);
	str[0]='s';
	tag=2;
	str[1]=(char)tag;//赋值2表示在发送
	str[2]=(char)strlen(name);//放发件人
//printf("char c:%c\n",str[2]);
	for(k=0;name[k]!='\0';k++)
	{
		str[k+3]=name[k];
	}
//printf("str:%s\n",str);
	str[15]=(char)strlen(year);//放本地时间
	for(k=0;year[k]!='\0';k++)
	{
		str[k+16]=year[k];
	}
//printf("str:%s\n",str);
		str[42]=(char)strlen(title);//放标题
	for(k=0;title[k]!='\0';k++)
	{
		str[k+43]=title[k];
	}
printf("str:%s\n",text);
		str[123]=(char)strlen(text);//放信的内容
	for(k=0;text[k]!='\0';k++)
	{
		str[k+124]=text[k];
	}
printf("str:%s\n",str);
	strcat(re_name,misong_name);
	for(k=0;re_name[k]!='\0';k++)
	{
		if(re_name[k]==';')count++;
	}
	str[624]=(char)count;//收件人和密送人的总个数
	for(k=0;re_name[k]!='\0';k++)
	{
		str[k+625]=re_name[k];
	}

printf("str:%s\n",str);
printf("%d",count);
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);	
	/*传入数据库的各个字符串的拼接结束*********************************************************/
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
	if((socket_descriptor=socket(AF_INET, SOCK_STREAM, 0))==-1)
	{
		perror("error opening socket\n");
        	exit(1);
	}
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
	if(connect(socket_descriptor, (void*)&pin, sizeof(pin))==-1)
	{
 		perror("can not connecting to server\n");
        	exit(1);
	}
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
	if(send(socket_descriptor, str, strlen(str), 0)==-1)
	{
		perror("can not send message\n");
		exit(1);
	}

printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
memset(buf, 0, sizeof(buf));
	if(recv(socket_descriptor, buf, sizeof(buf), 0)<0)//==-1)
	{
		perror("can not receive response\n");
        	exit(1);
	}
	else{
		printf("message received from server:%s\n",buf);
	}
	memset(text,' ',sizeof(text));//88888888888888888888888888888888888888888888888888888888888888888
	return 0;


}


update_statusbar(GtkTextBuffer *buffer,GtkStatusbar *statusbar)
{
	gchar *msg;
	gint row, col;
	GtkTextIter iter;

	gtk_statusbar_pop(statusbar, 0); 

	gtk_text_buffer_get_iter_at_mark(buffer,&iter, gtk_text_buffer_get_insert(buffer));

	row = gtk_text_iter_get_line(&iter);
	col = gtk_text_iter_get_line_offset(&iter);

	msg = g_strdup_printf("Col %d Ln %d", col+1, row+1);

	gtk_statusbar_push(statusbar, 0, msg);

	g_free(msg);
}


mark_set_callback(GtkTextBuffer *buffer,const GtkTextIter *new_location, GtkTextMark *mark,gpointer data)
{
	update_statusbar(buffer, GTK_STATUSBAR(data));
}

GtkWidget *statusbar1(GtkWidget *view)
{
	GtkWidget *statusbar;
	GtkTextBuffer *pTextBuffer ;
	pTextBuffer=gtk_text_view_get_buffer(view);
	statusbar = gtk_statusbar_new();
	g_signal_connect(pTextBuffer, "changed",
	G_CALLBACK(update_statusbar), statusbar);
	g_signal_connect_object(pTextBuffer, "mark_set", 
	G_CALLBACK(mark_set_callback), statusbar, 0);
	return statusbar;
}

/*草稿箱************************************************************************************/
int caogao_cbd()
{
	printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
	memset(buf,0,sizeof(buf));
	/*传入数据库的各个字符串的拼接*********************************************************/
	char str[1024];//str表示拼接后的字符串
	memset(str,' ',sizeof(str));
	char re_name[100];
	char misong_name[100];
	char title[100];
	//char text[200];
	int count=0;
	int k,j;
	int tag;
	get_recer(re_name);
	get_misong(misong_name);
	get_title(title);
	get_text();
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);	
printf("%s",text);
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);	
	get_time();
//printf("str0:%s\n",str);
	str[0]='s';
	tag=1;
	str[1]=(char)tag;//赋值1表示在草稿箱
	str[2]=(char)strlen(name);//放发件人
//printf("char c:%c\n",str[2]);
	for(k=0;name[k]!='\0';k++)
	{
		str[k+3]=name[k];
	}
//printf("str:%s\n",str);
	str[15]=(char)strlen(year);//放本地时间
	for(k=0;year[k]!='\0';k++)
	{
		str[k+16]=year[k];
	}
//printf("str:%s\n",str);
		str[42]=(char)strlen(title);//放标题
	for(k=0;title[k]!='\0';k++)
	{
		str[k+43]=title[k];
	}
printf("str:%s\n",text);
		str[123]=(char)strlen(text);//放信的内容
	for(k=0;text[k]!='\0';k++)
	{
		str[k+124]=text[k];
	}
printf("str:%s\n",str);
	strcat(re_name,misong_name);
	for(k=0;re_name[k]!='\0';k++)
	{
		if(re_name[k]==';')count++;
	}
	str[624]=(char)count;//收件人和密送人的总个数
	for(k=0;re_name[k]!='\0';k++)
	{
		str[k+625]=re_name[k];
	}

printf("str:%s\n",str);
printf("%d",count);
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);	
	/*传入数据库的各个字符串的拼接结束*********************************************************/
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
	if((socket_descriptor=socket(AF_INET, SOCK_STREAM, 0))==-1)
	{
		perror("error opening socket\n");
        	exit(1);
	}
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
	if(connect(socket_descriptor, (void*)&pin, sizeof(pin))==-1)
	{
 		perror("can not connecting to server\n");
        	exit(1);
	}
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
	if(send(socket_descriptor, str, strlen(str), 0)==-1)
	{
		perror("can not send message\n");
		exit(1);
	}
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
memset(buf, 0, sizeof(buf));
	if(recv(socket_descriptor, buf, sizeof(buf), 0)<0)//==-1)
	{
		perror("can not receive response\n");
        	exit(1);
	}
	else{
		printf("message received from server:%s\n",buf);
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
	}
	return 0;


}
typedef struct _ProgressData {
	GtkWidget *window;
	GtkWidget *pbar;
	int timer;
	gboolean activity_mode;
}ProgressData;

/* 清除分配的内存,删除定时器(timer) */
void destroy_progress( GtkWidget  *widget,ProgressData *pdata)
{
	gtk_timeout_remove (pdata->timer);
	pdata->timer =0;
	//pdata->window =NULL;
	gtk_widget_destroy(pdata->window);
	g_free (pdata);
}
/* 更新进度条,这样就能够看到进度条的移动 */
gint progress_timeout( gpointer data )
{
	ProgressData *pdata =(ProgressData *)data;
	gdouble new_val;
	if (pdata->activity_mode) 
		gtk_progress_bar_pulse (GTK_PROGRESS_BAR (pdata->pbar));
	else 
	{
		/* 使用在调整对象中设置的取值范围计算进度条的值 */
		new_val =gtk_progress_bar_get_fraction (GTK_PROGRESS_BAR (pdata->pbar)) + 0.05;
		if (new_val >0.9)
		{
			gtk_progress_bar_set_text (GTK_PROGRESS_BAR (pdata->pbar), "已发送!");
			if (new_val >0.99)
				gtk_widget_destroy(pdata->window);
				//destroy_progress(pdata->window,pdata);
		}
		/* 设置进度条的新值 */
		gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (pdata->pbar), new_val);
	}
	/* 这是一个 timeout 函数,返回 TRUE,这样它就能够继续被调用 */
	return 1;
}

/* 回调函数,切换在进度条你的滑槽上的文本显示 */
void toggle_show_text( GtkWidget  *widget,
		ProgressData *pdata )
{
		gtk_progress_bar_set_text (GTK_PROGRESS_BAR (pdata->pbar), "发送中...");
}

/* 回调函数,切换进度条的活动模式 */
void toggle_activity_mode( GtkWidget  *widget,
		ProgressData *pdata )
{
	pdata->activity_mode = !pdata->activity_mode;
	if (pdata->activity_mode) 
		gtk_progress_bar_pulse (GTK_PROGRESS_BAR (pdata->pbar));
	else
		/**/
		gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (pdata->pbar), 0.0);
}


GdkPixbuf *load_pixbuf_from_file (const char *filename)
{
    GError *error = NULL;
    GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file (filename, &error);
 
    if (pixbuf == NULL)
    {
        g_print ("Error loading file: %d : %s\n", error->code, error->message);
        g_error_free (error);
        exit (1);
    }
    return pixbuf;
}
 

void progress()
{
	ProgressData *pdata;
	GtkWidget *align;
	GtkWidget *separator;
	GtkWidget *table;
	GtkWidget *check;
	GtkWidget *vbox;
	/* 为传递到回调函数中的数据分配内存 */
	pdata =g_malloc (sizeof (ProgressData));
	pdata->window =gtk_window_new (GTK_WINDOW_TOPLEVEL);
	gtk_window_set_resizable (GTK_WINDOW (pdata->window), TRUE);
	g_signal_connect (G_OBJECT (pdata->window), "destroy",G_CALLBACK (destroy_progress),pdata);
	gtk_window_set_title (GTK_WINDOW (pdata->window), " ");
	gtk_container_set_border_width (GTK_CONTAINER (pdata->window), 0);

	vbox =gtk_vbox_new (FALSE, 5);
	gtk_container_set_border_width (GTK_CONTAINER (vbox), 10);
	gtk_container_add (GTK_CONTAINER (pdata->window), vbox);
	gtk_widget_show (vbox);

	/* 创建一个居中对齐的对象 */
	align =gtk_alignment_new (0.5, 0.5, 0, 0);
	gtk_box_pack_start (GTK_BOX(vbox), align, FALSE, FALSE, 5);
	gtk_widget_show (align);
	
	/* 创建进度条 */
	pdata->pbar =gtk_progress_bar_new ();
	gtk_container_add (GTK_CONTAINER (align), pdata->pbar);
	gtk_widget_show (pdata->pbar);
	
	/* 加一个定时器(timer),以更新进度条的值 */
	pdata->timer =gtk_timeout_add (100, progress_timeout, pdata);
	separator =gtk_hseparator_new ();
	gtk_box_pack_start (GTK_BOX(vbox), separator, FALSE, FALSE, 0);
	gtk_widget_show (separator);
	
	/* 行数、列数、同质性(homogeneous) */
	table =gtk_table_new (2, 2, FALSE);
	gtk_box_pack_start (GTK_BOX(vbox), table, FALSE, TRUE, 0);
	gtk_widget_show (table);


	toggle_activity_mode(pdata->pbar,pdata);
	toggle_show_text(pdata->pbar,pdata);

	gtk_window_set_decorated(GTK_WINDOW(pdata->window),FALSE);
	gtk_window_set_position(GTK_WINDOW(pdata ->window),GTK_WIN_POS_CENTER);
	gtk_progress_bar_set_text (GTK_PROGRESS_BAR (pdata->pbar), "发送中...");
	gtk_widget_show (pdata->window);

}

/*改变颜色*****************************************************************************/

int change_color ( )
{
	GtkWidget *vbox;
	GtkWidget *frame;
	GtkWidget *button;
	color.red = 0;
	color.blue = 65535;
	color.green = 0;
	window_color = gtk_window_new(GTK_WINDOW_TOPLEVEL);
	g_signal_connect(G_OBJECT(window_color),"delete_event",G_CALLBACK(gtk_main_quit),NULL);
	gtk_window_set_title(GTK_WINDOW(window_color),"选择颜色");
	gtk_window_set_position(GTK_WINDOW(window_color),GTK_WIN_POS_CENTER);
	gtk_container_set_border_width(GTK_CONTAINER(window_color),20);
	vbox = gtk_vbox_new(FALSE,0);
	gtk_container_add(GTK_CONTAINER(window_color),vbox);
	frame = gtk_frame_new(NULL);
	gtk_frame_set_shadow_type(GTK_FRAME(frame),GTK_SHADOW_IN);
	gtk_box_pack_start(GTK_BOX(vbox),frame,TRUE,TRUE,5);
	drawarea = gtk_drawing_area_new();
	gtk_widget_set_size_request(drawarea,200,200);//kongjian daxiao
	gtk_widget_modify_bg (drawarea, GTK_STATE_NORMAL,&color);//kongjian beijing
	gtk_container_add(GTK_CONTAINER(frame),drawarea);
	button = gtk_button_new_from_stock(GTK_STOCK_SELECT_COLOR);
	gtk_box_pack_start(GTK_BOX(vbox),button,FALSE,FALSE,5);
	g_signal_connect(G_OBJECT(button),"clicked",G_CALLBACK(on_ok_clicked),NULL);
	gtk_widget_show_all(window_color);
	gtk_main();
	return FALSE;
}
void on_ok_clicked  (GtkButton* button, gpointer data)
{
	GtkWidget *dialog;
	GtkColorSelection *colorsel;
	gint response;
	dialog = gtk_color_selection_dialog_new("选择颜色");
	gtk_window_set_transient_for (GTK_WINDOW (dialog),GTK_WINDOW (window_color));//注意:转换颜色选择对话框的颜色选择子控件
	colorsel = GTK_COLOR_SELECTION(GTK_COLOR_SELECTION_DIALOG(dialog)->colorsel);
	gtk_color_selection_set_has_opacity_control(colorsel,TRUE);
	gtk_color_selection_set_has_palette(colorsel,TRUE);
	gtk_signal_connect(GTK_OBJECT(dialog),"destroy",GTK_SIGNAL_FUNC(gtk_widget_destroy),&dialog);
	gtk_color_selection_set_previous_color (colorsel, &color);
	gtk_color_selection_set_current_color (colorsel, &color);
	response = gtk_dialog_run(GTK_DIALOG(dialog));
	//注意:此处需要用戶判断对话框的运行结果,如果是确定按钮则改变颜色
	if(response == GTK_RESPONSE_OK)
	{
		gtk_color_selection_get_current_color (colorsel, &color);
		gtk_widget_modify_bg (drawarea, GTK_STATE_NORMAL, &color);
		GtkTextBuffer *pTextBuffer ;
		GtkTextIter iterStart;
		GtkTextIter iterEnd;
		pTextBuffer=gtk_text_view_get_buffer(view);
		gtk_text_buffer_get_start_iter(pTextBuffer,&iterStart);
		gtk_text_buffer_get_end_iter(pTextBuffer,&iterEnd);
		gtk_widget_modify_text(GTK_WIDGET(view),GTK_STATE_NORMAL,&color);//改变编辑框内文本颜色
		
	}
	gtk_widget_destroy(dialog);
}
/*****************************************************************************/

/*改变字体******************************************************************************/

void on_font_select_ok (GtkWidget *button,GtkFontSelectionDialog *fs)
{
	PangoFontDescription *font_desc;///
	GtkWidget *dialog;
	gchar message[1024];
	gchar* ziti = gtk_font_selection_dialog_get_font_name(fs);
	font_desc = pango_font_description_from_string(ziti);
	sprintf(message,"你选择的字体是:%s \n",ziti);
	dialog = gtk_message_dialog_new(NULL,
		GTK_DIALOG_DESTROY_WITH_PARENT,
		GTK_MESSAGE_INFO,
		GTK_BUTTONS_OK,
		message,
		NULL);
	gtk_widget_destroy(GTK_WIDGET(fs));
	gtk_dialog_run(GTK_DIALOG(dialog));
	gtk_widget_destroy(dialog);
	GtkTextBuffer *pTextBuffer ;
	GtkTextIter iterStart;
	GtkTextIter iterEnd;
	pTextBuffer=gtk_text_view_get_buffer(view);
	gtk_text_buffer_get_start_iter(pTextBuffer,&iterStart);
	gtk_text_buffer_get_end_iter(pTextBuffer,&iterEnd);
        gtk_widget_modify_font(GTK_WIDGET(view), font_desc);/*/
	g_free(ziti);

}
void on_button_clicked (GtkWidget *button,gpointer userdata)
{
	GtkWidget* dialog;
	dialog = gtk_font_selection_dialog_new("请选择一种字体:");
	gtk_window_set_position(GTK_WINDOW(dialog),GTK_WIN_POS_CENTER);
	gtk_signal_connect(GTK_OBJECT(dialog),"destroy",GTK_SIGNAL_FUNC(gtk_widget_destroy),&dialog);
	gtk_signal_connect(GTK_OBJECT(GTK_FONT_SELECTION_DIALOG(dialog)->ok_button),"clicked",
	GTK_SIGNAL_FUNC(on_font_select_ok),GTK_FONT_SELECTION_DIALOG(dialog));
	gtk_signal_connect_object(GTK_OBJECT(GTK_FONT_SELECTION_DIALOG(dialog)->cancel_button),"clicked",GTK_SIGNAL_FUNC(gtk_widget_destroy),GTK_OBJECT(dialog));
	gtk_widget_show(dialog);
	
}
int change_ziti ( )
{
	GtkWidget *window;
	GtkWidget *button;
	window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
	g_signal_connect(G_OBJECT(window),"delete_event",G_CALLBACK(gtk_main_quit),NULL);
	gtk_window_set_title(GTK_WINDOW(window),"字体选择功能实现");
	//gtk_window_set_default_size(GTK_WINDOW(window),500,100);
	gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
	gtk_container_set_border_width(GTK_CONTAINER(window),40);
	button = gtk_button_new_with_label("按下此按钮来选择字体");
	g_signal_connect(G_OBJECT(button),"clicked",G_CALLBACK(on_button_clicked),NULL);
	gtk_container_add(GTK_CONTAINER(window),button);
	gtk_widget_show(button);
	gtk_widget_show(window);
	gtk_main();
	return FALSE;
}
/*****************************************************************************************/


/*清除重新编辑****************************************************************************/
void cleanup()//GtkWidget *widget, gpointer view1)
{
	char *text;/传递到数据库时使用
	GtkTextBuffer *pTextBuffer ;
	GtkTextIter iterStart;
	GtkTextIter iterEnd;
	pTextBuffer=gtk_text_view_get_buffer(view);
	gtk_text_buffer_get_start_iter(pTextBuffer,&iterStart);
	gtk_text_buffer_get_end_iter(pTextBuffer,&iterEnd);
	/*text=(gchar *)gtk_text_buffer_get_text(pTextBuffer,&iterStart,&iterEnd,FALSE);
	printf("%s\n",text);*/
	gtk_text_buffer_set_text(pTextBuffer,"\0",-1);

}

static GtkNotebook* transfer0 ( GtkButton* button, gpointer data)
{

	gtk_notebook_set_current_page(notebook,0);

	return notebook;

}
static GtkNotebook* transfer1 ( GtkButton* button, gpointer data)
{
	
	gtk_notebook_set_current_page(notebook,1);
	
	return notebook;

}
static GtkNotebook* transfer2 ( GtkButton* button, gpointer data)
{
	
	gtk_notebook_set_current_page(notebook,2);

	return notebook;

}
static GtkNotebook* transfer3 ( GtkButton* button, gpointer data)
{
	
	gtk_notebook_set_current_page(notebook,3);

	return notebook;

}
static GtkNotebook* transfer4 ( GtkButton* button, gpointer data)
{
	
	gtk_notebook_set_current_page(notebook,4);

	return notebook;

}
static GtkNotebook* transfer5 ( GtkButton* button, gpointer data)
{
	
	gtk_notebook_set_current_page(notebook,5);

	return notebook;

}
static GtkNotebook* transfer6 ( GtkButton* button, gpointer data)
{
	
	gtk_notebook_set_current_page(notebook,6);

	return notebook;

}
static GtkNotebook* transfer7 ( GtkButton* button, gpointer data)
{
	
	gtk_notebook_set_current_page(notebook,7);

	return notebook;

}


/*发送,存草稿,关闭的横盒******************************************************************/
GtkWidget *make_box1( gboolean homogeneous,         //写信
                     gint     spacing,
                     gboolean expand,
                     gboolean fill,
                     guint    padding ) 
{
    GtkWidget *box;
    GtkWidget *button;
    GtkWidget *notebook;
    char padstr[80]; 
    /* 以合适的 homogeneous 和 spacing 设置创建一个新的横向盒 */
    box = gtk_hbox_new (homogeneous, spacing);
    
    /* 以合适的设置创建一系列的按钮 */
    button = gtk_button_new_with_label ("发送");
    gtk_box_pack_start (GTK_BOX (box), button,  FALSE, FALSE, 2);
    gtk_widget_show (button);	
    g_signal_connect(G_OBJECT(button),"clicked",G_CALLBACK(xiexin_cbd),NULL);
    
    button = gtk_button_new_with_label ("存草稿");
    gtk_box_pack_start (GTK_BOX (box), button,  FALSE, FALSE, 2);
    gtk_widget_show (button);
    g_signal_connect(G_OBJECT(button),"clicked",G_CALLBACK(caogao_cbd),NULL);
        //   g_signal_connect_swapped (G_OBJECT (button), "clicked",
          //                 G_CALLBACK (gtk_notebook_next_page),
            //               notebook);


    button = gtk_button_new_with_label ("返回首页");
    g_signal_connect_swapped(G_OBJECT(button),"clicked",G_CALLBACK(transfer0),notebook);
    gtk_box_pack_start (GTK_BOX (box), button,  FALSE, FALSE, 2);
    gtk_widget_show (button);
    
    return box;
}
 

GtkWidget *make_box2( gboolean homogeneous,      //已发送  
                     gint     spacing,
                     gboolean expand,
                     gboolean fill,
                     guint    padding ) 
{
    GtkWidget *box;
    GtkWidget *button;
    char padstr[80];
    
    /* 以合适的 homogeneous 和 spacing 设置创建一个新的横向盒 */
    box = gtk_hbox_new (homogeneous, spacing);
    
    /* 以合适的设置创建一系列的按钮 */
    button = gtk_button_new_with_label ("删除");
    gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 2);
    gtk_widget_show (button);
    
    button = gtk_button_new_with_label ("彻底删除");
    gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 2);
    gtk_widget_show (button);


    button = gtk_button_new_with_label ("转发");
    gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 2);
    gtk_widget_show (button);

   /* button = gtk_button_new_with_label ("全部标记为已读");
    gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 2);
    gtk_widget_show (button);	*/
    
    return box;
}

GtkWidget *make_box3( gboolean homogeneous,    //已删除
                     gint     spacing,
                     gboolean expand,
                     gboolean fill,
                     guint    padding ) 
{
    GtkWidget *box;
    GtkWidget *button;
    char padstr[80];
    
    /* 以合适的 homogeneous 和 spacing 设置创建一个新的横向盒 */
    box = gtk_hbox_new (homogeneous, spacing);
    
    /* 以合适的设置创建一系列的按钮 */
    button = gtk_button_new_with_label ("彻底删除");
    gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 2);
    gtk_widget_show (button);
    
    button = gtk_button_new_with_label ("恢复到收件箱");
    gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 2);
    gtk_widget_show (button);

   /* button = gtk_button_new_with_label ("全部标记为已读");
    gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 2);*/
    gtk_widget_show (button);

    
    return box;
}

/*GtkWidget *make_box4( gboolean homogeneous, //草稿箱
                     gint     spacing,
                     gboolean expand,
                     gboolean fill,
                     guint    padding ) 
{
    GtkWidget *box;
    GtkWidget *button;
    GtkWidget *notebook;
    char padstr[80];
    
    /* 以合适的 homogeneous 和 spacing 设置创建一个新的横向盒 
    box = gtk_hbox_new (homogeneous, spacing);
    
    /* 以合适的设置创建一系列的按钮 
    button = gtk_button_new_with_label ("删除草稿");
    gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 2);
 g_signal_connect_swapped (G_OBJECT (button), "clicked",
                           G_CALLBACK (gtk_notebook_next_page),
                           notebook);

    gtk_widget_show (button);
    
    button = gtk_button_new_with_label ("转发");
    gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 2);
    gtk_widget_show (button);

    
    return box;
}*/

void destroy (GtkWidget *filew, gpointer data)
{
	gtk_widget_destroy(filew);
}
void file_ok_sel (GtkWidget *w, GtkFileSelection *fs1)
{
	g_print ("%s\n", gtk_file_selection_get_filename (GTK_FILE_SELECTION (fs1)));

	progress();
	//destroy(GtkWidget *filew,);
	gtk_widget_destroy(filew);
}
int fujian (int argc, char *argv[])
{

	/* 创建一个新的文件选择构件*/
	filew = gtk_file_selection_new ("选择附件");
	gtk_signal_connect (GTK_OBJECT (filew), "destroy",
	(GtkSignalFunc) destroy, &filew);
	/* 为o k _ b u t t o n按钮设置回调函数,连接到f i l e _ o k _ s e l函数*/
	gtk_signal_connect (GTK_OBJECT (GTK_FILE_SELECTION (filew)->ok_button),
	"clicked", (GtkSignalFunc) file_ok_sel, filew );
	/* 为c a n c e l _ b u t t o n设置回调函数,销毁构件*/
	gtk_signal_connect_object (GTK_OBJECT (GTK_FILE_SELECTION( filew ) -> cancel_button),
	"clicked", (GtkSignalFunc) destroy,filew);
	/* 设置一个文件名,作为它的缺省文件名*/
	gtk_file_selection_set_filename (GTK_FILE_SELECTION(filew),
	"penguin.png");
	gtk_widget_show(filew);
}
/*notebook部分函数**********************************************************************/
void tabsborder_book( GtkButton   *button,
                      GtkNotebook *notebook )
{
    gint bval = FALSE;

    if (notebook->show_border == 0)
            bval = TRUE;
 
    gtk_notebook_set_show_border (notebook, bval);
}

void delete(GtkWidget *widget,GtkWidget *event,gpointer data)
{
    gtk_main_quit();
}
/*工具栏的函数******************************************************************/

// tianjia kucun ID gongju anniu
GtkWidget * addStockToolItem(GtkWidget *toolbar, const gchar *stockid, const gchar *tooltip)
{
	GtkToolItem *toolitem;
	toolitem = gtk_tool_button_new_from_stock(stockid);
	gtk_tool_item_set_tooltip_text(toolitem,tooltip);
//jiang gong ju xiang cha ru gongju lan wei bu 
	gtk_toolbar_insert(GTK_TOOLBAR(toolbar),toolitem,-1);
	gtk_widget_show(GTK_WIDGET(toolitem));
	return GTK_WIDGET(toolitem);
}
//tian jia fen ge gong ju xiang 
GtkWidget *addSeparatorToolItem(GtkWidget* toolbar)
{
	GtkToolItem *toolitem;
//chuang jian fen ge gong ju xiang
	toolitem = gtk_separator_tool_item_new();
	gtk_toolbar_insert(GTK_TOOLBAR(toolbar),toolitem,-1);
	gtk_widget_show(GTK_WIDGET(toolitem));

	return GTK_WIDGET(toolitem); 
}
//tian jia gong ju xiang
GtkWidget * addToolItem(GtkWidget* toolbar, const gchar *pLabel, const gchar *tooltip, const gchar *pImageFile)

{
	GtkWidget *image = NULL;
	GtkToolItem *toolitem = NULL;
//chuang jian tu pian gou jian 
	image = gtk_image_new_from_file(pImageFile);
	gtk_widget_show(image);
//chuang jian gong ju an niu
	toolitem = gtk_tool_button_new(image,pLabel);
	gtk_tool_item_set_tooltip_text(toolitem,tooltip);
	gtk_toolbar_insert(GTK_TOOLBAR(toolbar),toolitem,-1);
	gtk_widget_show(GTK_WIDGET(toolitem));
	return GTK_WIDGET(toolitem);
}




GtkWidget *make_notebook()
{

	GtkWidget *button;

        GtkWidget *label;
        GtkWidget *checkbutton;
        char bufferf[32];
        char bufferl[32];
	GtkWidget *vbox0;//整个窗口纵盒
	GtkWidget *vbox;//整个窗口纵盒
	GtkWidget *vbox2;//整个窗口纵盒
	GtkWidget *vbox3;//整个窗口纵盒
	GtkWidget *vbox4;//整个窗口纵盒
	GtkWidget *vbox5;//整个窗口纵盒
	GtkWidget *vbox6;//整个窗口纵盒
	GtkWidget *vbox7;//整个窗口纵盒
	GtkWidget *bbox1;//收件人横盒
	GtkWidget *tbox;
	GtkWidget *bbox11;//密送横盒
	GtkWidget *bbox2;//主题横盒
	GtkWidget *bbox3;//正文标签横盒
	GtkWidget *label1;
	GtkWidget *label11;//密送
	GtkWidget *label2;
	GtkWidget *label3;
	GtkWidget *box1;//发送,存草稿,关闭的横盒
//	GtkWidget *entry1;//收件人
//	GtkWidget *entry11;//密送
//	GtkWidget *entry2;//主题
	GtkWidget *toolbar;
	GtkWidget *toolitem;
	GtkWidget *handlebox;
	GtkWidget *statusbar;
	GtkWidget *frame;
	GtkWidget *tvbox;/
	GtkWidget *shouyehbox1;
	GtkWidget *shouyehbox2;
	GtkWidget *nullbox1;
	GtkWidget *nullbox2;
	GtkWidget *nullbox3;
	GtkWidget *boxx1;
	GtkWidget *labell;
	GtkWidget *boxxx1;
	GtkWidget *labelll;
//	GtkWidget *boxxxx1;
	GtkWidget *labellll;
	GtkWidget *date_box;//88888888888888888888888888888888888888888888888888888888888888
	GdkPixbuf *image = NULL;
	GdkPixbufAnimation * anim = NULL;
    	GdkPixmap *background = NULL;
    	GtkStyle *style = NULL;
 


	GtkWidget *weidu_eventbox;
	GtkWidget *show_date_label;//标签显示当前日期888888888888888888888888888888888888888888888888888
	GtkWidget *shouye_label1;//标签晚上好
	GtkWidget *shouye_label2;//标签昵称
	GtkWidget *shouye_label3;//标签您有
	GtkWidget *shouye_label4;//标签未读邮件个数
	GtkWidget *shouye_label5;//封未读邮件
	//char greeting1[50];
	//char greeting2[50];
/*888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888*/
	char *date;//显示当前日期
	char *greeting1;
	get_time();
	if(year[12]==' '||(year[12]=='1'&&year[13]=='0'))       greeting1="   上午好,";
	if(year[12]=='1'&&year[13]<'3')       greeting1="   中午好,";
	if(year[12]=='1'&&year[13]>'3'&&year[13]<'5')       greeting1="   下午好,";
	if((year[12]=='1'&&year[13]>'5')||year[12]>'2')       greeting1="   下午好,";
	date[0]=year[0];
	date[1]=year[1];
	date[2]=year[2];
	date[3]=year[3];
	date[4]=year[4];
	date[5]=year[5];
	date[6]=year[6];
	date[7]=year[7];
	date[8]=year[8];
	date[9]=year[9];
	date[10]='\0';

/*888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888*/

        char *greeting2="   您有";
        char* greeting3="封未读邮件";





//	gtk_init(&argc, &argv);
	//window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
	//gtk_widget_set_size_request(GTK_WIDGET(window),550,500); 
	//gtk_window_set_resizable(GTK_WINDOW(window),FALSE);
	//g_signal_connect(G_OBJECT(window),"delete_event",G_CALLBACK(gtk_main_quit),NULL);
	//gtk_window_set_title(GTK_WINDOW(window),"写信");
	vbox0 = gtk_vbox_new(FALSE,0);
	vbox = gtk_vbox_new(FALSE,0);
	//vbox2 = gtk_vbox_new(FALSE,0);
	vbox3 = gtk_vbox_new(FALSE,0);
	//vbox4= gtk_vbox_new(FALSE,0);
	vbox5 = gtk_vbox_new(FALSE,0);
	vbox6 = gtk_vbox_new(FALSE,0);
	vbox7 = gtk_vbox_new(FALSE,0);
	
	box1 = make_box1(FALSE,0,FALSE,FALSE,3);    //写信
	boxx1 = make_box2(FALSE,0,FALSE,FALSE,3);    //已发送 
	boxxx1 = make_box3(FALSE,0,FALSE,FALSE,3);  // 已删除
	//boxxxx1 = make_box4(FALSE,0,FALSE,FALSE,3); //草稿
	gtk_box_pack_start(GTK_BOX(vbox),box1,FALSE,FALSE,2);
	bbox1 = gtk_hbox_new(FALSE,0);
	bbox11 = gtk_hbox_new(FALSE,0);
	bbox2 = gtk_hbox_new(FALSE,0);
	bbox3 = gtk_hbox_new(FALSE,0);
	tbox = gtk_vbox_new(FALSE,0);
	label1 = gtk_label_new("收件人");
	//gtk_misc_set_alignment(GTK_MISC(label1),0,0);/?????
	label11 = gtk_label_new("密送  ");
	label2 = gtk_label_new("主题  ");
	entry_receive = gtk_entry_new();
	entry_receive_se = gtk_entry_new();
	entry_subject = gtk_entry_new();
	

	shouyehbox1=gtk_hbox_new(FALSE,0);
	shouyehbox2=gtk_hbox_new(FALSE,0);
	nullbox1=gtk_hbox_new(FALSE,10);
	nullbox2=gtk_hbox_new(FALSE,10);
	nullbox3=gtk_hbox_new(FALSE,10);
        weidu_eventbox= gtk_event_box_new();
	//sprintf(greeting1,nickname);
	//strcat(nickname,greeting1);
	//sprintf(greeting2,weidu_number);
	



	
//	view = gtk_text_view_new();//涉及全局变量和环境变量
//	gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(view),GTK_WRAP_WORD_CHAR);


	
/*首页盒子的排列************************************************************************************************/		
	PangoFontDescription *font_desc = pango_font_description_from_string ("Serif 20");
	PangoFontDescription *font_desc1 = pango_font_description_from_string ("Serif 15");//88888888888888888888888
	shouye_label1= gtk_label_new(greeting1);
	gtk_widget_modify_font(GTK_WIDGET(shouye_label1),font_desc );
	//gtk_label_set_markup(GTK_LABEL(shouye_label1),"<span foreground='black'font_desc='59'>(&greeting1) </span>");///
	show_date_label=gtk_label_new(date);//88888888888888888888888888888888888888888888888888888888888888888888
	gtk_widget_modify_font(GTK_WIDGET(show_date_label),font_desc1 );//8888888888888888888888888888888
	shouye_label2= gtk_label_new(nickname);
	gtk_widget_modify_font(GTK_WIDGET(shouye_label2),font_desc );
	shouye_label3= gtk_label_new(greeting2);
	gtk_widget_modify_font(GTK_WIDGET(shouye_label3),font_desc );
	shouye_label4= gtk_label_new(shouxin);
	gtk_widget_modify_font(GTK_WIDGET(shouye_label4),font_desc );
	shouye_label5= gtk_label_new(greeting3);
	gtk_widget_modify_font(GTK_WIDGET(shouye_label5),font_desc );
/****************************************************************************************************************/

	gtk_container_add (GTK_CONTAINER (weidu_eventbox), shouye_label4);
	gtk_widget_set_events (weidu_eventbox, GDK_BUTTON_PRESS_MASK); 
	//g_signal_connect(G_OBJECT (weidu_eventbox), "button_press_event", 
        //  G_CALLBACK (), vbox0 ); ///
 	//gtk_widget_realize (weidu_eventbox); 
	gdk_window_set_cursor (weidu_eventbox->window, gdk_cursor_new (GDK_HAND1)); 
	

    	/*image = load_pixbuf_from_file ("1.jpg");
    	//  widget = gtk_image_new_from_pixbuf (image);
	gdk_pixbuf_render_pixmap_and_mask (image, &background, NULL, 0);
 	style = gtk_style_new ();
 	style->bg_pixmap [0] = background;*/




	sprintf(bufferl,"已发送(共%d封)",q);
	labell = gtk_label_new(bufferl);
	gtk_label_set_justify(GTK_LABEL(labell),GTK_JUSTIFY_LEFT);
 //	gtk_box_pack_start(GTK_BOX(vbox6),labell,FALSE,FALSE,2);
//	gtk_box_pack_start(GTK_BOX(vbox6),boxx1,FALSE,FALSE,2);

	sprintf(bufferl,"已删除(共%d封)",p);
	labelll = gtk_label_new(bufferl);
	gtk_label_set_justify(GTK_LABEL(labelll),GTK_JUSTIFY_LEFT);


	sprintf(bufferl,"草稿箱(共%d封)",m);
	labellll = gtk_label_new(bufferl);
//	gtk_label_set_justify(GTK_LABEL(labell),GTK_JUSTIFY_LEFT);
 //	gtk_box_pack_start(GTK_BOX(vbox5),labellll,FALSE,FALSE,2);
//	gtk_box_pack_start(GTK_BOX(vbox5),boxxxx1,FALSE,FALSE,2);




	gtk_box_pack_start(GTK_BOX(bbox1),label1,FALSE,FALSE,0);//2
	gtk_box_pack_start(GTK_BOX(bbox1),entry_receive,TRUE,TRUE,0);
	gtk_box_pack_start(GTK_BOX(bbox11),label11,FALSE,FALSE,2);//3
	gtk_box_pack_start(GTK_BOX(bbox11),entry_receive_se,TRUE,TRUE,2);
	gtk_box_pack_start(GTK_BOX(vbox),bbox1,FALSE,FALSE,2);//2fangru zonghe
	gtk_box_pack_start(GTK_BOX(vbox),bbox11,FALSE,FALSE,2);//3fangru zonghe
	gtk_box_pack_start(GTK_BOX(bbox2),label2,FALSE,FALSE,2);//4
	gtk_box_pack_start(GTK_BOX(bbox2),entry_subject,TRUE,TRUE,2);
	gtk_box_pack_start(GTK_BOX(vbox),bbox2,FALSE,FALSE,2);//4fangru zonghe



/*首页盒子的排列************************************************************************************************/
	date_box=gtk_hbox_new(FALSE,0);//888888888888888888888888888888
	gtk_box_pack_start(GTK_BOX(date_box),show_date_label,FALSE,FALSE,2);//88888888888888888888888888888
	gtk_box_pack_start(GTK_BOX(shouyehbox1),shouye_label1,FALSE,FALSE,2);//晚上好 昵称放横盒
	gtk_box_pack_start(GTK_BOX(shouyehbox1),shouye_label2,FALSE,FALSE,2);

	gtk_box_pack_start(GTK_BOX(shouyehbox2),shouye_label3,FALSE,FALSE,2);//您有n封未读邮件放横盒
	gtk_box_pack_start(GTK_BOX(shouyehbox2),weidu_eventbox,FALSE,FALSE,2);//数字n放事件盒
	gtk_box_pack_start(GTK_BOX(shouyehbox2),shouye_label5,FALSE,FALSE,2);
	gtk_box_pack_start(GTK_BOX(vbox0),nullbox1,FALSE,FALSE,10);
	gtk_box_pack_start(GTK_BOX(vbox0),nullbox2,FALSE,FALSE,10);
	gtk_box_pack_start(GTK_BOX(vbox0),date_box,FALSE,FALSE,2);//888888888888
	gtk_box_pack_start(GTK_BOX(vbox0),nullbox3,FALSE,FALSE,10);
	gtk_box_pack_start(GTK_BOX(vbox0),shouyehbox1,FALSE,FALSE,2);//两个横盒放纵盒
	gtk_box_pack_start(GTK_BOX(vbox0),shouyehbox2,FALSE,FALSE,2);

/***********************************************************************************************************/
	view = gtk_text_view_new();//涉及全局变量和环境变量8888888888888888888888888888888888
	gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(view),GTK_WRAP_WORD_CHAR);//88888888888888888888



	toolbar = gtk_toolbar_new();
//shezhi gongju lan feng ge 
	gtk_toolbar_set_style(GTK_TOOLBAR(toolbar),GTK_TOOLBAR_ICONS);
//shezhi gongjulan tubiao daxiao
	gtk_toolbar_set_icon_size(GTK_TOOLBAR(toolbar),GTK_ICON_SIZE_SMALL_TOOLBAR);
	handlebox = gtk_handle_box_new();
	gtk_container_add(GTK_CONTAINER(handlebox),toolbar);
	
        toolitem = addToolItem(toolbar, "font","清空重新编辑","xinjian.bmp");
	g_signal_connect(toolitem,"clicked",G_CALLBACK(cleanup),NULL);
	toolitem = addToolItem(toolbar, "font","附件","fujian.bmp");
	g_signal_connect(toolitem,"clicked",G_CALLBACK(fujian),NULL);
	toolitem = addToolItem(toolbar, "font","字体","ziti.bmp");
	g_signal_connect(toolitem,"clicked",G_CALLBACK(on_button_clicked),NULL);
	toolitem = addToolItem(toolbar, "color","顏色","yanse.bmp");
	g_signal_connect(toolitem,"clicked",G_CALLBACK(on_ok_clicked),NULL);
	toolitem = addToolItem(toolbar, "paper","信纸","xinzhi.bmp");
//	g_signal_connect(toolitem,"clicked",G_CALLBACK(onCommand),(gpointer)CMD_QUIT);
//	GtkWidget *vbox;//整个窗口纵盒

	addSeparatorToolItem(toolbar);
	toolitem = addStockToolItem(toolbar,GTK_STOCK_JUSTIFY_CENTER,"居中对齐");
	toolitem = addStockToolItem(toolbar,GTK_STOCK_JUSTIFY_LEFT,"左对齐");
	toolitem = addStockToolItem(toolbar,GTK_STOCK_JUSTIFY_RIGHT,"右对齐");
	toolitem = addStockToolItem(toolbar,GTK_STOCK_FIND,"查找");

	frame = gtk_frame_new("正文");
	gtk_widget_set_size_request(frame,50,400);

	tvbox = gtk_vbox_new(FALSE,0);
	gtk_box_pack_start(GTK_BOX(vbox),handlebox,FALSE,FALSE,0);
	gtk_box_pack_start(GTK_BOX(vbox),frame,FALSE,FALSE,0);

	statusbar = statusbar1(view);


//	gtk_box_pack_start(GTK_BOX(tbox),view,FALSE,FALSE,2);
	gtk_container_add(GTK_CONTAINER(frame),view);
//	gtk_widget_show(tbox);
//	gtk_container_add(GTK_CONTAINER(frame),statusbar);

//	gtk_widget_show(statusbar);

	gtk_box_pack_start(GTK_BOX(vbox),button,TRUE,TRUE,0);


	gtk_box_pack_start(GTK_BOX(vbox),tvbox,FALSE,FALSE,2);// gongjulan fang zonghe999999

	gtk_box_pack_start(GTK_BOX(vbox),bbox3,FALSE,FALSE,2);//zhengwen henghe fang zonghe






	//gtk_container_add(GTK_CONTAINER(window),vbox);
	//gtk_widget_show_all(vbox);
	//初始化GTK
	//gtk_init(&argc,&argv);
	//创建最上层主窗口
	//window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
	//连接信号"delete_event",使得窗口关闭时发生
	//g_signal_connect(G_OBJECT(window),"delete_event",GTK_SIGNAL_FUNC(delete),NULL);
	//设置窗口标题	
	//gtk_window_set_title(GTK_WINDOW(window),"wingmail");
	//设定窗口的默认宽高
	//gtk_window_set_default_size(GTK_WINDOW(window),800,400);
	//设定窗口的位置,让窗口总在最前端
	//gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
	//设定容器边框的宽度
	//gtk_container_set_border_width(GTK_CONTAINER(window),15);

        notebook = gtk_notebook_new();
        gtk_notebook_set_tab_pos(GTK_NOTEBOOK(notebook),GTK_POS_LEFT);
	//gtk_container_add(GTK_CONTAINER(window),notebook);
        gtk_widget_show(notebook);
//已删除vbox7制作
	GtkWidget *vbox7_m;
	vbox7_m=make_yishanchu();
	sprintf(bufferl,"已删除");
 	gtk_box_pack_start(GTK_BOX(vbox7),labelll,FALSE,FALSE,2);
	gtk_box_pack_start(GTK_BOX(vbox7),boxxx1,FALSE,FALSE,2);
        gtk_box_pack_start(GTK_BOX(vbox7),vbox7_m,FALSE,FALSE,2);
        label = gtk_label_new(bufferl);
        gtk_notebook_prepend_page(GTK_NOTEBOOK(notebook),vbox7,label);

//已发送vbox6制作
	GtkWidget *vbox6_m;
	vbox6_m=make_yifasong();
 	gtk_box_pack_start(GTK_BOX(vbox6),labell,FALSE,FALSE,2);
	gtk_box_pack_start(GTK_BOX(vbox6),boxx1,FALSE,FALSE,2);
	gtk_box_pack_start(GTK_BOX(vbox6),vbox6_m,FALSE,FALSE,2);
	sprintf(bufferl,"已发送");

        label = gtk_label_new(bufferl);
        gtk_notebook_prepend_page(GTK_NOTEBOOK(notebook),vbox6,label);

//草稿箱vbox5制作
	GtkWidget *vbox5_m;
	vbox5_m=make_caogaoxiang();
	gtk_box_pack_start(GTK_BOX(vbox5),labell,FALSE,FALSE,2);
	//gtk_box_pack_start(GTK_BOX(vbox5),boxx1,FALSE,FALSE,2);
	gtk_box_pack_start(GTK_BOX(vbox5),vbox5_m,FALSE,FALSE,2);
	sprintf(bufferl,"草稿箱(%d)",i);
	
        label = gtk_label_new(bufferl);
        gtk_notebook_prepend_page(GTK_NOTEBOOK(notebook),vbox5,label);
收件箱vbox4制作
        vbox4=make_receive_all();
	sprintf(bufferl,"收件箱(%d)",i);

        label = gtk_label_new(bufferl);
        gtk_notebook_prepend_page(GTK_NOTEBOOK(notebook),vbox4,label);


	sprintf(bufferl,"通讯录");

        label = gtk_label_new(bufferl);
        gtk_notebook_prepend_page(GTK_NOTEBOOK(notebook),vbox3,label);

 收信vbox2制作       
	sprintf(bufferl,"收信");
	vbox2=make_shouxin();
        label = gtk_label_new(bufferl);
        gtk_notebook_prepend_page(GTK_NOTEBOOK(notebook),vbox2,label);

	sprintf(bufferl,"写信");

        label = gtk_label_new(bufferl);
        gtk_notebook_prepend_page(GTK_NOTEBOOK(notebook),vbox,label);

	sprintf(bufferl,"首页");

        label = gtk_label_new(bufferl);
        gtk_notebook_prepend_page(GTK_NOTEBOOK(notebook),vbox0,label);
	
   	 gtk_notebook_set_page(GTK_NOTEBOOK(notebook),0);
	
	//gtk_widget_show_all(notebook);
	//gtk_widget_show_all(window);
	//gtk_main();
	return notebook;
}
login.c

#include <gtk/gtk.h> 
#include <string.h>
#include "main.h"
 

//int sign=1;
/*GtkWidget *entry_name;//登录界面
GtkWidget *entry_pass;
 char name[20];
  char pass[20];//密码

char* host_name="127.0.0.1";//"192.168.100.1";
int port=8888;
GtkWidget *window_all;*/
gint delete_event( GtkWidget *widget, GdkEvent  *event, gpointer   data ); 

/*GtkWidget *make_box1( gboolean homogeneous,
                     gint     spacing,
                     gboolean expand,
                     gboolean fill,
                     guint    padding ) 
{
    GtkWidget *box;
    GtkWidget *button;
    char padstr[80];
    
    /// 以合适的 homogeneous 和 spacing 设置创建一个新的横向盒 
    box = gtk_hbox_new (homogeneous, spacing);
    
    button = gtk_button_new_with_label ("发送");
    gtk_box_pack_start (GTK_BOX (box), button, expand, fill, padding);
    gtk_widget_show (button);
    
    button = gtk_button_new_with_label ("存草稿");
    gtk_box_pack_start (GTK_BOX (box), button, expand, fill, padding);
    gtk_widget_show (button);

    button = gtk_button_new_with_label ("关閉");
    gtk_box_pack_start (GTK_BOX (box), button, expand, fill, padding);
    gtk_widget_show (button);
    
    return box;
}
 GtkWidget *make_box2( gboolean homogeneous,
                     gint     spacing,
                     gboolean expand,
                     gboolean fill,
                     guint    padding ) 
{
    GtkWidget *box;
    GtkWidget *button;
    char padstr[80];
    
    /// 以合适的 homogeneous 和 spacing 设置创建一个新的横向盒 
    box = gtk_hbox_new (homogeneous, spacing);
    

    button = gtk_button_new_with_label ("添加抄送");
    gtk_box_pack_start (GTK_BOX (box), button, expand, fill, padding);
    gtk_widget_show (button);
    
    button = gtk_button_new_with_label ("添加密送");
    gtk_box_pack_start (GTK_BOX (box), button, expand, fill, padding);
    gtk_widget_show (button);
    
    return box;
}
 GtkWidget *make_box3( gboolean homogeneous,
                     gint     spacing,
                     gboolean expand,
                     gboolean fill,
                     guint    padding ) 
{
    GtkWidget *box;
    GtkWidget *button;
    char padstr[80];
    
    //以合适的 homogeneous 和 spacing 设置创建一个新的横向盒 
    box = gtk_hbox_new (homogeneous, spacing);
    
    button = gtk_button_new_with_label ("添加附件");
    gtk_box_pack_start (GTK_BOX (box), button, expand, fill, padding);
    gtk_widget_show (button);
    
    button = gtk_button_new_with_label ("格式");
    gtk_box_pack_start (GTK_BOX (box), button, expand, fill, padding);
    gtk_widget_show (button);
	
	
    button = gtk_button_new_with_label ("信纸");
    gtk_box_pack_start (GTK_BOX (box), button, expand, fill, padding);
    gtk_widget_show (button);
    return box;
}*/

/*void tabsborder_book( GtkButton   *button,
                      GtkNotebook *notebook )
{
    gint bval = FALSE;

    if (notebook->show_border == 0)
            bval = TRUE;
 
    gtk_notebook_set_show_border (notebook, bval);
}*/
/*void delete(GtkWidget *widget,GtkWidget *event,gpointer data)
{
    gtk_main_quit();
}*/



void hello( GtkWidget *widget, gpointer  data ) 
 { 
  g_print ("Hello World\n"); 
} 

int compare(char *name,char *pass)//將用戶名和密码与数据库中的相对比,合法返回1,不合法返回0
{
   int sign=1;
   /*........*/   //连数据库
 	printf("name:%s\n",name);
   	printf("pass:%s\n",pass);
	char str[1024];//str表示拼接后的字符串
	memset(str,' ',sizeof(str));
   	memset(buf,0,sizeof(buf));

	str[0]='u';
	str[1]='1';
	int i=0,l=0;
	l=strlen(name);
printf("len_name:%d\nname:",l);
	str[2]=(char)l;
	for(i=3;i<l+3;i++){
		str[i]=name[i-3];
		printf("%c",str[i]);
	}
printf("\n");
	l=strlen(pass);
printf("len_pass:%d\npassword:",l);
	str[15]=(char)l;
	for(i=16;i<l+16;i++){
		str[i]=pass[i-16];
		printf("%c",str[i]);
	}
printf("\n");
printf("str:%s\n",str);
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
	if((socket_descriptor=socket(AF_INET, SOCK_STREAM, 0))==-1)
	{
		perror("error opening socket\n");
        	exit(1);
	}
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
	if(connect(socket_descriptor, (void*)&pin, sizeof(pin))==-1)
	{
 		perror("can not connecting to server\n");
        	exit(1);
	}
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
	if(send(socket_descriptor, str, strlen(str), 0)==-1)
	{
		perror("can not send message\n");
		exit(1);
	}
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
memset(buf, 0, sizeof(buf));
	if(recv(socket_descriptor, buf, sizeof(buf), 0)<0)//==-1)
	{
		perror("can not receive response\n");
        	exit(1);
	}
	else{
		printf("message received from server:%s\n",buf);
		if(strcmp(buf,"login_success")==0){
			sign=1;
		}
		else{
			sign=0;
		}
	}
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
   return sign;
}

void in_mainpage( GtkWidget *widget,gpointer data ) 
 { 

 
  strcpy(name,gtk_entry_get_text(GTK_ENTRY(entry_name)));
  strcpy(pass,gtk_entry_get_text(GTK_ENTRY(entry_pass)));
  //int sign;
  sign=compare(name,pass);
  if(sign)//登入主界面
  {
   
   /*.......*/
   //gtk_widget_destroy(data);
   gtk_widget_hide(data);
   GtkWidget *window;
   GtkWidget *table;
   GtkWidget *logo; 
   GtkWidget *name_label;
   GtkWidget *out_event_box;
   GtkWidget *out_label;
   GtkWidget *temp_label;
   GtkWidget *settings_label;
   GtkWidget *settings_event_box;   
   GtkWidget *change_event_box; 
   GtkWidget *change_label;
   GtkWidget *write_image;
   GtkWidget *write_label;
   GtkWidget *write_event_box;
   GtkWidget *recive_label;
   GtkWidget *recive_image;
   GtkWidget *recive_event_box;
   GtkWidget *contactor_image;
   GtkWidget *contactor_label;
   GtkWidget *contactor_event_box;
   GtkWidget *notebook;
      
	/*GtkStyle *style1;      
	GdkPixbuf *pixbuf1;        
	GdkPixmap *pixmap1;      
	gint width1, height1;
	pixbuf1 = gdk_pixbuf_new_from_file("./lala.jpg", NULL); 
	   
	width1 = gdk_pixbuf_get_width(pixbuf1);
    
	height1 = gdk_pixbuf_get_height(pixbuf1);     
	pixmap1 = gdk_pixmap_new(NULL, width1, height1, 24);  
  
	gdk_pixbuf_render_pixmap_and_mask(pixbuf1, &pixmap1, NULL, 0);
printf("hhhhh\n"); 
	style1 = gtk_style_copy(GTK_WIDGET(window)->style); 
    
	if (style1->bg_pixmap[GTK_STATE_NORMAL])         
    	g_object_unref(style1->bg_pixmap[GTK_STATE_NORMAL]);     
	style1->bg_pixmap[GTK_STATE_NORMAL] = g_object_ref(pixmap1);     
	style1->bg_pixmap[GTK_STATE_ACTIVE] = g_object_ref(pixmap1);
	style1->bg_pixmap[GTK_STATE_PRELIGHT] = g_object_ref(pixmap1);
	style1->bg_pixmap[GTK_STATE_SELECTED] = g_object_ref(pixmap1);
	style1->bg_pixmap[GTK_STATE_INSENSITIVE] = g_object_ref(pixmap1);
	gtk_widget_set_style(GTK_WIDGET(window), style1);
	g_object_unref(style1);	*/

   window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  // gtk_widget_set_size_request (GTK_WINDOW(window),350,350);

 //   gtk_window_resize(GTK_WINDOW(window),600,700);
   gtk_window_set_title(GTK_WINDOW(window),"主界面");
   gtk_window_set_resizable(GTK_WINDOW(window),TRUE);
   gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
   gtk_container_set_border_width (GTK_CONTAINER (window),11);

   gtk_window_set_default_size(GTK_WINDOW(window),400,500);
   g_signal_connect (G_OBJECT (window), "delete_event", 
         G_CALLBACK (delete_event), NULL); 
   //添一个表控件
   table = gtk_table_new (60, 100, FALSE); 
   gtk_container_add (GTK_CONTAINER (window), table); 
   //添loge
  // logo = gtk_image_new_from_file ("logo.jpg");
   //gtk_table_attach_defaults (GTK_TABLE (table), logo, 0, 1, 0, 2);
   //用户名
   name_label=gtk_label_new ("用户名<");
 //  gtk_table_attach (GTK_TABLE (table), name_label, 5, 7, 0, 3,GTK_SHRINK,GTK_SHRINK,0,0);
   gtk_table_attach_defaults (GTK_TABLE (table), name_label, 5, 7, 0, 3);
   name_label=gtk_label_new (name);
 //  gtk_table_attach(GTK_TABLE (table), name_label, 7, 9, 0, 3,GTK_SHRINK,GTK_SHRINK,0,0);
     gtk_table_attach_defaults(GTK_TABLE (table), name_label, 7, 9, 0, 3);
   name_label=gtk_label_new (">");
  // gtk_table_attach(GTK_TABLE (table), name_label, 9, 11, 0, 3,GTK_SHRINK,GTK_SHRINK,0,0);
     gtk_table_attach_defaults(GTK_TABLE (table), name_label, 9, 11, 0, 3);
   //时间
   /*........*/

   //退出
   out_event_box= gtk_event_box_new ();
  // gtk_table_attach(GTK_TABLE (table), out_event_box, 11, 13, 0, 3,GTK_SHRINK,GTK_SHRINK,0,0);
     gtk_table_attach_defaults(GTK_TABLE (table), out_event_box, 11, 13, 0, 3);
   out_label=gtk_label_new_with_mnemonic("_退出");
   gtk_label_set_pattern (GTK_LABEL (out_label),  "___"); 
   gtk_container_add (GTK_CONTAINER (out_event_box), out_label);
   gtk_widget_set_events (out_event_box, GDK_BUTTON_PRESS_MASK); 
   g_signal_connect (G_OBJECT (out_event_box), "button_press_event", 
            G_CALLBACK (delete_event), NULL); 
   //gtk_widget_realize (out_event_box); 
   gdk_window_set_cursor (out_event_box->window, gdk_cursor_new (GDK_HAND1)); 
   //邮箱首页
   //邮件搜索
   //设置
   settings_event_box= gtk_event_box_new ();
  // gtk_table_attach(GTK_TABLE (table), settings_event_box, 7, 9, 3, 6,GTK_SHRINK,GTK_SHRINK,0,0);
    gtk_table_attach_defaults(GTK_TABLE (table), settings_event_box, 7, 9, 3, 6	);
   settings_label=gtk_label_new_with_mnemonic("_设置");
   gtk_label_set_pattern (GTK_LABEL (settings_label),  "___"); 
   gtk_container_add (GTK_CONTAINER (settings_event_box), settings_label);
   gtk_widget_set_events (settings_event_box, GDK_BUTTON_PRESS_MASK); 
   g_signal_connect (G_OBJECT (settings_event_box), "button_press_event", 
            G_CALLBACK (hello), NULL); 
   //gtk_widget_realize (settings_event_box); //failed
   gdk_window_set_cursor (settings_event_box->window, gdk_cursor_new (GDK_HAND1)); 
   
   //换肤
   change_event_box= gtk_event_box_new ();
   gtk_table_attach(GTK_TABLE (table), change_event_box, 9, 11, 3, 6,GTK_SHRINK,GTK_SHRINK,0,0);
  //  gtk_table_attach_defaults(GTK_TABLE (table), change_event_box, 9, 11, 3, 6);
   change_label=gtk_label_new_with_mnemonic("_换肤");
   gtk_label_set_pattern (GTK_LABEL (change_label),  "___"); 
   gtk_container_add (GTK_CONTAINER (change_event_box), change_label);
   gtk_widget_set_events (change_event_box, GDK_BUTTON_PRESS_MASK); 
   g_signal_connect (G_OBJECT (change_event_box), "button_press_event", 
            G_CALLBACK (hello), NULL); 
   //gtk_widget_realize (change_event_box); //failed
   gdk_window_set_cursor (change_event_box->window, gdk_cursor_new (GDK_HAND1)); 
   
 
///插入notebook

	notebook=make_notebook();

  //      gtk_table_attach (GTK_TABLE (table), notebook, 0, 15, 6,30,GTK_SHRINK,GTK_SHRINK,0,0);/将notebook插到主界面中
	gtk_table_attach_defaults (GTK_TABLE (table), notebook, 0, 25,24,30);/将notebook插到主界面中
   
   //插入notebook
   gtk_widget_show_all(window);
   //gtk_widget_destroy(window_all);
  }
  else//警告界面
  {
   /*......*/
   GtkWidget *window; 
   GtkWidget *y_button;
   GtkWidget *warning;
   GtkWidget *total_box;

   window = gtk_window_new (GTK_WINDOW_TOPLEVEL); 
   gtk_window_set_title(GTK_WINDOW(window),"警告");
   gtk_window_set_resizable(GTK_WINDOW(window),FALSE);
   gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
   gtk_container_set_border_width (GTK_CONTAINER (window),50); 
 
   total_box=gtk_vbox_new (FALSE, 0);
   gtk_container_add (GTK_CONTAINER (window), total_box);

   warning = gtk_label_new ("用戶名或密码不正确,登录矢败\n");
   gtk_box_pack_start(GTK_BOX(total_box),warning,FALSE,FALSE,3);
   gtk_widget_show (warning); 

   y_button = gtk_button_new_with_label ("确定");
   gtk_box_pack_start(GTK_BOX(total_box),y_button,FALSE,FALSE,3);
   g_signal_connect_swapped(G_OBJECT (y_button), "clicked", 
             G_CALLBACK (gtk_widget_destroy), 
             window); 
   gtk_widget_show_all(window);
   
  }
  //g_print ("Hello World\n"); 
  g_print("%s\n",name);
  g_print("%s\n",pass);
} 



gint delete_event( GtkWidget *widget, GdkEvent  *event, gpointer   data ) // 弹出“你确定要退出吗?”对话框
 { 

   //弹出“你确定要退出吗?”对话框时它很有用

  g_print ("delete event occurred\n"); 
  
  GtkWidget *window; 
  GtkWidget *y_button; 
  GtkWidget *n_button;
  GtkWidget *warning;
  //GtkWidget *warning_box; 
  GtkWidget *button_box;
  GtkWidget *total_box;

  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  gtk_window_set_title(GTK_WINDOW(window),"warning");
  gtk_window_set_resizable(GTK_WINDOW(window),FALSE);
  gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
  gtk_container_set_border_width (GTK_CONTAINER (window),50); 
  //竖框裝所有控件
  total_box=gtk_vbox_new (FALSE, 0);
  gtk_container_add (GTK_CONTAINER (window), total_box);
  //提示语句
  warning = gtk_label_new ("确定要退出吗?\n");
  gtk_box_pack_start(GTK_BOX(total_box),warning,FALSE,FALSE,3);
  gtk_widget_show (warning); 
  //横框装两个按钮
  button_box = gtk_hbox_new (FALSE, 0);
  y_button = gtk_button_new_with_label ("确定");
  n_button = gtk_button_new_with_label ("取消");

  //將按钮装入横框
  gtk_box_pack_start(GTK_BOX(button_box),y_button,FALSE,FALSE,3);
  gtk_box_pack_start(GTK_BOX(button_box),n_button,FALSE,FALSE,3);
  gtk_widget_show (y_button); 
  gtk_widget_show (n_button);
  //將横框装入竖框
   gtk_box_pack_start(GTK_BOX(total_box),button_box,FALSE,FALSE,3); 
  
   gtk_widget_show(total_box);
   gtk_widget_show(button_box);
   gtk_widget_show(window);
  
   g_signal_connect_swapped(G_OBJECT (y_button), "clicked", 
             G_CALLBACK (gtk_main_quit), window);  
   g_signal_connect_swapped(G_OBJECT (n_button), "clicked", 
             G_CALLBACK (gtk_widget_destroy), 
             window); 
   /* 改 TRUE 为 FALSE 程序会关闭。*/ 
   return TRUE; 
} 

/*void destroy( GtkWidget *widget,  gpointer  data ) ///?
 { 
  gtk_main_quit (); 
} */
//
int main( int  argc,  char *argv[] ) 
{ 
  GtkWidget *window; 
  GtkWidget *button;
  GtkWidget *total_box;
  GtkWidget *image;
  GtkWidget *name_box;
  GtkWidget *pass_box;
  GtkWidget *check_box;
  GtkWidget *end_box;
  GtkWidget *name_entry;
  GtkWidget *pass_entry;
  GtkWidget *rem_check;
  GtkWidget *auto_check;
  GtkWidget *r_event_box;
  GtkWidget *f_event_box;
  GtkWidget *reg_label;
  GtkWidget *forg_label;



/***********建立socket连接**********/
  host_name="127.0.0.1";//"192.168.100.1";
  port=12444;	
  bzero(&pin, sizeof(pin));
  pin.sin_family=AF_INET;
  pin.sin_addr.s_addr = inet_addr("127.0.0.1");
  pin.sin_port=htons(port);
  //printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
	
/***********建立socket连接**********/

/******************************多线程*******************************/

/******************************多线程*******************************/
 
  gtk_init (&argc, &argv); 

  window_all=window = gtk_window_new (GTK_WINDOW_TOPLEVEL); 
  gtk_window_set_title(GTK_WINDOW(window),"用戶登录");
  gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
  gtk_window_set_resizable(GTK_WINDOW(window),TRUE);
  g_signal_connect (G_OBJECT (window), "delete_event", 
         G_CALLBACK (delete_event), NULL); 



 /* 设置窗口边框的宽度。*/ 
 gtk_container_set_border_width (GTK_CONTAINER (window),70); 
 
 total_box=gtk_vbox_new (FALSE, 0);
 gtk_container_add (GTK_CONTAINER (window), total_box);
 //插入图片
 image = gtk_image_new_from_file ("logo.jpg");
 gtk_box_pack_start(GTK_BOX(total_box),image,FALSE,FALSE,1);
 //插入横hbox
  name_box=gtk_hbox_new (FALSE, 0);
  gtk_box_pack_start(GTK_BOX(total_box),name_box,FALSE,FALSE,3);
  //插入用戶名
  entry_name=name_entry=gtk_entry_new();
  gtk_entry_set_text(GTK_ENTRY(name_entry),"用戶名");
  gtk_box_pack_start(GTK_BOX(name_box),name_entry,FALSE,FALSE,3);
  //strcpy(information->name,gtk_entry_get_text(GTK_ENTRY(name_entry)));

  //插入横hbox
  pass_box=gtk_vbox_new (FALSE, 0);
  gtk_box_pack_start(GTK_BOX(total_box),pass_box,FALSE,FALSE,3);
  //输入密码
  entry_pass=pass_entry=gtk_entry_new();
  gtk_entry_set_text(GTK_ENTRY(pass_entry),"密码");
  gtk_entry_set_visibility(GTK_ENTRY(pass_entry),FALSE);
  gtk_box_pack_start(GTK_BOX(pass_box),pass_entry,FALSE,FALSE,3);
  //strcpy(information->pass,gtk_entry_get_text(GTK_ENTRY(pass_entry)));
  //插入横hbox
  check_box=gtk_hbox_new (FALSE, 0);
  gtk_box_pack_start(GTK_BOX(total_box),check_box,FALSE,FALSE,3);
  //插入记密码和自动登录
  rem_check = gtk_check_button_new_with_label ("记住密码"); 
  gtk_box_pack_start (GTK_BOX (check_box), rem_check, TRUE, TRUE, 0); 
  //g_signal_connect (G_OBJECT (check), "toggled", 
           // G_CALLBACK (entry_toggle_editable), entry); 
  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (rem_check), TRUE); ///
  gtk_widget_show (rem_check); 
  
  auto_check = gtk_check_button_new_with_label ("自动登录"); 
  gtk_box_pack_start (GTK_BOX (check_box), auto_check, TRUE, TRUE, 0); 
  //g_signal_connect (G_OBJECT (check), "toggled", 
           // G_CALLBACK (entry_toggle_editable), entry); 
  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (auto_check), TRUE); 
  gtk_widget_show (auto_check);
  //插入按扭
  button = gtk_button_new_with_label ("登录"); 
  gtk_box_pack_start(GTK_BOX(total_box),button,FALSE,FALSE,3);
  g_signal_connect (G_OBJECT (button), "clicked", 
         G_CALLBACK (in_mainpage), window); 
  //gtk_widget_hide_all(window);
 /* 当点击按钮时,会通过调用 gtk_widget_destroy(window) 来关闭窗口。 
 * "destroy" 信号会从这里或从窗口管理器发出。*/ 

 /*g_signal_connect_swapped(G_OBJECT (button), "clicked", 
             G_CALLBACK (gtk_widget_destroy), 
             window); */

	GtkStyle *style;      
	GdkPixbuf *pixbuf;        
	GdkPixmap *pixmap;      
	gint width, height;     
	pixbuf = gdk_pixbuf_new_from_file("./lala.jpg", NULL);     
	width = gdk_pixbuf_get_width(pixbuf);    
	height = gdk_pixbuf_get_height(pixbuf);     
	pixmap = gdk_pixmap_new(NULL, width, height, 24);    
	gdk_pixbuf_render_pixmap_and_mask(pixbuf, &pixmap, NULL, 0);
	style = gtk_style_copy(GTK_WIDGET(window)->style);     
	if (style->bg_pixmap[GTK_STATE_NORMAL])         
    	g_object_unref(style->bg_pixmap[GTK_STATE_NORMAL]);     
	style->bg_pixmap[GTK_STATE_NORMAL] = g_object_ref(pixmap);     
	style->bg_pixmap[GTK_STATE_ACTIVE] = g_object_ref(pixmap);
	style->bg_pixmap[GTK_STATE_PRELIGHT] = g_object_ref(pixmap);
	style->bg_pixmap[GTK_STATE_SELECTED] = g_object_ref(pixmap);
	style->bg_pixmap[GTK_STATE_INSENSITIVE] = g_object_ref(pixmap);
	gtk_widget_set_style(GTK_WIDGET(window), style);
	g_object_unref(style);	
  end_box=gtk_hbox_new (FALSE, 0);
  gtk_box_pack_start(GTK_BOX(total_box),end_box,FALSE,FALSE,20);
  //注冊事件盒
  r_event_box = gtk_event_box_new (); 
  gtk_box_pack_start(GTK_BOX(end_box),r_event_box,FALSE,FALSE,3);
   
  gtk_widget_show (r_event_box);
  reg_label = gtk_label_new ("注冊新用戶\n");
  gtk_container_add (GTK_CONTAINER (r_event_box), reg_label);
  gtk_widget_show (reg_label);
  gtk_widget_set_events (r_event_box, GDK_BUTTON_PRESS_MASK); 
  g_signal_connect (G_OBJECT (r_event_box), "button_press_event", 
            G_CALLBACK (register_), NULL); 
  gtk_widget_realize (r_event_box); 
  gdk_window_set_cursor (r_event_box->window, gdk_cursor_new (GDK_HAND1)); 
  //忘记密码
  f_event_box = gtk_event_box_new (); 
  gtk_box_pack_end(GTK_BOX(end_box),f_event_box,FALSE,FALSE,3);
   
  gtk_widget_show (f_event_box);
  forg_label = gtk_label_new ("忘记密码\n");
  gtk_container_add (GTK_CONTAINER (f_event_box), forg_label);
  gtk_widget_show (forg_label);
  gtk_widget_set_events (f_event_box, GDK_BUTTON_PRESS_MASK); 
  g_signal_connect (G_OBJECT (f_event_box), "button_press_event", 
            G_CALLBACK (hello), NULL); 
  gtk_widget_realize (f_event_box); 
  gdk_window_set_cursor (f_event_box->window, gdk_cursor_new (GDK_HAND1)); 

 /* 最后一步是显示新创建的按钮和窗口 */ 
 /*gtk_widget_show (total_box);
 gtk_widget_show (name_box);
 gtk_widget_show (pass_box);
 gtk_widget_show (check_box);
 gtk_widget_show (end_box);
 gtk_widget_show (name_entry);
 gtk_widget_show (pass_entry);
 gtk_widget_show (image);
 gtk_widget_show (button); */
 gtk_widget_show_all (window); 
 

 /*所有的 GTK 程序必须有一个 gtk_main() 函数。程序运行停在这里 
 * 等待事件 (如键盘事件或鼠标事件) 的发生。*/ 
 gtk_main (); 

 return 0; 
}

caogaoxiang.c

#include <gtk/gtk.h> 
#include <string.h>
#include "main.h"
GtkWidget *window_receive;
//char * name = "jack@123.com";
/* 用于list view */
enum ListCols
{
    LIST_CHECKED,
    LIST_RECEIVER,
    LIST_SUBJECT,
    LIST_TIME
};

void select_show_caogao(GtkTreeSelection* select, gpointer data) //获得账号和发送时间发送给数据库
{
    //GtkTreeIter iter;
    //GtkTreeModel* model;
    gchar* receiver;
    gchar* time1;
    gchar* subject;
    char buf[100]={"hiierjhejkhjkdfh"};
    //gchar* info;
    char request[50];
    int len;
	int i;
    memset(request,' ',sizeof(request));
//printf("hhhh");
    if(gtk_tree_selection_get_selected(select, &caogaoxiang_model, &caogaoxiang_iter))
    {
        gtk_tree_model_get(caogaoxiang_model, &caogaoxiang_iter, LIST_RECEIVER, &receiver,LIST_TIME,&time1,LIST_SUBJECT,&subject,-1);
         printf("%s\n",time1);
        request[0]='2';
        request[1]='3';
        len=strlen(name);
        request[2]=(char)len;
        for(i=0;i<len;i++){
		request[i+3]=name[i];
	}
	request[15]=26;
	for(i=0;i<26;i++){
		request[i+16]=time1[i];
	}
        //连接数据库,获得装有邮件内容的buf
	/**************************/
 
        window_show_caogao(name,subject,time1,receiver,buf);///弹出邮件阅读窗口,显示邮件

        printf("%s\n",request);
        g_free(receiver);
	g_free(time1);
    }
}


GtkWidget * create_list_caogao()//创建显示草稿箱信息的列表
{

    GtkWidget* vbox ;

   // GtkTreeView* list;
   // GtkListStore*  list_store;
    GtkTreeIter iter;
    GtkCellRenderer* renderer;
    GtkTreeViewColumn* column;
    GtkTreeSelection* select;
    vbox = gtk_vbox_new (FALSE, 2);

    /* 创建ListView */
    caogaoxiang_list = gtk_tree_view_new();
    /* 创建ListView的model, 添加数据 */
    caogaoxiang_list_store = gtk_list_store_new(4,G_TYPE_BOOLEAN,
                                    G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING);
   //连接数据库,获得邮件列表
	/**************************/
  
  
    gtk_list_store_append(caogaoxiang_list_store, &iter);
    gtk_list_store_set(caogaoxiang_list_store, &iter,
                       LIST_CHECKED,FALSE,
                       LIST_RECEIVER, "KENBER",
                       LIST_SUBJECT, "HHHHHHHHHHH",
                       LIST_TIME,"2014年02月03日13时34分26秒" , -1);
      gtk_list_store_append(caogaoxiang_list_store, &iter);
    gtk_list_store_set(caogaoxiang_list_store, &iter,
                       LIST_CHECKED,FALSE,
                       LIST_RECEIVER, "guosiyu",
                       LIST_SUBJECT, "uuuuuuu",
                       LIST_TIME,"2012年02月07日13时34分26秒" , -1);
    gtk_tree_view_set_model(caogaoxiang_list, caogaoxiang_list_store);
    //g_object_unref(list_store);

    /* 创建ListView的View */
        renderer = gtk_cell_renderer_toggle_new();
    column = gtk_tree_view_column_new_with_attributes("选择", renderer,
             "active", LIST_CHECKED, NULL);
    column = gtk_tree_view_append_column(caogaoxiang_list, column);
    renderer = gtk_cell_renderer_text_new();
    column = gtk_tree_view_column_new_with_attributes("收件人", renderer,
             "text", LIST_RECEIVER, NULL);
    column = gtk_tree_view_append_column(caogaoxiang_list, column);
    renderer = gtk_cell_renderer_text_new();
    column = gtk_tree_view_column_new_with_attributes("主题", renderer,
             "text", LIST_SUBJECT, NULL);
    column = gtk_tree_view_append_column(caogaoxiang_list, column);
    column = gtk_tree_view_column_new_with_attributes("日期", renderer,
             "text", LIST_TIME, NULL);
    column = gtk_tree_view_append_column(caogaoxiang_list, column);
    
    //设置点击列表触发事件
    select = gtk_tree_view_get_selection(caogaoxiang_list);
    gtk_tree_selection_set_mode(select, GTK_SELECTION_SINGLE);
    g_signal_connect(G_OBJECT(select), "changed",
                     G_CALLBACK(select_show_caogao), NULL);


    gtk_box_pack_start(vbox, caogaoxiang_list, TRUE, TRUE, 1);
    return vbox;
}


GtkWidget *make_box6( gboolean homogeneous,      //已发送  
                     gint     spacing,
                     gboolean expand,
                     gboolean fill,
                     guint    padding ) 
{
    GtkWidget *box;
    GtkWidget *button;
    char padstr[80];
    
    
    box = gtk_hbox_new (homogeneous, spacing);
    
 
    button = gtk_button_new_with_label (" 回 复 ");
    gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 2);
    gtk_widget_show (button);
    
    button = gtk_button_new_with_label (" 转 发 ");
    gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 2);
    gtk_widget_show (button);

    button = gtk_button_new_with_label (" 删 除 ");
    gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 2);
    gtk_widget_show (button);

    button = gtk_button_new_with_label (" 标 记 ");
    gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 2);
    gtk_widget_show (button);	
    
    return box;
}

GtkWidget *make_caogaoxiang()
{ 
   // GtkWidget *window;

	 GtkWidget *total_vbox;
    GtkWidget *table1;
    
     GtkWidget *button6;  
     GtkWidget *button7;
     GtkWidget *button8;
     GtkWidget *button9;
     GtkWidget *button10;  
     GtkWidget *button11;  

     GtkWidget *label3;
     GtkWidget *label4;  
     GtkWidget *entry1;
     GtkWidget *vbox1;
     GtkWidget *vbox2;
     GtkWidget *label5;
     GtkWidget *label6;
     GtkWidget *label7;
     GtkWidget *label8;
     GtkWidget *label9;

     GtkWidget *show_box;
   
     int indx;
     GtkWidget *vbox;
     GtkWidget *scrolled_window, *clist;


    /*gtk_init (&argc, &argv); 
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title(GTK_WINDOW(window), "GtkScrolledWindow");
    gtk_window_set_default_size(GTK_WINDOW(window), 320, 200);


   
    g_signal_connect_swapped(G_OBJECT(window),"destroy",G_CALLBACK(gtk_main_quit), NULL);*/
    
     total_vbox= gtk_vbox_new(FALSE,0);
     window_receive = gtk_scrolled_window_new (NULL, NULL);

   gtk_container_add (GTK_CONTAINER (total_vbox), window_receive);

     
    gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (window_receive),GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);


     table1 = gtk_table_new (60,120, FALSE);
     vbox2 = make_box6(FALSE,0,FALSE,FALSE,3);
     
     label3 = gtk_label_new (g_locale_to_utf8("显 示:", -1, NULL, NULL, NULL));  
     label4 = gtk_label_new (g_locale_to_utf8("搜 索:", -1, NULL, NULL, NULL));
    // button6 = gtk_button_new_with_label(g_locale_to_utf8("回  复", -1, NULL, NULL, NULL));
   //  button7 = gtk_button_new_with_label(g_locale_to_utf8("转  发", -1, NULL, NULL, NULL));
    // button8 = gtk_button_new_with_label(g_locale_to_utf8("删  除", -1, NULL, NULL, NULL));
    // button9 = gtk_button_new_with_label(g_locale_to_utf8("标  记", -1, NULL, NULL, NULL));
     button10 = gtk_button_new_with_label(g_locale_to_utf8("全 部 信 件", -1, NULL, NULL, NULL));    
     button11 = gtk_button_new_with_label(g_locale_to_utf8("搜 索", -1, NULL, NULL, NULL)); 
     entry1 = gtk_entry_new ();
     //添加表格到窗口
     gtk_container_add(GTK_CONTAINER (window_receive), table1);
     //将元件分别添加到表格中        
     
//左半边


   gtk_table_attach_defaults (GTK_TABLE(table1), label3, 3, 5, 8, 10);     
     gtk_table_attach_defaults  (GTK_TABLE(table1), label4, 3, 5, 12, 14);
   //  gtk_table_attach_defaults  (GTK_TABLE(table1), button6, 4, 6, 2, 3);
  //   gtk_table_attach_defaults  (GTK_TABLE(table1), button7, 6, 8, 2, 3);
   //  gtk_table_attach_defaults  (GTK_TABLE(table1), button8, 8, 10, 2, 3);
   //  gtk_table_attach_defaults  (GTK_TABLE(table1), button9, 10, 12, 2, 3);
	gtk_table_attach_defaults  (GTK_TABLE(table1), vbox2, 3, 12, 2, 3);
     gtk_table_attach_defaults  (GTK_TABLE(table1), button10,6,8, 8, 9);  
     gtk_table_attach_defaults  (GTK_TABLE(table1), button11,11, 13, 12, 14);     
     gtk_table_attach_defaults  (GTK_TABLE(table1), entry1,6, 10, 12, 13);
 

//加入滚动列表框
     vbox=gtk_vbox_new(FALSE, 5);
     gtk_container_set_border_width(GTK_CONTAINER(vbox), 5);
   //gtk_box_pack_start(GTK_BOX(vbox), scrolled_window, TRUE, TRUE, 0);
     gtk_table_attach_defaults (GTK_TABLE(table1), vbox,2, 60, 17, 120);   

   scrolled_window = gtk_scrolled_window_new (NULL, NULL);
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
   gtk_box_pack_start(GTK_BOX(vbox), scrolled_window, TRUE, TRUE, 0);
   gtk_widget_show (scrolled_window);

   show_box=gtk_vbox_new(FALSE, 5);
   show_box=create_list_caogao();
   
  gtk_container_add(GTK_CONTAINER(scrolled_window), show_box);
 /* gtk_signal_connect(GTK_OBJECT(clist), "select_row",
                     GTK_SIGNAL_FUNC(selection_made),NULL
                     );*/

 //  gtk_widget_show_all (window); 
  //  gtk_main();
   return total_vbox;

}

zhuce.c

#include<gtk/gtk.h>
#include<stdio.h>
#include<string.h>


#include<stdlib.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<netdb.h>
#include "main.h"

/*char* host_name="127.0.0.1";//"192.168.100.1";
int port=8888;*/
//char name[20],nicheng[20],pass[20],pass1[20],tel[20];
GtkWidget *entry_name;//邮件地址
GtkWidget *entry_nicheng;//昵称
GtkWidget *entry_pass;//密码
GtkWidget *entry_pass1;//确认密码
GtkWidget *entry_tel;//手机号


/*调用连接数据库的函数**********************************************************************/
int zhuce_cdb(GtkWidget *window_pre)
{
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
	char buf[1024];
	memset(buf,0,sizeof(buf));
	/*传入数据库的各个字符串的拼接*********************************************************/
	char str[1024];//str表示拼接后的字符串
	memset(str,' ',sizeof(str));
printf("str0:%s\n",str);
	int i,j,a=11;
	str[0]='u';
	str[1]='0';
	str[2]=(char)strlen(name);
printf("char c:%c\n",str[2]);
	for(i=0;name[i]!='\0';i++)
	{
		str[i+3]=name[i];
	}
printf("str:%s\n",str);
	str[15]=(char)strlen(pass);
	for(i=0;pass[i]!='\0';i++)
	{
		str[i+16]=pass[i];
	}
printf("str:%s\n",str);
		str[32]=(char)strlen(nicheng);
	for(i=0;nicheng[i]!='\0';i++)
	{
		str[i+33]=nicheng[i];
	}
printf("str:%s\n",str);
	str[53]=(char)a;
	for(i=0;tel[i]!='\0';i++)
	{
		str[i+54]=tel[i];
	}
printf("str:%s\n",str);
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);	
	/*传入数据库的各个字符串的拼接结束*********************************************************/


	/*if(argc < 2)
	{
		printf("send default string.\n");
	}
	else
	{
		str=argv[1];
	}
	if((server_host_name=gethostbyname(host_name))==0)
	{
		herror("can not resoving localhost\n");
		exit(1);
	}*/
	int socket_descriptor;
	int temp_sock_descriptor;
	int size_of_addr;
	struct sockaddr_in sin;
	struct sockaddr_in pin;
	struct hostent * server_host_name;
	bzero(&pin, sizeof(pin));
	pin.sin_family=AF_INET;
	pin.sin_addr.s_addr = inet_addr("127.0.0.1");
	pin.sin_port=htons(port);
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
	if((socket_descriptor=socket(AF_INET, SOCK_STREAM, 0))==-1)
	{
		perror("error opening socket\n");
        	exit(1);
	}
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
	if(connect(socket_descriptor, (void*)&pin, sizeof(pin))==-1)
	{
 		perror("can not connecting to server\n");
        	exit(1);
	}
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
printf("%c,%c,%c,%c\n",str[3],str[16],str[33],str[54]);
	if(send(socket_descriptor, str, strlen(str), 0)==-1)
	{
		perror("can not send message\n");
		exit(1);
	}
printf("%c,%c,%c,%c\n",str[3],str[16],str[33],str[54]);
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
memset(buf, 0, 1024);
	if(recv(socket_descriptor, buf, sizeof(buf), 0)<0)//==-1)
	{
		perror("can not receive response\n");
        	exit(1);
	}
	else{

		printf("message received from server:%s\n",buf);
	if(buf=="username_repeat")
		{
			fail();
		}
		if(buf=="insert_new_use_success")
		{
			success(window_pre);
		}
	}
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
	close(socket_descriptor);
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
	return 0;
}
/*显示错误信息并跳出警告对话框*************************************************/
void warning(char *warn)
{
	GtkWidget *window; 
	GtkWidget *button; 
	GtkWidget *label; //错误信息的label
	GtkWidget *box;
	window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
	gtk_window_set_title(GTK_WINDOW(window),"警告");
	gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
	gtk_container_set_border_width (GTK_CONTAINER (window),100); 
	label=gtk_label_new (warn);
//gtk_label_set_markup(GTK_LABEL(label),"<span foreground='black'font_desc='16'>收信 </span>");
//gtk_label_set_markup(GTK_LABEL(recive_label),"<span foreground='black'font_desc='16'>收信 </span>");


	button=gtk_button_new_with_label ("确定");
	box=gtk_vbox_new (FALSE, 0);
	gtk_box_pack_start(GTK_BOX(box),label,FALSE,FALSE,3);
	gtk_box_pack_start(GTK_BOX(box),button,FALSE,FALSE,3);
	gtk_container_add (GTK_CONTAINER (window), box);
	gtk_widget_show_all(box);
	gtk_widget_show_all(window);
	g_signal_connect_swapped(G_OBJECT (button), "clicked", 
             G_CALLBACK (gtk_widget_destroy), window); 
	//return FALSE; 
}

/*返回值是1时提示注册成功*************************************************/
int success(GtkWidget *window_pre)
{
	GtkWidget *window; 
	GtkWidget *button; 
	GtkWidget *label; //成功的label
	GtkWidget *box;
	window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
	gtk_window_set_title(GTK_WINDOW(window),NULL);
	gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
	gtk_container_set_border_width (GTK_CONTAINER (window),100); 
	label=gtk_label_new ("恭喜,注册成功!");
//gtk_label_set_markup(GTK_LABEL(rlabel),"<span foreground='black'font_desc='16'>恭喜,注册成功! </span>");

	button=gtk_button_new_with_label ("确定");
	box=gtk_vbox_new (FALSE, 0);
	gtk_box_pack_start(GTK_BOX(box),label,FALSE,FALSE,3);
	gtk_box_pack_start(GTK_BOX(box),button,FALSE,FALSE,3);
	gtk_container_add (GTK_CONTAINER (window), box);
	gtk_widget_show_all(box);
	gtk_widget_show_all(window);
	g_signal_connect_swapped(G_OBJECT (button), "clicked", 
             G_CALLBACK (gtk_widget_destroy), window);
        printf("hh1\n");
        g_signal_connect_swapped(G_OBJECT (button), "clicked", 
             G_CALLBACK (gtk_widget_hide), window_pre);
       printf("hh2\n");
	return FALSE; 
}
/*返回值是0时提示邮件地址重复*************************************************/
int fail()
{
	GtkWidget *window; 
	GtkWidget *button; 
	GtkWidget *label; //用户名重复的label
	GtkWidget *box;
	window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
	gtk_window_set_title(GTK_WINDOW(window),NULL);
	gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
	gtk_container_set_border_width (GTK_CONTAINER (window),100); 
	label=gtk_label_new ("对不起,邮件地址已存在,请更换新的邮件地址");
//gtk_label_set_markup(GTK_LABEL(label),"<span foreground='black'font_desc='16'>对不起,邮件地址已存在,请更换新的邮件地址</span>");

	button=gtk_button_new_with_label ("确定");
	box=gtk_vbox_new (FALSE, 0);
	gtk_box_pack_start(GTK_BOX(box),label,FALSE,FALSE,3);
	gtk_box_pack_start(GTK_BOX(box),button,FALSE,FALSE,3);
	gtk_container_add (GTK_CONTAINER (window), box);
	gtk_widget_show_all(box);
	gtk_widget_show_all(window);
	g_signal_connect_swapped(G_OBJECT (button), "clicked", 
             G_CALLBACK (gtk_widget_destroy), window); 
	return FALSE; 

}

/*点击重置按钮后重置*******************************************************/
void chongzhi(GtkWidget *widget)
{
	gtk_entry_set_text(GTK_ENTRY(entry_name),"");
	gtk_entry_set_text(GTK_ENTRY(entry_nicheng),"");
	gtk_entry_set_text(GTK_ENTRY(entry_pass),"");
	gtk_entry_set_text(GTK_ENTRY(entry_pass1),""); 
	gtk_entry_set_text(GTK_ENTRY(entry_tel),"");
}
/*点击提交按钮,判断无误后提交,调用传给数据库的函数*************************/
int tijiao(GtkWidget *widget,gpointer current_window )
{
	int i,l;
	char* warn=NULL;
	strcpy(name,gtk_entry_get_text(GTK_ENTRY(entry_name)));
	strcpy(nicheng,gtk_entry_get_text(GTK_ENTRY(entry_nicheng)));
	strcpy(pass,gtk_entry_get_text(GTK_ENTRY(entry_pass)));
	strcpy(pass1,gtk_entry_get_text(GTK_ENTRY(entry_pass1)));
	strcpy(tel,gtk_entry_get_text(GTK_ENTRY(entry_tel)));
	/*判断各个entry是否为空*******************/
	if(strlen(name)==0)
	{
		warn="邮件地址不能为空";
		warning(warn);
		return 0;		
	}
	else if(strlen(nicheng)==0)
	{
		warn="昵称不能为空";
		warning(warn);
		return 0;
	}
	else if(strlen(pass)==0)
	{
		warn="密码不能为空";
		warning(warn);
		return 0;
	}
	else if(strlen(pass1)==0)
	{
		warn="确认密码不能为空";
		warning(warn);
		return 0;
	}
	else if(strlen(tel)==0)
	{
		warn="手机号不能为空";
		warning(warn);
		return 0;
	}
	else //当内容都不为空时,开始检验输入是否合法
	{
		for(i=0;i<strlen(name);)//判断name内容是否符合要求
		{
			if(strlen(name)<6||strlen(name)>12){warn="邮件地址输入不符合要求";warning(warn);return 0;}
			else if((name[i]>='A'&&name[i]<='Z')||(name[i]>='a'&&name[i]<='z')||(name[i]>='0'&&name[i]<='9')||name[i]=='_')
			{
				i++;
			}
			else
			{
				warn="邮件地址输入不符合要求";
				warning(warn);
				return 0;
			}
		}
		for(i=0;i<strlen(nicheng);)//判断nicheng内容是否符合要求
		{
			if(strlen(nicheng)<3||strlen(nicheng)>10){warn="昵称输入不符合要求";warning(warn);return 0;}
			else if((nicheng[i]>='A'&&nicheng[i]<='Z')||(nicheng[i]>='a'&&nicheng[i]<='z')||(nicheng[i]>='0'&&nicheng[i]<='9')||nicheng[i]=='_')
			{
				i++;
			}
			else
			{
				warn="昵称输入不符合要求";
				warning(warn);
				return 0;
			}
		}

		for(i=0;i<strlen(pass);)//判断pass内容是否符合要求
		{
			if(strlen(pass)<6||strlen(pass)>16){warn="密码输入不符合要求";warning(warn);return 0;}
			else if((pass[i]>='A'&&pass[i]<='Z')||(pass[i]>='a'&&pass[i]<='z')||(pass[i]>='0'&&pass[i]<='9')||pass[i]=='_')
			{
				i++;
			}
			else
			{
				warn="密码输入不符合要求";
				warning(warn);
				return 0;
			}
		}
		for(i=0;i<strlen(pass);)//判断pass1内容是否符合与pass一致
		{
			if(pass1[i]==pass[i])
			{
				i++;
			}
			else
			{
				warn="两次输入密码不一致";
				warning(warn);
				return 0;
			}
		}
		for(i=0;i<strlen(tel);)//判断tel内容是否符合要求
		{
			if(strlen(tel)==11&&tel[i]>='0'&&tel[i]<='9')
			{
				i++;
			}
			else
			{
				warn="手机号输入不符合要求";
				warning(warn);
				return 0;
			}
		}
	
	}//当内容都不为空时,开始检验输入是否合法
	/*调用连接数据库的函数****************************/
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
	//zhuce_cdb(current_window);
	success(current_window);
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
}

int register_()//此函数中1,2,3,4,5分别代表5行 
{
	GtkWidget *window;
	GtkWidget *totalbox;
	GtkWidget *hbox1;
	GtkWidget *hbox2;
	GtkWidget *hbox3;
	GtkWidget *hbox4;
	GtkWidget *hbox5;
	GtkWidget *hbox6;
	GtkWidget *ybutton;//提交按钮
	GtkWidget *nbutton;//重置
	GtkWidget *label11;
	GtkWidget *label12;
	GtkWidget *label21;
	GtkWidget *label22;
	GtkWidget *label31;
	GtkWidget *label32;
	GtkWidget *label41;
	GtkWidget *label42;
	GtkWidget *label51;
	GtkWidget *label52;
	GtkWidget *name_entry;
	GtkWidget *nicheng_entry;
	GtkWidget *pass_entry;
	GtkWidget *pass1_entry;
	GtkWidget *tel_entry;
	//gtk_init(&argc,&argv);
	
	window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
	gtk_window_set_resizable(GTK_WINDOW(window),FALSE);
	gtk_container_set_border_width (GTK_CONTAINER (window),150); 
	//g_signal_connect(G_OBJECT(window),"delete_event",
	//	G_CALLBACK(gtk_main_quit),NULL);
	g_signal_connect(G_OBJECT(window),"delete_event",
		G_CALLBACK(gtk_widget_hide),window);
	gtk_window_set_title(GTK_WINDOW(window),"用戶注冊");
	gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
	/* 设置窗口边框的宽度。*/ 
	gtk_container_set_border_width (GTK_CONTAINER (window),90); 
	/* 整个盒为一个纵盒,將纵盒装入窗口*/ 
	totalbox=gtk_vbox_new (FALSE, 0);
	gtk_container_add (GTK_CONTAINER (window), totalbox);
	hbox1=gtk_hbox_new (FALSE, 0);
	hbox2=gtk_hbox_new (FALSE, 6);
	hbox3=gtk_hbox_new (FALSE, 6);
	hbox4=gtk_hbox_new (FALSE, 0);
	hbox5=gtk_hbox_new (FALSE, 1);
	hbox6=gtk_hbox_new (FALSE, 80);

	label11=gtk_label_new("*邮件地址");
	label12=gtk_label_new("6~12个数字字母下划线组成");
	label21=gtk_label_new("*呢称     ");
	label22=gtk_label_new("3~10个数字字母下划线组成");
	label31=gtk_label_new("*密码     ");
	label32=gtk_label_new("6~16个數字字母下划线组成");
	label41=gtk_label_new("*确认密码");
	label42=gtk_label_new("再次输入以确认密码");
	label51=gtk_label_new("*手机号   ");
	label52=gtk_label_new("以便找回时使用");
	
	entry_name=name_entry=gtk_entry_new();
	//gtk_entry_set_text(GTK_ENTRY(name_entry),FALSE);
	entry_nicheng=nicheng_entry=gtk_entry_new();
	//gtk_entry_set_text(GTK_ENTRY(nicheng_entry),FALSE);
	entry_pass=pass_entry=gtk_entry_new();
	gtk_entry_set_visibility(GTK_ENTRY(pass_entry),FALSE);
	entry_pass1=pass1_entry=gtk_entry_new();
	gtk_entry_set_visibility(GTK_ENTRY(pass1_entry),FALSE);
	entry_tel=tel_entry=gtk_entry_new();
	//gtk_entry_set_text(GTK_ENTRY(tel_entry),FALSE);
	ybutton = gtk_button_new_with_label ("提交");
	nbutton = gtk_button_new_with_label ("重置");
	
	gtk_box_pack_start(GTK_BOX(hbox1),label11,FALSE,FALSE,5);
	gtk_box_pack_start(GTK_BOX(hbox1),entry_name,FALSE,FALSE,5);
	gtk_box_pack_start(GTK_BOX(hbox1),label12,FALSE,FALSE,10);

	gtk_box_pack_start(GTK_BOX(hbox2),label21,FALSE,FALSE,5);
	gtk_box_pack_start(GTK_BOX(hbox2),entry_nicheng,FALSE,FALSE,5);
	gtk_box_pack_start(GTK_BOX(hbox2),label22,FALSE,FALSE,5);

	gtk_box_pack_start(GTK_BOX(hbox3),label31,FALSE,FALSE,5);
	gtk_box_pack_start(GTK_BOX(hbox3),entry_pass,FALSE,FALSE,5);
	gtk_box_pack_start(GTK_BOX(hbox3),label32,FALSE,FALSE,5);

	gtk_box_pack_start(GTK_BOX(hbox4),label41,FALSE,FALSE,5);
	gtk_box_pack_start(GTK_BOX(hbox4),entry_pass1,FALSE,FALSE,5);
	gtk_box_pack_start(GTK_BOX(hbox4),label42,FALSE,FALSE,9);

	gtk_box_pack_start(GTK_BOX(hbox5),label51,FALSE,FALSE,5);
	gtk_box_pack_start(GTK_BOX(hbox5),entry_tel,FALSE,FALSE,5);
	gtk_box_pack_start(GTK_BOX(hbox5),label52,FALSE,FALSE,9);
	
	gtk_box_pack_start(GTK_BOX(hbox6),ybutton,FALSE,FALSE,90);
	gtk_box_pack_start(GTK_BOX(hbox6),nbutton,FALSE,FALSE,5);

	gtk_box_pack_start(GTK_BOX(totalbox),hbox1,FALSE,FALSE,5);
	gtk_box_pack_start(GTK_BOX(totalbox),hbox2,FALSE,FALSE,5);
	gtk_box_pack_start(GTK_BOX(totalbox),hbox3,FALSE,FALSE,5);
	gtk_box_pack_start(GTK_BOX(totalbox),hbox4,FALSE,FALSE,5);
	gtk_box_pack_start(GTK_BOX(totalbox),hbox5,FALSE,FALSE,5);
	gtk_box_pack_start(GTK_BOX(totalbox),hbox6,FALSE,FALSE,50);
	g_signal_connect(G_OBJECT(nbutton), "clicked",G_CALLBACK(chongzhi), NULL);
	g_signal_connect(G_OBJECT(ybutton), "clicked",G_CALLBACK(tijiao), window);
	gtk_widget_show_all(window);
	//gtk_main();
	return FALSE;
	
}

yishanchu.c

#include<gtk/gtk.h>
#include<stdio.h>
#include<string.h>


#include<stdlib.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<netdb.h>
#include "main.h"

/*char* host_name="127.0.0.1";//"192.168.100.1";
int port=8888;*/
//char name[20],nicheng[20],pass[20],pass1[20],tel[20];
GtkWidget *entry_name;//邮件地址
GtkWidget *entry_nicheng;//昵称
GtkWidget *entry_pass;//密码
GtkWidget *entry_pass1;//确认密码
GtkWidget *entry_tel;//手机号


/*调用连接数据库的函数**********************************************************************/
int zhuce_cdb(GtkWidget *window_pre)
{
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
	char buf[1024];
	memset(buf,0,sizeof(buf));
	/*传入数据库的各个字符串的拼接*********************************************************/
	char str[1024];//str表示拼接后的字符串
	memset(str,' ',sizeof(str));
printf("str0:%s\n",str);
	int i,j,a=11;
	str[0]='u';
	str[1]='0';
	str[2]=(char)strlen(name);
printf("char c:%c\n",str[2]);
	for(i=0;name[i]!='\0';i++)
	{
		str[i+3]=name[i];
	}
printf("str:%s\n",str);
	str[15]=(char)strlen(pass);
	for(i=0;pass[i]!='\0';i++)
	{
		str[i+16]=pass[i];
	}
printf("str:%s\n",str);
		str[32]=(char)strlen(nicheng);
	for(i=0;nicheng[i]!='\0';i++)
	{
		str[i+33]=nicheng[i];
	}
printf("str:%s\n",str);
	str[53]=(char)a;
	for(i=0;tel[i]!='\0';i++)
	{
		str[i+54]=tel[i];
	}
printf("str:%s\n",str);
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);	
	/*传入数据库的各个字符串的拼接结束*********************************************************/


	/*if(argc < 2)
	{
		printf("send default string.\n");
	}
	else
	{
		str=argv[1];
	}
	if((server_host_name=gethostbyname(host_name))==0)
	{
		herror("can not resoving localhost\n");
		exit(1);
	}*/
	int socket_descriptor;
	int temp_sock_descriptor;
	int size_of_addr;
	struct sockaddr_in sin;
	struct sockaddr_in pin;
	struct hostent * server_host_name;
	bzero(&pin, sizeof(pin));
	pin.sin_family=AF_INET;
	pin.sin_addr.s_addr = inet_addr("127.0.0.1");
	pin.sin_port=htons(port);
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
	if((socket_descriptor=socket(AF_INET, SOCK_STREAM, 0))==-1)
	{
		perror("error opening socket\n");
        	exit(1);
	}
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
	if(connect(socket_descriptor, (void*)&pin, sizeof(pin))==-1)
	{
 		perror("can not connecting to server\n");
        	exit(1);
	}
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
printf("%c,%c,%c,%c\n",str[3],str[16],str[33],str[54]);
	if(send(socket_descriptor, str, strlen(str), 0)==-1)
	{
		perror("can not send message\n");
		exit(1);
	}
printf("%c,%c,%c,%c\n",str[3],str[16],str[33],str[54]);
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
memset(buf, 0, 1024);
	if(recv(socket_descriptor, buf, sizeof(buf), 0)<0)//==-1)
	{
		perror("can not receive response\n");
        	exit(1);
	}
	else{

		printf("message received from server:%s\n",buf);
	if(buf=="username_repeat")
		{
			fail();
		}
		if(buf=="insert_new_use_success")
		{
			success(window_pre);
		}
	}
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
	close(socket_descriptor);
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
	return 0;
}
/*显示错误信息并跳出警告对话框*************************************************/
void warning(char *warn)
{
	GtkWidget *window; 
	GtkWidget *button; 
	GtkWidget *label; //错误信息的label
	GtkWidget *box;
	window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
	gtk_window_set_title(GTK_WINDOW(window),"警告");
	gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
	gtk_container_set_border_width (GTK_CONTAINER (window),100); 
	label=gtk_label_new (warn);
//gtk_label_set_markup(GTK_LABEL(label),"<span foreground='black'font_desc='16'>收信 </span>");
//gtk_label_set_markup(GTK_LABEL(recive_label),"<span foreground='black'font_desc='16'>收信 </span>");


	button=gtk_button_new_with_label ("确定");
	box=gtk_vbox_new (FALSE, 0);
	gtk_box_pack_start(GTK_BOX(box),label,FALSE,FALSE,3);
	gtk_box_pack_start(GTK_BOX(box),button,FALSE,FALSE,3);
	gtk_container_add (GTK_CONTAINER (window), box);
	gtk_widget_show_all(box);
	gtk_widget_show_all(window);
	g_signal_connect_swapped(G_OBJECT (button), "clicked", 
             G_CALLBACK (gtk_widget_destroy), window); 
	//return FALSE; 
}

/*返回值是1时提示注册成功*************************************************/
int success(GtkWidget *window_pre)
{
	GtkWidget *window; 
	GtkWidget *button; 
	GtkWidget *label; //成功的label
	GtkWidget *box;
	window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
	gtk_window_set_title(GTK_WINDOW(window),NULL);
	gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
	gtk_container_set_border_width (GTK_CONTAINER (window),100); 
	label=gtk_label_new ("恭喜,注册成功!");
//gtk_label_set_markup(GTK_LABEL(rlabel),"<span foreground='black'font_desc='16'>恭喜,注册成功! </span>");

	button=gtk_button_new_with_label ("确定");
	box=gtk_vbox_new (FALSE, 0);
	gtk_box_pack_start(GTK_BOX(box),label,FALSE,FALSE,3);
	gtk_box_pack_start(GTK_BOX(box),button,FALSE,FALSE,3);
	gtk_container_add (GTK_CONTAINER (window), box);
	gtk_widget_show_all(box);
	gtk_widget_show_all(window);
	g_signal_connect_swapped(G_OBJECT (button), "clicked", 
             G_CALLBACK (gtk_widget_destroy), window);
        printf("hh1\n");
        g_signal_connect_swapped(G_OBJECT (button), "clicked", 
             G_CALLBACK (gtk_widget_hide), window_pre);
       printf("hh2\n");
	return FALSE; 
}
/*返回值是0时提示邮件地址重复*************************************************/
int fail()
{
	GtkWidget *window; 
	GtkWidget *button; 
	GtkWidget *label; //用户名重复的label
	GtkWidget *box;
	window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
	gtk_window_set_title(GTK_WINDOW(window),NULL);
	gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
	gtk_container_set_border_width (GTK_CONTAINER (window),100); 
	label=gtk_label_new ("对不起,邮件地址已存在,请更换新的邮件地址");
//gtk_label_set_markup(GTK_LABEL(label),"<span foreground='black'font_desc='16'>对不起,邮件地址已存在,请更换新的邮件地址</span>");

	button=gtk_button_new_with_label ("确定");
	box=gtk_vbox_new (FALSE, 0);
	gtk_box_pack_start(GTK_BOX(box),label,FALSE,FALSE,3);
	gtk_box_pack_start(GTK_BOX(box),button,FALSE,FALSE,3);
	gtk_container_add (GTK_CONTAINER (window), box);
	gtk_widget_show_all(box);
	gtk_widget_show_all(window);
	g_signal_connect_swapped(G_OBJECT (button), "clicked", 
             G_CALLBACK (gtk_widget_destroy), window); 
	return FALSE; 

}

/*点击重置按钮后重置*******************************************************/
void chongzhi(GtkWidget *widget)
{
	gtk_entry_set_text(GTK_ENTRY(entry_name),"");
	gtk_entry_set_text(GTK_ENTRY(entry_nicheng),"");
	gtk_entry_set_text(GTK_ENTRY(entry_pass),"");
	gtk_entry_set_text(GTK_ENTRY(entry_pass1),""); 
	gtk_entry_set_text(GTK_ENTRY(entry_tel),"");
}
/*点击提交按钮,判断无误后提交,调用传给数据库的函数*************************/
int tijiao(GtkWidget *widget,gpointer current_window )
{
	int i,l;
	char* warn=NULL;
	strcpy(name,gtk_entry_get_text(GTK_ENTRY(entry_name)));
	strcpy(nicheng,gtk_entry_get_text(GTK_ENTRY(entry_nicheng)));
	strcpy(pass,gtk_entry_get_text(GTK_ENTRY(entry_pass)));
	strcpy(pass1,gtk_entry_get_text(GTK_ENTRY(entry_pass1)));
	strcpy(tel,gtk_entry_get_text(GTK_ENTRY(entry_tel)));
	/*判断各个entry是否为空*******************/
	if(strlen(name)==0)
	{
		warn="邮件地址不能为空";
		warning(warn);
		return 0;		
	}
	else if(strlen(nicheng)==0)
	{
		warn="昵称不能为空";
		warning(warn);
		return 0;
	}
	else if(strlen(pass)==0)
	{
		warn="密码不能为空";
		warning(warn);
		return 0;
	}
	else if(strlen(pass1)==0)
	{
		warn="确认密码不能为空";
		warning(warn);
		return 0;
	}
	else if(strlen(tel)==0)
	{
		warn="手机号不能为空";
		warning(warn);
		return 0;
	}
	else //当内容都不为空时,开始检验输入是否合法
	{
		for(i=0;i<strlen(name);)//判断name内容是否符合要求
		{
			if(strlen(name)<6||strlen(name)>12){warn="邮件地址输入不符合要求";warning(warn);return 0;}
			else if((name[i]>='A'&&name[i]<='Z')||(name[i]>='a'&&name[i]<='z')||(name[i]>='0'&&name[i]<='9')||name[i]=='_')
			{
				i++;
			}
			else
			{
				warn="邮件地址输入不符合要求";
				warning(warn);
				return 0;
			}
		}
		for(i=0;i<strlen(nicheng);)//判断nicheng内容是否符合要求
		{
			if(strlen(nicheng)<3||strlen(nicheng)>10){warn="昵称输入不符合要求";warning(warn);return 0;}
			else if((nicheng[i]>='A'&&nicheng[i]<='Z')||(nicheng[i]>='a'&&nicheng[i]<='z')||(nicheng[i]>='0'&&nicheng[i]<='9')||nicheng[i]=='_')
			{
				i++;
			}
			else
			{
				warn="昵称输入不符合要求";
				warning(warn);
				return 0;
			}
		}

		for(i=0;i<strlen(pass);)//判断pass内容是否符合要求
		{
			if(strlen(pass)<6||strlen(pass)>16){warn="密码输入不符合要求";warning(warn);return 0;}
			else if((pass[i]>='A'&&pass[i]<='Z')||(pass[i]>='a'&&pass[i]<='z')||(pass[i]>='0'&&pass[i]<='9')||pass[i]=='_')
			{
				i++;
			}
			else
			{
				warn="密码输入不符合要求";
				warning(warn);
				return 0;
			}
		}
		for(i=0;i<strlen(pass);)//判断pass1内容是否符合与pass一致
		{
			if(pass1[i]==pass[i])
			{
				i++;
			}
			else
			{
				warn="两次输入密码不一致";
				warning(warn);
				return 0;
			}
		}
		for(i=0;i<strlen(tel);)//判断tel内容是否符合要求
		{
			if(strlen(tel)==11&&tel[i]>='0'&&tel[i]<='9')
			{
				i++;
			}
			else
			{
				warn="手机号输入不符合要求";
				warning(warn);
				return 0;
			}
		}
	
	}//当内容都不为空时,开始检验输入是否合法
	/*调用连接数据库的函数****************************/
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
	//zhuce_cdb(current_window);
	success(current_window);
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
}

int register_()//此函数中1,2,3,4,5分别代表5行 
{
	GtkWidget *window;
	GtkWidget *totalbox;
	GtkWidget *hbox1;
	GtkWidget *hbox2;
	GtkWidget *hbox3;
	GtkWidget *hbox4;
	GtkWidget *hbox5;
	GtkWidget *hbox6;
	GtkWidget *ybutton;//提交按钮
	GtkWidget *nbutton;//重置
	GtkWidget *label11;
	GtkWidget *label12;
	GtkWidget *label21;
	GtkWidget *label22;
	GtkWidget *label31;
	GtkWidget *label32;
	GtkWidget *label41;
	GtkWidget *label42;
	GtkWidget *label51;
	GtkWidget *label52;
	GtkWidget *name_entry;
	GtkWidget *nicheng_entry;
	GtkWidget *pass_entry;
	GtkWidget *pass1_entry;
	GtkWidget *tel_entry;
	//gtk_init(&argc,&argv);
	
	window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
	gtk_window_set_resizable(GTK_WINDOW(window),FALSE);
	gtk_container_set_border_width (GTK_CONTAINER (window),150); 
	//g_signal_connect(G_OBJECT(window),"delete_event",
	//	G_CALLBACK(gtk_main_quit),NULL);
	g_signal_connect(G_OBJECT(window),"delete_event",
		G_CALLBACK(gtk_widget_hide),window);
	gtk_window_set_title(GTK_WINDOW(window),"用戶注冊");
	gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
	/* 设置窗口边框的宽度。*/ 
	gtk_container_set_border_width (GTK_CONTAINER (window),90); 
	/* 整个盒为一个纵盒,將纵盒装入窗口*/ 
	totalbox=gtk_vbox_new (FALSE, 0);
	gtk_container_add (GTK_CONTAINER (window), totalbox);
	hbox1=gtk_hbox_new (FALSE, 0);
	hbox2=gtk_hbox_new (FALSE, 6);
	hbox3=gtk_hbox_new (FALSE, 6);
	hbox4=gtk_hbox_new (FALSE, 0);
	hbox5=gtk_hbox_new (FALSE, 1);
	hbox6=gtk_hbox_new (FALSE, 80);

	label11=gtk_label_new("*邮件地址");
	label12=gtk_label_new("6~12个数字字母下划线组成");
	label21=gtk_label_new("*呢称     ");
	label22=gtk_label_new("3~10个数字字母下划线组成");
	label31=gtk_label_new("*密码     ");
	label32=gtk_label_new("6~16个數字字母下划线组成");
	label41=gtk_label_new("*确认密码");
	label42=gtk_label_new("再次输入以确认密码");
	label51=gtk_label_new("*手机号   ");
	label52=gtk_label_new("以便找回时使用");
	
	entry_name=name_entry=gtk_entry_new();
	//gtk_entry_set_text(GTK_ENTRY(name_entry),FALSE);
	entry_nicheng=nicheng_entry=gtk_entry_new();
	//gtk_entry_set_text(GTK_ENTRY(nicheng_entry),FALSE);
	entry_pass=pass_entry=gtk_entry_new();
	gtk_entry_set_visibility(GTK_ENTRY(pass_entry),FALSE);
	entry_pass1=pass1_entry=gtk_entry_new();
	gtk_entry_set_visibility(GTK_ENTRY(pass1_entry),FALSE);
	entry_tel=tel_entry=gtk_entry_new();
	//gtk_entry_set_text(GTK_ENTRY(tel_entry),FALSE);
	ybutton = gtk_button_new_with_label ("提交");
	nbutton = gtk_button_new_with_label ("重置");
	
	gtk_box_pack_start(GTK_BOX(hbox1),label11,FALSE,FALSE,5);
	gtk_box_pack_start(GTK_BOX(hbox1),entry_name,FALSE,FALSE,5);
	gtk_box_pack_start(GTK_BOX(hbox1),label12,FALSE,FALSE,10);

	gtk_box_pack_start(GTK_BOX(hbox2),label21,FALSE,FALSE,5);
	gtk_box_pack_start(GTK_BOX(hbox2),entry_nicheng,FALSE,FALSE,5);
	gtk_box_pack_start(GTK_BOX(hbox2),label22,FALSE,FALSE,5);

	gtk_box_pack_start(GTK_BOX(hbox3),label31,FALSE,FALSE,5);
	gtk_box_pack_start(GTK_BOX(hbox3),entry_pass,FALSE,FALSE,5);
	gtk_box_pack_start(GTK_BOX(hbox3),label32,FALSE,FALSE,5);

	gtk_box_pack_start(GTK_BOX(hbox4),label41,FALSE,FALSE,5);
	gtk_box_pack_start(GTK_BOX(hbox4),entry_pass1,FALSE,FALSE,5);
	gtk_box_pack_start(GTK_BOX(hbox4),label42,FALSE,FALSE,9);

	gtk_box_pack_start(GTK_BOX(hbox5),label51,FALSE,FALSE,5);
	gtk_box_pack_start(GTK_BOX(hbox5),entry_tel,FALSE,FALSE,5);
	gtk_box_pack_start(GTK_BOX(hbox5),label52,FALSE,FALSE,9);
	
	gtk_box_pack_start(GTK_BOX(hbox6),ybutton,FALSE,FALSE,90);
	gtk_box_pack_start(GTK_BOX(hbox6),nbutton,FALSE,FALSE,5);

	gtk_box_pack_start(GTK_BOX(totalbox),hbox1,FALSE,FALSE,5);
	gtk_box_pack_start(GTK_BOX(totalbox),hbox2,FALSE,FALSE,5);
	gtk_box_pack_start(GTK_BOX(totalbox),hbox3,FALSE,FALSE,5);
	gtk_box_pack_start(GTK_BOX(totalbox),hbox4,FALSE,FALSE,5);
	gtk_box_pack_start(GTK_BOX(totalbox),hbox5,FALSE,FALSE,5);
	gtk_box_pack_start(GTK_BOX(totalbox),hbox6,FALSE,FALSE,50);
	g_signal_connect(G_OBJECT(nbutton), "clicked",G_CALLBACK(chongzhi), NULL);
	g_signal_connect(G_OBJECT(ybutton), "clicked",G_CALLBACK(tijiao), window);
	gtk_widget_show_all(window);
	//gtk_main();
	return FALSE;
	
}
yifasong.c

#include <gtk/gtk.h> 
#include <string.h>
#include "main.h"
GtkWidget *window_receive;
//char * name = "jack@123.com";
/* 用于list view */
enum ListCols
{
    LIST_CHECKED,
    LIST_RECEIVER,
    LIST_SUBJECT,
    LIST_TIME
};

void select_show_yifasong(GtkTreeSelection* select, gpointer data) //获得账号和发送时间发送给数据库
{
   // GtkTreeIter iter;
    //GtkTreeModel* model;
    gchar* receiver;
    gchar* time1;
    gchar* subject;
    char buf[100]={"hiierjhejkhjkdfh"};
    //gchar* info;
    char request[50];
    int len;
	int i;
    memset(request,' ',sizeof(request));

    if(gtk_tree_selection_get_selected(select, &yifasong_model, &yifasong_iter))
    {
        gtk_tree_model_get(yifasong_model, &yifasong_iter, LIST_RECEIVER, &receiver,LIST_TIME,&time1,LIST_SUBJECT,&subject,-1);
         printf("%s\n",time1);
        request[0]='2';
        request[1]='3';
        len=strlen(name);
        request[2]=(char)len;
        for(i=0;i<len;i++){
		request[i+3]=name[i];
	}
	request[15]=26;
	for(i=0;i<26;i++){
		request[i+16]=time1[i];
	}
        //连接数据库,获得装有邮件内容的buf
	/**************************/
 
        window_show_yifasong(name,subject,time1,receiver,buf);///弹出邮件阅读窗口,显示邮件

        printf("%s\n",request);
        g_free(receiver);
	g_free(time1);
    }
}


GtkWidget * create_list_yifasong()//创建显示草稿箱信息的列表
{

    GtkWidget* vbox ;

    //GtkTreeView* list;
    //GtkListStore*  list_store;
    //GtkTreeIter iter;
    GtkCellRenderer* renderer;
    GtkTreeViewColumn* column;
    GtkTreeSelection* select;
    vbox = gtk_vbox_new (FALSE, 2);

    /* 创建ListView */
    yifasong_list = gtk_tree_view_new();
    /* 创建ListView的model, 添加数据 */
    yifasong_list_store = gtk_list_store_new(4,G_TYPE_BOOLEAN,
                                    G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING);
   //连接数据库,获得邮件列表
	/**************************/
  
  
    gtk_list_store_append(yifasong_list_store, &yifasong_iter);
    gtk_list_store_set(yifasong_list_store, &yifasong_iter,
                       LIST_CHECKED,FALSE,
                       LIST_RECEIVER, "KENBER",
                       LIST_SUBJECT, "HHHHHHHHHHH",
                       LIST_TIME,"2014年02月03日13时34分26秒" , -1);
      gtk_list_store_append(yifasong_list_store, &yifasong_iter);
    gtk_list_store_set(yifasong_list_store, &yifasong_iter,
                       LIST_CHECKED,FALSE,
                       LIST_RECEIVER, "guosiyu",
                       LIST_SUBJECT, "uuuuuuu",
                       LIST_TIME,"2012年02月07日13时34分26秒" , -1);
    gtk_tree_view_set_model(yifasong_list, yifasong_list_store);
    //g_object_unref(list_store);

    /* 创建ListView的View */
        renderer = gtk_cell_renderer_toggle_new();
    column = gtk_tree_view_column_new_with_attributes("选择", renderer,
             "active", LIST_CHECKED, NULL);
    column = gtk_tree_view_append_column(yifasong_list, column);
    renderer = gtk_cell_renderer_text_new();
    column = gtk_tree_view_column_new_with_attributes("收件人", renderer,
             "text", LIST_RECEIVER, NULL);
    column = gtk_tree_view_append_column(yifasong_list, column);
    renderer = gtk_cell_renderer_text_new();
    column = gtk_tree_view_column_new_with_attributes("主题", renderer,
             "text", LIST_SUBJECT, NULL);
    column = gtk_tree_view_append_column(yifasong_list, column);
    column = gtk_tree_view_column_new_with_attributes("日期", renderer,
             "text", LIST_TIME, NULL);
    column = gtk_tree_view_append_column(yifasong_list, column);
    
    //设置点击列表触发事件
    select = gtk_tree_view_get_selection(yifasong_list);
    gtk_tree_selection_set_mode(select, GTK_SELECTION_SINGLE);
    g_signal_connect(G_OBJECT(select), "changed",
                     G_CALLBACK(select_show_yifasong), NULL);


    gtk_box_pack_start(vbox, yifasong_list, TRUE, TRUE, 1);
    return vbox;
}


/*GtkWidget *make_box6( gboolean homogeneous,      //已发送  
                     gint     spacing,
                     gboolean expand,
                     gboolean fill,
                     guint    padding ) 
{
    GtkWidget *box;
    GtkWidget *button;
    char padstr[80];
    
  
    box = gtk_hbox_new (homogeneous, spacing);
    
   
    button = gtk_button_new_with_label (" 回 复 ");
    gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 2);
    gtk_widget_show (button);
    
    button = gtk_button_new_with_label (" 转 发 ");
    gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 2);
    gtk_widget_show (button);

    button = gtk_button_new_with_label (" 删 除 ");
    gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 2);
    gtk_widget_show (button);

    button = gtk_button_new_with_label (" 标 记 ");
    gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 2);
    gtk_widget_show (button);	
    
    return box;
}*/

GtkWidget *make_yifasong()
{ 
   // GtkWidget *window;

	 GtkWidget *total_vbox;
    GtkWidget *table1;
    
     GtkWidget *button6;  
     GtkWidget *button7;
     GtkWidget *button8;
     GtkWidget *button9;
     GtkWidget *button10;  
     GtkWidget *button11;  

     GtkWidget *label3;
     GtkWidget *label4;  
     GtkWidget *entry1;
     GtkWidget *vbox1;
     GtkWidget *vbox2;
     GtkWidget *label5;
     GtkWidget *label6;
     GtkWidget *label7;
     GtkWidget *label8;
     GtkWidget *label9;

     GtkWidget *show_box;
   
     int indx;
     GtkWidget *vbox;
     GtkWidget *scrolled_window, *clist;


    /*gtk_init (&argc, &argv); 
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title(GTK_WINDOW(window), "GtkScrolledWindow");
    gtk_window_set_default_size(GTK_WINDOW(window), 320, 200);


   
    g_signal_connect_swapped(G_OBJECT(window),"destroy",G_CALLBACK(gtk_main_quit), NULL);*/
    
     total_vbox= gtk_vbox_new(FALSE,0);
     window_receive = gtk_scrolled_window_new (NULL, NULL);

   gtk_container_add (GTK_CONTAINER (total_vbox), window_receive);

     
    gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (window_receive),GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);


     table1 = gtk_table_new (60,120, FALSE);
     //vbox2 = make_box6(FALSE,0,FALSE,FALSE,3);
     
     label3 = gtk_label_new (g_locale_to_utf8("显 示:", -1, NULL, NULL, NULL));  
     label4 = gtk_label_new (g_locale_to_utf8("搜 索:", -1, NULL, NULL, NULL));
    // button6 = gtk_button_new_with_label(g_locale_to_utf8("回  复", -1, NULL, NULL, NULL));
   //  button7 = gtk_button_new_with_label(g_locale_to_utf8("转  发", -1, NULL, NULL, NULL));
    // button8 = gtk_button_new_with_label(g_locale_to_utf8("删  除", -1, NULL, NULL, NULL));
    // button9 = gtk_button_new_with_label(g_locale_to_utf8("标  记", -1, NULL, NULL, NULL));
     button10 = gtk_button_new_with_label(g_locale_to_utf8("全 部 信 件", -1, NULL, NULL, NULL));    
     button11 = gtk_button_new_with_label(g_locale_to_utf8("搜 索", -1, NULL, NULL, NULL)); 
     entry1 = gtk_entry_new ();
     //添加表格到窗口
     gtk_container_add(GTK_CONTAINER (window_receive), table1);
     //将元件分别添加到表格中        
     
//左半边


   gtk_table_attach_defaults (GTK_TABLE(table1), label3, 3, 5, 8, 10);     
     gtk_table_attach_defaults  (GTK_TABLE(table1), label4, 3, 5, 12, 14);
   //  gtk_table_attach_defaults  (GTK_TABLE(table1), button6, 4, 6, 2, 3);
  //   gtk_table_attach_defaults  (GTK_TABLE(table1), button7, 6, 8, 2, 3);
   //  gtk_table_attach_defaults  (GTK_TABLE(table1), button8, 8, 10, 2, 3);
   //  gtk_table_attach_defaults  (GTK_TABLE(table1), button9, 10, 12, 2, 3);
	//gtk_table_attach_defaults  (GTK_TABLE(table1), vbox2, 3, 12, 2, 3);
     gtk_table_attach_defaults  (GTK_TABLE(table1), button10,6,8, 8, 9);  
     gtk_table_attach_defaults  (GTK_TABLE(table1), button11,11, 13, 12, 14);     
     gtk_table_attach_defaults  (GTK_TABLE(table1), entry1,6, 10, 12, 13);
 

//加入滚动列表框
     vbox=gtk_vbox_new(FALSE, 5);
     gtk_container_set_border_width(GTK_CONTAINER(vbox), 5);
   //gtk_box_pack_start(GTK_BOX(vbox), scrolled_window, TRUE, TRUE, 0);
     gtk_table_attach_defaults (GTK_TABLE(table1), vbox,2, 60, 17, 120);   

   scrolled_window = gtk_scrolled_window_new (NULL, NULL);
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
   gtk_box_pack_start(GTK_BOX(vbox), scrolled_window, TRUE, TRUE, 0);
   gtk_widget_show (scrolled_window);

   show_box=gtk_vbox_new(FALSE, 5);
   show_box=create_list_yifasong();
   
  gtk_container_add(GTK_CONTAINER(scrolled_window), show_box);
 /* gtk_signal_connect(GTK_OBJECT(clist), "select_row",
                     GTK_SIGNAL_FUNC(selection_made),NULL
                     );*/

 //  gtk_widget_show_all (window); 
  //  gtk_main();
   return total_vbox;

}

show_letter.c

#include "main.h"
void shanchu_shoujianxiang( GtkWidget *widget,gpointer data )
{
        GtkTreeIter iter;
        char *sender,*subject,*time1;
	clear_up();
        gtk_tree_model_get(shoujianxiang_model,&shoujianxiang_iter,1,&sender,2,&subject,3,&time1);
  给数据库发送信息删除shoujianxiang


//
	//gtk_tree_view_get_model(GTK_TREE_VIEW(shoujianxiang_list));
	gtk_list_store_remove(GTK_LIST_STORE(shoujianxiang_model),&shoujianxiang_iter);
        gtk_list_store_append(yishanchu_list_store,&iter);
	gtk_list_store_set(yishanchu_list_store,&iter,0,FALSE,1,sender,2,subject,3,time1,-1);
       
	gtk_widget_destroy(data);


}

void shanchu_caogaoxiang( GtkWidget *widget,gpointer data )
{
给数据库发送信息删除caogaoxiang


//
printf("yyyy");
	clear_up();
	gtk_tree_view_get_model(GTK_TREE_VIEW(caogaoxiang_list));
	gtk_list_store_remove(GTK_LIST_STORE(caogaoxiang_model),&caogaoxiang_iter);
	gtk_widget_destroy(data);


}

void shanchu_yifasong( GtkWidget *widget,gpointer data )
{
给数据库发送信息删除yifasong


//
printf("yyyy");
	clear_up();
	gtk_tree_view_get_model(GTK_TREE_VIEW(yifasong_list));
	gtk_list_store_remove(GTK_LIST_STORE(yifasong_model),&yifasong_iter);
	gtk_widget_destroy(data);


}
void shanchu_shouxin( GtkWidget *widget,gpointer data )
{
给数据库发送信息删除yifasong


//
printf("yyyy");
	clear_up();
	gtk_tree_view_get_model(GTK_TREE_VIEW(shouxin_list));
	gtk_list_store_remove(GTK_LIST_STORE(shouxin_model),&shouxin_iter);
	gtk_widget_destroy(data);


}

void clear_up(  )
{
	GtkWidget *linshi_buffer;
	memset(text," ",sizeof(text));
        gtk_entry_set_text(GTK_ENTRY(entry_receive)," ");//88888888888888888888888888888888888888888888888
	gtk_entry_set_text(GTK_ENTRY(entry_subject)," ");//88888888888888888888888888888888888888888888888
	//text=buf;//88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888
	linshi_buffer=gtk_text_view_get_buffer(GTK_TEXT_VIEW(view));//88888888888888888888888888888
	gtk_text_buffer_set_text(linshi_buffer," ",1);//8888888888888888888888888888888888888888888888888
}
void tuichu(GtkWidget *widget,gpointer data )
{
	 clear_up();
	 gtk_widget_destroy(data);
}
void zhuanfa(GtkWidget *widget,gpointer data )
{
printf("zhuanfa\n");
gtk_entry_set_text(GTK_ENTRY(entry_receive),"");
	gtk_notebook_set_current_page(notebook,1);
        gtk_widget_destroy(data);
}
	
void mem(GtkButton* button, gpointer data);
void mem_entry_receive()
{
	gtk_entry_set_text(GTK_ENTRY(entry_receive),"");
}

 GtkWidget *make_box11(GtkWidget *window, gboolean homogeneous,//信件页面按钮盒
                     gint     spacing,
                     gboolean expand,
                     gboolean fill,
                     guint    padding ) 
{
    GtkWidget *box;
    GtkWidget *button1;
GtkWidget *button2;
GtkWidget *button3;
GtkWidget *button4;
GtkWidget *button5;
    char padstr[80];
    
    /* 以合适的 homogeneous 和 spacing 设置创建一个新的横向盒 */
    box = gtk_hbox_new (homogeneous, spacing);
    
    /* 以合适的设置创建一系列的按钮 */
    button1 = gtk_button_new_with_label ("关閉");
    gtk_box_pack_start (GTK_BOX (box), button1, expand, fill, padding);
   g_signal_connect (G_OBJECT (button1), "clicked", 
         G_CALLBACK (tuichu), window); 
       // g_signal_connect_swapped(G_OBJECT (button1), "clicked", 
            // G_CALLBACK (gtk_widget_destroy),window);
    gtk_widget_show (button1);
    
    button2= gtk_button_new_with_label ("回复");
    gtk_box_pack_start (GTK_BOX (box), button2, expand, fill, padding);
   g_signal_connect(G_OBJECT(button2),"clicked",G_CALLBACK(mem),window);//8888888888888888888888888888888888888888
    gtk_widget_show (button2);

    button3 = gtk_button_new_with_label ("转发");
    gtk_box_pack_start (GTK_BOX (box), button3, expand, fill, padding);
    g_signal_connect(G_OBJECT(button3),"clicked",G_CALLBACK(zhuanfa),window);
    gtk_widget_show (button3);

    button4 = gtk_button_new_with_label ("删除");
    gtk_box_pack_start (GTK_BOX (box), button4, expand, fill, padding);
	// g_signal_connect(G_OBJECT(button4),"clicked",G_CALLBACK(shanchu),window);
    g_signal_connect(G_OBJECT(button4),"clicked",G_CALLBACK(shanchu_shoujianxiang),window);
    gtk_widget_show (button4);

    button5 = gtk_button_new_with_label ("彻底删除");
    gtk_box_pack_start (GTK_BOX (box), button5, expand, fill, padding);
   // g_signal_connect(G_OBJECT(button3),"clicked",G_CALLBACK(zhuanfa),NULL);//88888888888888888888888888
    gtk_widget_show (button5);

    return box;
}
GtkWidget *make_box12( GtkWidget *window,gboolean homogeneous,    //草稿页面按钮盒
                     gint     spacing,
                     gboolean expand,
                     gboolean fill,
                     guint    padding ) 
{
    GtkWidget *box;

    GtkWidget *button1;
GtkWidget *button2;
GtkWidget *button3;
GtkWidget *button4;
    char padstr[80];
  
    /* 以合适的 homogeneous 和 spacing 设置创建一个新的横向盒 */
    box = gtk_hbox_new (homogeneous, spacing);
    
    /* 以合适的设置创建一系列的按钮 */
    button1 = gtk_button_new_with_label ("关閉");
    gtk_box_pack_start (GTK_BOX (box), button1, expand, fill, padding);
    g_signal_connect (G_OBJECT (button1), "clicked", 
         G_CALLBACK (tuichu), window); 
    gtk_widget_show (button1);
    
    button2 = gtk_button_new_with_label ("发送");
    gtk_box_pack_start (GTK_BOX (box), button2, expand, fill, padding);
	 g_signal_connect(G_OBJECT(button2),"clicked",G_CALLBACK(zhuanfa),window);
    gtk_widget_show (button2);

    /*button = gtk_button_new_with_label ("转发");
    gtk_box_pack_start (GTK_BOX (box), button, expand, fill, padding);
    gtk_widget_show (button);*/
 
    button3 = gtk_button_new_with_label ("删除");
    gtk_box_pack_start (GTK_BOX (box), button3, expand, fill, padding);
    g_signal_connect(G_OBJECT(button3),"clicked",G_CALLBACK(shanchu_caogaoxiang),window);
    gtk_widget_show (button3);
 printf("uuuuuuuu\n");
    button4 = gtk_button_new_with_label ("彻底删除");
    gtk_box_pack_start (GTK_BOX (box), button4, expand, fill, padding);
    gtk_widget_show (button4);

    return box;
}


GtkWidget *make_box13(GtkWidget *window, gboolean homogeneous,    //已发送页面按钮盒
                     gint     spacing,
                     gboolean expand,
                     gboolean fill,
                     guint    padding ) 
{
    GtkWidget *box;
    GtkWidget *button1;
GtkWidget *button2;
GtkWidget *button3;
GtkWidget *button4;
    char padstr[80];
    
    /* 以合适的 homogeneous 和 spacing 设置创建一个新的横向盒 */
    box = gtk_hbox_new (homogeneous, spacing);
    
    /* 以合适的设置创建一系列的按钮 */
    button1 = gtk_button_new_with_label ("关閉");
    gtk_box_pack_start (GTK_BOX (box), button1, expand, fill, padding);
   g_signal_connect (G_OBJECT (button1), "clicked", 
         G_CALLBACK (tuichu), window); 
    gtk_widget_show (button1);
    
    button2 = gtk_button_new_with_label ("转发");
    gtk_box_pack_start (GTK_BOX (box), button2, expand, fill, padding);
 g_signal_connect(G_OBJECT(button2),"clicked",G_CALLBACK(zhuanfa),window);
    gtk_widget_show (button2);

    /*button = gtk_button_new_with_label ("转发");
    gtk_box_pack_start (GTK_BOX (box), button, expand, fill, padding);
    gtk_widget_show (button);*/

    button3 = gtk_button_new_with_label ("删除");
    gtk_box_pack_start (GTK_BOX (box), button3, expand, fill, padding);
	g_signal_connect(G_OBJECT(button3),"clicked",G_CALLBACK(shanchu_yifasong),window);
    gtk_widget_show (button3);

    button4 = gtk_button_new_with_label ("彻底删除");
    gtk_box_pack_start (GTK_BOX (box), button4, expand, fill, padding);
    gtk_widget_show (button4);

    return box;
}

GtkWidget *make_box14(GtkWidget *window, gboolean homogeneous,    //已删除页面按钮盒
                     gint     spacing,
                     gboolean expand,
                     gboolean fill,
                     guint    padding ) 
{
    GtkWidget *box;
    GtkWidget *button1;
GtkWidget *button2;
GtkWidget *button3;
GtkWidget *button4;
    char padstr[80];
    
    /* 以合适的 homogeneous 和 spacing 设置创建一个新的横向盒 */
    box = gtk_hbox_new (homogeneous, spacing);
    
    /* 以合适的设置创建一系列的按钮 */
    button1 = gtk_button_new_with_label ("关閉");
    gtk_box_pack_start (GTK_BOX (box), button1, expand, fill, padding);
  g_signal_connect (G_OBJECT (button1), "clicked", 
         G_CALLBACK (tuichu), window); 
    gtk_widget_show (button1);
    
    button2 = gtk_button_new_with_label ("恢复到收件箱");
    gtk_box_pack_start (GTK_BOX (box), button2, expand, fill, padding);
    gtk_widget_show (button2);

    /*button = gtk_button_new_with_label ("转发");
    gtk_box_pack_start (GTK_BOX (box), button, expand, fill, padding);
    gtk_widget_show (button);*/

    button3 = gtk_button_new_with_label ("彻底删除");
    gtk_box_pack_start (GTK_BOX (box), button3, expand, fill, padding);
    gtk_widget_show (button3);

    /*button4 = gtk_button_new_with_label ("彻底删除");
    gtk_box_pack_start (GTK_BOX (box), button4, expand, fill, padding);
    gtk_widget_show (button4);*/

    return box;
}
GtkWidget *make_box15(GtkWidget *window, gboolean homogeneous,//信件页面按钮盒
                     gint     spacing,
                     gboolean expand,
                     gboolean fill,
                     guint    padding ) 
{
    GtkWidget *box;
    GtkWidget *button1;
GtkWidget *button2;
GtkWidget *button3;
GtkWidget *button4;
GtkWidget *button5;
    char padstr[80];
    
    /* 以合适的 homogeneous 和 spacing 设置创建一个新的横向盒 */
    box = gtk_hbox_new (homogeneous, spacing);
    
    /* 以合适的设置创建一系列的按钮 */
    button1 = gtk_button_new_with_label ("关閉");
    gtk_box_pack_start (GTK_BOX (box), button1, expand, fill, padding);
  g_signal_connect (G_OBJECT (button1), "clicked", 
         G_CALLBACK (tuichu), window); 
    gtk_widget_show (button1);
    
    button2= gtk_button_new_with_label ("回复");
    gtk_box_pack_start (GTK_BOX (box), button2, expand, fill, padding);
   g_signal_connect(G_OBJECT(button2),"clicked",G_CALLBACK(mem),window);//8888888888888888888888888888888888888888
    gtk_widget_show (button2);

    button3 = gtk_button_new_with_label ("转发");
    gtk_box_pack_start (GTK_BOX (box), button3, expand, fill, padding);
 g_signal_connect(G_OBJECT(button3),"clicked",G_CALLBACK(zhuanfa),window);
    gtk_widget_show (button3);

    button4 = gtk_button_new_with_label ("删除");
    gtk_box_pack_start (GTK_BOX (box), button4, expand, fill, padding);
    g_signal_connect(G_OBJECT(button4),"clicked",G_CALLBACK(shanchu_shouxin),window);

    gtk_widget_show (button4);

    button5 = gtk_button_new_with_label ("彻底删除");
    gtk_box_pack_start (GTK_BOX (box), button5, expand, fill, padding);
 //   g_signal_connect(G_OBJECT(button3),"clicked",G_CALLBACK(zhuanfa),NULL);//88888888888888888888888888
    gtk_widget_show (button5);

    return box;
}
void mem( GtkButton* button, gpointer data)//88888888888888888888888888888888888888888888888888888888888888888888888888888888
{
	GtkTextBuffer *linshi_buffer ;
	memset(text,' ',sizeof(text));
	linshi_buffer=gtk_text_view_get_buffer(GTK_TEXT_VIEW(view));
	gtk_text_buffer_set_text(linshi_buffer,text,sizeof(text));
        gtk_notebook_set_current_page(notebook,1);
        gtk_widget_destroy(data);

}

void window_show_letter(gchar *sender,gchar *subject,gchar* time1,gchar *receiver,char *buf)///弹出邮件阅读窗口,显示邮件
{
	//gtk_entry_set_text(GTK_ENTRY(entry_receive),sender);
	
	GtkTextBuffer *linshi_buffer ;
	char linshi_sender[50];
	sprintf(linshi_sender,"%s;",sender);

	gtk_entry_set_text(GTK_ENTRY(entry_receive),linshi_sender);//88888888888888888888888888888888888888888888888
	gtk_entry_set_text(GTK_ENTRY(entry_subject),subject);//88888888888888888888888888888888888888888888888
	text=buf;//88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888
	linshi_buffer=gtk_text_view_get_buffer(GTK_TEXT_VIEW(view));//88888888888888888888888888888
	gtk_text_buffer_set_text(linshi_buffer,text,-1);//8888888888888888888888888888888888888888888888888

	GtkWidget *window;
	GtkWidget *vbox;
	GtkWidget *bbox1;
	GtkWidget *box1;
	GtkWidget *bbox2;
	GtkWidget *bbox3;
	GtkWidget *bbox4;
	GtkWidget *label1;
	GtkWidget *label2;
	GtkWidget *label3;
	GtkWidget *label4;
	GtkWidget *label5;
	GtkWidget *label6;
	GtkWidget *label7;
	GtkWidget *label8;
	GtkWidget *read_view;//88888888888888888888888888888888888888888
	GtkTextBuffer* read_buffer;//888888888888888888888888888888888
	//gtk_init(&argc, &argv);
	window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
	gtk_widget_set_size_request(GTK_WIDGET(window),550,500); 
	gtk_window_set_resizable(GTK_WINDOW(window),FALSE);
	//g_signal_connect(G_OBJECT(window),"delete_event",G_CALLBACK(gtk_main_quit),NULL);
	gtk_window_set_title(GTK_WINDOW(window),"邮件内容");
	vbox = gtk_vbox_new(FALSE,0);
	read_view=gtk_text_view_new();//8888888888888888888888888888888888888
	gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(read_view),GTK_WRAP_WORD_CHAR);//8888888888888888888888888888888
	read_buffer=gtk_text_view_get_buffer(GTK_TEXT_VIEW(read_view));//8888888888888888888888888888888888
	gtk_text_buffer_set_text(read_buffer,buf,-1);//88888888888888888888888888888888888888888888最后的数字是字符串长度,为-1是默认杠0结尾
	box1 = make_box11(window,FALSE,0,FALSE,FALSE,3);
	gtk_box_pack_start(GTK_BOX(vbox),box1,FALSE,FALSE,2);
	bbox1 = gtk_hbox_new(FALSE,0);
	bbox2 = gtk_hbox_new(FALSE,0);
	bbox3 = gtk_hbox_new(FALSE,0);
	bbox4 = gtk_hbox_new(FALSE,0);
	label1 = gtk_label_new("主题: ");
	gtk_misc_set_alignment(GTK_MISC(label1),0,0);
	label2 = gtk_label_new("发件人:");
	label3 = gtk_label_new("时间: ");
	label4 = gtk_label_new("收件人:");
	
	label5 = gtk_label_new(subject);
	label6 = gtk_label_new(sender);
	label7 = gtk_label_new(time1);
	label8 = gtk_label_new(receiver);

	gtk_box_pack_start(GTK_BOX(bbox1),label1,FALSE,FALSE,0);
	gtk_box_pack_start(GTK_BOX(bbox1),label5,FALSE,FALSE,0);
	gtk_box_pack_start(GTK_BOX(vbox),bbox1,FALSE,FALSE,2);
	gtk_box_pack_start(GTK_BOX(bbox2),label2,FALSE,FALSE,2);
	gtk_box_pack_start(GTK_BOX(bbox2),label6,FALSE,FALSE,2);
	gtk_box_pack_start(GTK_BOX(vbox),bbox2,FALSE,FALSE,2);
	gtk_box_pack_start(GTK_BOX(bbox3),label3,FALSE,FALSE,2);
	gtk_box_pack_start(GTK_BOX(bbox3),label7,FALSE,FALSE,2);
	gtk_box_pack_start(GTK_BOX(vbox),bbox3,FALSE,FALSE,2);
	gtk_box_pack_start(GTK_BOX(bbox4),label4,FALSE,FALSE,2);
	gtk_box_pack_start(GTK_BOX(bbox4),label8,FALSE,FALSE,2);
	gtk_box_pack_start(GTK_BOX(vbox),bbox4,FALSE,FALSE,2);
	gtk_box_pack_start(GTK_BOX(vbox),read_view,TRUE,TRUE,2);//888888888888888888888888888888888888888888

	

	gtk_container_add(GTK_CONTAINER(window),vbox);
	gtk_widget_show_all(vbox);
	gtk_widget_show_all(window);
	//gtk_main();
	return 0;
}	

void window_show_caogao(gchar *sender,gchar *subject,gchar* time1,gchar *receiver,char *buf)///弹出草稿阅读窗口,显示草稿
{

	GtkTextBuffer *linshi_buffer ;
	char linshi_sender[50];
	sprintf(linshi_sender,"%s;",sender);

	gtk_entry_set_text(GTK_ENTRY(entry_receive),linshi_sender);//88888888888888888888888888888888888888888888888
	gtk_entry_set_text(GTK_ENTRY(entry_subject),subject);//88888888888888888888888888888888888888888888888
	text=buf;//88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888
	linshi_buffer=gtk_text_view_get_buffer(GTK_TEXT_VIEW(view));//88888888888888888888888888888
	gtk_text_buffer_set_text(linshi_buffer,text,-1);//8888888888888888888888888888888888888888888888888
	
	GtkWidget *window;
	GtkWidget *vbox;
	GtkWidget *bbox1;
	GtkWidget *box1;
	GtkWidget *bbox2;
	GtkWidget *bbox3;
	GtkWidget *bbox4;
	GtkWidget *label1;
	GtkWidget *label2;
	//GtkWidget *label3;
	GtkWidget *label4;
	GtkWidget *label5;
	GtkWidget *label6;
	//GtkWidget *label7;
	GtkWidget *label8;
	GtkWidget *caogao_view;//88888888888888888888888888888888888888888
	GtkTextBuffer* caogao_buffer;//888888888888888888888888888888888
	//gtk_init(&argc, &argv);
	window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
	gtk_widget_set_size_request(GTK_WIDGET(window),550,500); 
	gtk_window_set_resizable(GTK_WINDOW(window),FALSE);
	//g_signal_connect(G_OBJECT(window),"delete_event",G_CALLBACK(gtk_main_quit),NULL);
	gtk_window_set_title(GTK_WINDOW(window),"草稿内容");
	vbox = gtk_vbox_new(FALSE,0);
	caogao_view=gtk_text_view_new();//8888888888888888888888888888888888888
	gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(caogao_view),GTK_WRAP_WORD_CHAR);//8888888888888888888888888888888
	caogao_buffer=gtk_text_view_get_buffer(GTK_TEXT_VIEW(caogao_view));//8888888888888888888888888888888888
	gtk_text_buffer_set_text(caogao_buffer,buf,-1);//88888888888888888888888888888888888888888888最后的数字是字符串长度,为-1是默认杠0结尾
	printf("ddddddd\n");
        box1 = make_box12(window,FALSE,0,FALSE,FALSE,3);

	gtk_box_pack_start(GTK_BOX(vbox),box1,FALSE,FALSE,2);
	bbox1 = gtk_hbox_new(FALSE,0);
	bbox2 = gtk_hbox_new(FALSE,0);
	bbox3 = gtk_hbox_new(FALSE,0);
	bbox4 = gtk_hbox_new(FALSE,0);
	label1 = gtk_label_new("主题: ");
	gtk_misc_set_alignment(GTK_MISC(label1),0,0);
	label2 = gtk_label_new("发件人:");
	//label3 = gtk_label_new("时间: ");
	label4 = gtk_label_new("收件人:");
	
	label5 = gtk_label_new(subject);
	label6 = gtk_label_new(sender);
	//label7 = gtk_label_new(time1);
	label8 = gtk_label_new(receiver);

	gtk_box_pack_start(GTK_BOX(bbox1),label1,FALSE,FALSE,0);
	gtk_box_pack_start(GTK_BOX(bbox1),label5,FALSE,FALSE,0);
	gtk_box_pack_start(GTK_BOX(vbox),bbox1,FALSE,FALSE,2);
	gtk_box_pack_start(GTK_BOX(bbox2),label2,FALSE,FALSE,2);
	gtk_box_pack_start(GTK_BOX(bbox2),label6,FALSE,FALSE,2);
	gtk_box_pack_start(GTK_BOX(vbox),bbox2,FALSE,FALSE,2);
	//gtk_box_pack_start(GTK_BOX(bbox3),label3,FALSE,FALSE,2);
	//gtk_box_pack_start(GTK_BOX(bbox3),label7,FALSE,FALSE,2);
	gtk_box_pack_start(GTK_BOX(vbox),bbox3,FALSE,FALSE,2);
	gtk_box_pack_start(GTK_BOX(bbox4),label4,FALSE,FALSE,2);
	gtk_box_pack_start(GTK_BOX(bbox4),label8,FALSE,FALSE,2);
	gtk_box_pack_start(GTK_BOX(vbox),bbox4,FALSE,FALSE,2);
	gtk_box_pack_start(GTK_BOX(vbox),caogao_view,TRUE,TRUE,2);//888888888888888888888888888888888888888888


	

	gtk_container_add(GTK_CONTAINER(window),vbox);
	gtk_widget_show_all(vbox);
	gtk_widget_show_all(window);
	//gtk_main();
	return 0;
}	


void window_show_yifasong(gchar *sender,gchar *subject,gchar* time1,gchar *receiver,char *buf)///弹出已发送已发送邮件阅读窗口,显示邮件
{
		//gtk_entry_set_text(GTK_ENTRY(entry_receive),sender);
	
	GtkTextBuffer *linshi_buffer ;
	char linshi_sender[50];
	sprintf(linshi_sender,"%s;",sender);

	gtk_entry_set_text(GTK_ENTRY(entry_receive),linshi_sender);//88888888888888888888888888888888888888888888888
	gtk_entry_set_text(GTK_ENTRY(entry_subject),subject);//88888888888888888888888888888888888888888888888
	text=buf;//88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888
	linshi_buffer=gtk_text_view_get_buffer(GTK_TEXT_VIEW(view));//88888888888888888888888888888
	gtk_text_buffer_set_text(linshi_buffer,text,-1);//8888888888888888888888888888888888888888888888888
	printf("hhhhhh\n");
	GtkWidget *window;
	GtkWidget *vbox;
	GtkWidget *bbox1;
	GtkWidget *box1;
	GtkWidget *bbox2;
	GtkWidget *bbox3;
	GtkWidget *bbox4;
	GtkWidget *label1;
	GtkWidget *label2;
	//GtkWidget *label3;
	GtkWidget *label4;
	GtkWidget *label5;
	GtkWidget *label6;
	//GtkWidget *label7;
	GtkWidget *label8;
	GtkWidget *yifasong_view;//88888888888888888888888888888888888888888
	GtkTextBuffer* yifasong_buffer;//888888888888888888888888888888888
	//gtk_init(&argc, &argv);
	window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
	gtk_widget_set_size_request(GTK_WIDGET(window),550,500); 
	gtk_window_set_resizable(GTK_WINDOW(window),FALSE);
	//g_signal_connect(G_OBJECT(window),"delete_event",G_CALLBACK(gtk_main_quit),NULL);
	gtk_window_set_title(GTK_WINDOW(window),"已发送邮件");
	vbox = gtk_vbox_new(FALSE,0);
	yifasong_view=gtk_text_view_new();//8888888888888888888888888888888888888
	gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(yifasong_view),GTK_WRAP_WORD_CHAR);//8888888888888888888888888888888
	yifasong_buffer=gtk_text_view_get_buffer(GTK_TEXT_VIEW(yifasong_view));//8888888888888888888888888888888888
	gtk_text_buffer_set_text(yifasong_buffer,buf,-1);//88888888888888888888888888888888888888888888最后的数字是字符串长度,为-1是默认杠0结尾
	box1 = make_box13(window,FALSE,0,FALSE,FALSE,3);
	gtk_box_pack_start(GTK_BOX(vbox),box1,FALSE,FALSE,2);
	bbox1 = gtk_hbox_new(FALSE,0);
	bbox2 = gtk_hbox_new(FALSE,0);
	bbox3 = gtk_hbox_new(FALSE,0);
	bbox4 = gtk_hbox_new(FALSE,0);
	label1 = gtk_label_new("主题: ");
	gtk_misc_set_alignment(GTK_MISC(label1),0,0);
	label2 = gtk_label_new("发件人:");
	//label3 = gtk_label_new("时间: ");
	label4 = gtk_label_new("收件人:");
	
	label5 = gtk_label_new(subject);
	label6 = gtk_label_new(sender);
	//label7 = gtk_label_new(time1);
	label8 = gtk_label_new(receiver);

	gtk_box_pack_start(GTK_BOX(bbox1),label1,FALSE,FALSE,0);
	gtk_box_pack_start(GTK_BOX(bbox1),label5,FALSE,FALSE,0);
	gtk_box_pack_start(GTK_BOX(vbox),bbox1,FALSE,FALSE,2);
	gtk_box_pack_start(GTK_BOX(bbox2),label2,FALSE,FALSE,2);
	gtk_box_pack_start(GTK_BOX(bbox2),label6,FALSE,FALSE,2);
	gtk_box_pack_start(GTK_BOX(vbox),bbox2,FALSE,FALSE,2);
	//gtk_box_pack_start(GTK_BOX(bbox3),label3,FALSE,FALSE,2);
	//gtk_box_pack_start(GTK_BOX(bbox3),label7,FALSE,FALSE,2);
	gtk_box_pack_start(GTK_BOX(vbox),bbox3,FALSE,FALSE,2);
	gtk_box_pack_start(GTK_BOX(bbox4),label4,FALSE,FALSE,2);
	gtk_box_pack_start(GTK_BOX(bbox4),label8,FALSE,FALSE,2);
	gtk_box_pack_start(GTK_BOX(vbox),bbox4,FALSE,FALSE,2);
	gtk_box_pack_start(GTK_BOX(vbox),yifasong_view,TRUE,TRUE,2);//888888888888888888888888888888888888888888


	

	gtk_container_add(GTK_CONTAINER(window),vbox);
	gtk_widget_show_all(vbox);
	gtk_widget_show_all(window);
	//gtk_main();
	return 0;
}	


void window_show_yishanchu(gchar *sender,gchar *subject,gchar* time1,gchar *receiver,char *buf)///弹出已删除邮件阅读窗口,显示邮件
{
	
	
	GtkWidget *window;
	GtkWidget *vbox;
	GtkWidget *bbox1;
	GtkWidget *box1;
	GtkWidget *bbox2;
	GtkWidget *bbox3;
	GtkWidget *bbox4;
	GtkWidget *label1;
	GtkWidget *label2;
	//GtkWidget *label3;
	GtkWidget *label4;
	GtkWidget *label5;
	GtkWidget *label6;
	//GtkWidget *label7;
	GtkWidget *label8;
	GtkWidget *yishanchu_view;//88888888888888888888888888888888888888888
	GtkTextBuffer* yishanchu_buffer;//888888888888888888888888888888888
	//gtk_init(&argc, &argv);
	window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
	gtk_widget_set_size_request(GTK_WIDGET(window),550,500); 
	gtk_window_set_resizable(GTK_WINDOW(window),FALSE);
	//g_signal_connect(G_OBJECT(window),"delete_event",G_CALLBACK(gtk_main_quit),NULL);
	gtk_window_set_title(GTK_WINDOW(window),"已删除邮件");
	vbox = gtk_vbox_new(FALSE,0);
	yishanchu_view=gtk_text_view_new();//8888888888888888888888888888888888888
	gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(yishanchu_view),GTK_WRAP_WORD_CHAR);//8888888888888888888888888888888
	yishanchu_buffer=gtk_text_view_get_buffer(GTK_TEXT_VIEW(yishanchu_view));//8888888888888888888888888888888888
	gtk_text_buffer_set_text(yishanchu_buffer,buf,-1);//88888888888888888888888888888888888888888888最后的数字是字符串长度,为-1是默认杠0结尾
	box1 = make_box14(window,FALSE,0,FALSE,FALSE,3);
	gtk_box_pack_start(GTK_BOX(vbox),box1,FALSE,FALSE,2);
	bbox1 = gtk_hbox_new(FALSE,0);
	bbox2 = gtk_hbox_new(FALSE,0);
	bbox3 = gtk_hbox_new(FALSE,0);
	bbox4 = gtk_hbox_new(FALSE,0);
	label1 = gtk_label_new("主题: ");
	gtk_misc_set_alignment(GTK_MISC(label1),0,0);
	label2 = gtk_label_new("发件人:");
	//label3 = gtk_label_new("时间: ");
	label4 = gtk_label_new("收件人:");
	
	label5 = gtk_label_new(subject);
	label6 = gtk_label_new(sender);
	//label7 = gtk_label_new(time1);
	label8 = gtk_label_new(receiver);

	gtk_box_pack_start(GTK_BOX(bbox1),label1,FALSE,FALSE,0);
	gtk_box_pack_start(GTK_BOX(bbox1),label5,FALSE,FALSE,0);
	gtk_box_pack_start(GTK_BOX(vbox),bbox1,FALSE,FALSE,2);
	gtk_box_pack_start(GTK_BOX(bbox2),label2,FALSE,FALSE,2);
	gtk_box_pack_start(GTK_BOX(bbox2),label6,FALSE,FALSE,2);
	gtk_box_pack_start(GTK_BOX(vbox),bbox2,FALSE,FALSE,2);
	//gtk_box_pack_start(GTK_BOX(bbox3),label3,FALSE,FALSE,2);
	//gtk_box_pack_start(GTK_BOX(bbox3),label7,FALSE,FALSE,2);
	gtk_box_pack_start(GTK_BOX(vbox),bbox3,FALSE,FALSE,2);
	gtk_box_pack_start(GTK_BOX(bbox4),label4,FALSE,FALSE,2);
	gtk_box_pack_start(GTK_BOX(bbox4),label8,FALSE,FALSE,2);
	gtk_box_pack_start(GTK_BOX(vbox),bbox4,FALSE,FALSE,2);
	gtk_box_pack_start(GTK_BOX(vbox),yishanchu_view,TRUE,TRUE,2);//888888888888888888888888888888888888888888


	

	gtk_container_add(GTK_CONTAINER(window),vbox);
	gtk_widget_show_all(vbox);
	gtk_widget_show_all(window);
	//gtk_main();
	return 0;
}

void window_show_shouxin(gchar *sender,gchar *subject,gchar* time1,gchar *receiver,char *buf)///弹出邮件阅读窗口,显示邮件
{
	//gtk_entry_set_text(GTK_ENTRY(entry_receive),sender);
	
	GtkTextBuffer *linshi_buffer ;
	char linshi_sender[50];
	sprintf(linshi_sender,"%s;",sender);

	gtk_entry_set_text(GTK_ENTRY(entry_receive),linshi_sender);//88888888888888888888888888888888888888888888888
	gtk_entry_set_text(GTK_ENTRY(entry_subject),subject);//88888888888888888888888888888888888888888888888
	text=buf;//88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888
	linshi_buffer=gtk_text_view_get_buffer(GTK_TEXT_VIEW(view));//88888888888888888888888888888
	gtk_text_buffer_set_text(linshi_buffer,text,-1);//8888888888888888888888888888888888888888888888888

	GtkWidget *window;
	GtkWidget *vbox;
	GtkWidget *bbox1;
	GtkWidget *box1;
	GtkWidget *bbox2;
	GtkWidget *bbox3;
	GtkWidget *bbox4;
	GtkWidget *label1;
	GtkWidget *label2;
	GtkWidget *label3;
	GtkWidget *label4;
	GtkWidget *label5;
	GtkWidget *label6;
	GtkWidget *label7;
	GtkWidget *label8;
	GtkWidget *read_view;//88888888888888888888888888888888888888888
	GtkTextBuffer* read_buffer;//888888888888888888888888888888888
	//gtk_init(&argc, &argv);
	window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
	gtk_widget_set_size_request(GTK_WIDGET(window),550,500); 
	gtk_window_set_resizable(GTK_WINDOW(window),FALSE);
	//g_signal_connect(G_OBJECT(window),"delete_event",G_CALLBACK(gtk_main_quit),NULL);
	gtk_window_set_title(GTK_WINDOW(window),"邮件内容");
	vbox = gtk_vbox_new(FALSE,0);
	read_view=gtk_text_view_new();//8888888888888888888888888888888888888
	gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(read_view),GTK_WRAP_WORD_CHAR);//8888888888888888888888888888888
	read_buffer=gtk_text_view_get_buffer(GTK_TEXT_VIEW(read_view));//8888888888888888888888888888888888
	gtk_text_buffer_set_text(read_buffer,buf,-1);//88888888888888888888888888888888888888888888最后的数字是字符串长度,为-1是默认杠0结尾
	box1 = make_box15(window,FALSE,0,FALSE,FALSE,3);
	gtk_box_pack_start(GTK_BOX(vbox),box1,FALSE,FALSE,2);
	bbox1 = gtk_hbox_new(FALSE,0);
	bbox2 = gtk_hbox_new(FALSE,0);
	bbox3 = gtk_hbox_new(FALSE,0);
	bbox4 = gtk_hbox_new(FALSE,0);
	label1 = gtk_label_new("主题: ");
	gtk_misc_set_alignment(GTK_MISC(label1),0,0);
	label2 = gtk_label_new("发件人:");
	label3 = gtk_label_new("时间: ");
	label4 = gtk_label_new("收件人:");
	
	label5 = gtk_label_new(subject);
	label6 = gtk_label_new(sender);
	label7 = gtk_label_new(time1);
	label8 = gtk_label_new(receiver);

	gtk_box_pack_start(GTK_BOX(bbox1),label1,FALSE,FALSE,0);
	gtk_box_pack_start(GTK_BOX(bbox1),label5,FALSE,FALSE,0);
	gtk_box_pack_start(GTK_BOX(vbox),bbox1,FALSE,FALSE,2);
	gtk_box_pack_start(GTK_BOX(bbox2),label2,FALSE,FALSE,2);
	gtk_box_pack_start(GTK_BOX(bbox2),label6,FALSE,FALSE,2);
	gtk_box_pack_start(GTK_BOX(vbox),bbox2,FALSE,FALSE,2);
	gtk_box_pack_start(GTK_BOX(bbox3),label3,FALSE,FALSE,2);
	gtk_box_pack_start(GTK_BOX(bbox3),label7,FALSE,FALSE,2);
	gtk_box_pack_start(GTK_BOX(vbox),bbox3,FALSE,FALSE,2);
	gtk_box_pack_start(GTK_BOX(bbox4),label4,FALSE,FALSE,2);
	gtk_box_pack_start(GTK_BOX(bbox4),label8,FALSE,FALSE,2);
	gtk_box_pack_start(GTK_BOX(vbox),bbox4,FALSE,FALSE,2);
	gtk_box_pack_start(GTK_BOX(vbox),read_view,TRUE,TRUE,2);//888888888888888888888888888888888888888888

	

	gtk_container_add(GTK_CONTAINER(window),vbox);
	gtk_widget_show_all(vbox);
	gtk_widget_show_all(window);
	//gtk_main();
	return 0;
}	

shouxin.c

#include <gtk/gtk.h> 
#include <string.h>
#include "main.h"
GtkWidget *window_shouxin;
//char name[20]="hjlhsa";//邮件地址gggggggggggggggggg
/* 用于list view */
enum ListCols
{
    LIST_CHECKED,
    LIST_SENDER,
    LIST_SUBJECT,
    LIST_TIME
};

void select_show_shouxin(GtkTreeSelection* select, gpointer data) //获得sender和发送时间发送给数据库
{
   // GtkTreeIter iter;
   // GtkTreeModel* model;
    gchar* sender;
    gchar* time1;
    gchar* subject;
    char buf[100]={"hiierjhejkhjkdfh"};
    //gchar* info;
    char request[1024];
    int len;
	int i;
    memset(request,' ',sizeof(request));

    if(gtk_tree_selection_get_selected(select, &shouxin_model, &shouxin_iter))
    {
        gtk_tree_model_get(shouxin_model, &shouxin_iter, LIST_SENDER, &sender,LIST_TIME,&time1,LIST_SUBJECT,&subject,-1);
         printf("%s\n",time1);
        request[0]='2';
        request[1]='2';
        len=strlen(sender);
        request[2]=(char)len;
        for(i=0;i<len;i++){
		request[i+3]=sender[i];
	}
	request[15]=26;
	for(i=0;i<19;i++){
		request[i+16]=time1[i];
	}
        //连接数据库,获得装有邮件内容的buf
	/**************************/   
 


 
        window_show_shouxin(sender,subject,time1,name,buf);///弹出邮件阅读窗口,显示邮件

        printf("%s\n",request);
        g_free(sender);
	g_free(time1);
    }
}


GtkWidget * create_list_shouxin()//创建显示邮件信息的列表
{

    GtkWidget* vbox ;

    //GtkTreeView* list;
    //GtkListStore*  list_store;
    GtkTreeIter iter;
    GtkCellRenderer* renderer;
    GtkTreeViewColumn* column;
    GtkTreeSelection* select;
    vbox = gtk_vbox_new (FALSE, 2);

    /* 创建ListView */
    shouxin_list = gtk_tree_view_new();
    /* 创建ListView的model, 添加数据 */
    shouxin_list_store = gtk_list_store_new(4,G_TYPE_BOOLEAN,
                                    G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING);
   //连接数据库,获得邮件列表
	/**************************/
  
  
    gtk_list_store_append(shouxin_list_store, &iter);
    gtk_list_store_set(shouxin_list_store, &iter,
                       LIST_CHECKED,FALSE,
                       LIST_SENDER, "KENBER",
                       LIST_SUBJECT, "HHHHHHHHHHH",
                       LIST_TIME,"2014/ 2/ 3 13:34:26" , -1);
      gtk_list_store_append(shouxin_list_store, &iter);
    gtk_list_store_set(shouxin_list_store, &iter,
                       LIST_CHECKED,FALSE,
                       LIST_SENDER, "guosiyu",
                       LIST_SUBJECT, "uuuuuuu",
                       LIST_TIME,"2012/ 2/ 7 13:34:26" , -1);
    gtk_tree_view_set_model(shouxin_list,shouxin_list_store);
    //g_object_unref(list_store);

    /* 创建ListView的View */
        renderer = gtk_cell_renderer_toggle_new();
    column = gtk_tree_view_column_new_with_attributes("选择", renderer,
             "active", LIST_CHECKED, NULL);
    column = gtk_tree_view_append_column(shouxin_list, column);
    renderer = gtk_cell_renderer_text_new();
    column = gtk_tree_view_column_new_with_attributes("发件人", renderer,
             "text", LIST_SENDER, NULL);
    column = gtk_tree_view_append_column(shouxin_list, column);
    renderer = gtk_cell_renderer_text_new();
    column = gtk_tree_view_column_new_with_attributes("主题", renderer,
             "text", LIST_SUBJECT, NULL);
    column = gtk_tree_view_append_column(shouxin_list, column);
    column = gtk_tree_view_column_new_with_attributes("日期", renderer,
             "text", LIST_TIME, NULL);
    column = gtk_tree_view_append_column(shouxin_list, column);
    
    //设置点击列表触发事件
    select = gtk_tree_view_get_selection(shouxin_list);
    gtk_tree_selection_set_mode(select, GTK_SELECTION_SINGLE);
    g_signal_connect(G_OBJECT(select), "changed",
                     G_CALLBACK(select_show_shouxin), NULL);


    gtk_box_pack_start(vbox, shouxin_list, TRUE,TRUE, 1);
    return vbox;
}

GtkWidget *make_box55( gboolean homogeneous,      //已发送  
                     gint     spacing,
                     gboolean expand,
                     gboolean fill,
                     guint    padding ) 
{
    GtkWidget *box;
    GtkWidget *button;
    char padstr[80];
    
    /* 以合适的 homogeneous 和 spacing 设置创建一个新的横向盒 */
    box = gtk_hbox_new (homogeneous, spacing);
    
    /* 以合适的设置创建一系列的按钮 */
    button = gtk_button_new_with_label (" 回 复 ");
    gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 2);
    gtk_widget_show (button);
    
    button = gtk_button_new_with_label (" 转 发 ");
    gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 2);
    gtk_widget_show (button);

    button = gtk_button_new_with_label (" 删 除 ");
    gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 2);
    gtk_widget_show (button);

    button = gtk_button_new_with_label (" 标 记 ");
    gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 2);
    gtk_widget_show (button);	
    
    return box;
}
 


 


GtkWidget *make_shouxin()
{ 
   // GtkWidget *window;

	 GtkWidget *total_vbox;
    GtkWidget *table1;
    
     GtkWidget *button6;  
     GtkWidget *button7;
     GtkWidget *button8;
     GtkWidget *button9;
     GtkWidget *button10;  
     GtkWidget *button11;  

     GtkWidget *label3;
     GtkWidget *label4;  
     GtkWidget *entry1;
     GtkWidget *vbox1;
     GtkWidget *vbox2;

     GtkWidget *show_box;
   
     int indx;
     GtkWidget *vbox;
     GtkWidget *scrolled_window, *clist;


    /*gtk_init (&argc, &argv); 
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title(GTK_WINDOW(window), "GtkScrolledWindow");
    gtk_window_set_default_size(GTK_WINDOW(window), 320, 200);


   
    g_signal_connect_swapped(G_OBJECT(window),"destroy",G_CALLBACK(gtk_main_quit), NULL);*/
    
     total_vbox= gtk_vbox_new(FALSE,0);
     window_shouxin = gtk_scrolled_window_new (NULL, NULL);

   gtk_container_add (GTK_CONTAINER (total_vbox), window_shouxin);

     
    gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (window_shouxin),GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);


     table1 = gtk_table_new (60,120, FALSE);

     label3 = gtk_label_new (g_locale_to_utf8("显 示:", -1, NULL, NULL, NULL));  
     label4 = gtk_label_new (g_locale_to_utf8("搜 索:", -1, NULL, NULL, NULL));
	vbox2 = make_box55(FALSE,0,FALSE,FALSE,3);  

    // button6 = gtk_button_new_with_label(g_locale_to_utf8("回  复", -1, NULL, NULL, NULL));
   //  button7 = gtk_button_new_with_label(g_locale_to_utf8("转  发", -1, NULL, NULL, NULL));
  //   button8 = gtk_button_new_with_label(g_locale_to_utf8("删  除", -1, NULL, NULL, NULL));
   //  button9 = gtk_button_new_with_label(g_locale_to_utf8("标  记", -1, NULL, NULL, NULL));
     button10 = gtk_button_new_with_label(g_locale_to_utf8("全 部 信 件", -1, NULL, NULL, NULL));    
     button11 = gtk_button_new_with_label(g_locale_to_utf8(" 搜 索 ", -1, NULL, NULL, NULL)); 
     entry1 = gtk_entry_new ();
     //添加表格到窗口
     gtk_container_add(GTK_CONTAINER (window_shouxin), table1);
     //将元件分别添加到表格中        
     
//左半边

     gtk_table_attach_defaults (GTK_TABLE(table1), label3, 3, 5, 8, 10);     
     gtk_table_attach_defaults  (GTK_TABLE(table1), label4, 3, 5, 12, 14);
   //  gtk_table_attach_defaults  (GTK_TABLE(table1), button6, 4, 6, 2, 3);
  //   gtk_table_attach_defaults  (GTK_TABLE(table1), button7, 6, 8, 2, 3);
   //  gtk_table_attach_defaults  (GTK_TABLE(table1), button8, 8, 10, 2, 3);
   //  gtk_table_attach_defaults  (GTK_TABLE(table1), button9, 10, 12, 2, 3);
	gtk_table_attach_defaults  (GTK_TABLE(table1), vbox2, 3, 12, 2, 3);
     gtk_table_attach_defaults  (GTK_TABLE(table1), button10,6,8, 8, 9);  
     gtk_table_attach_defaults  (GTK_TABLE(table1), button11,11, 13, 12, 14);     
     gtk_table_attach_defaults  (GTK_TABLE(table1), entry1,6, 10, 12, 13);

//加入滚动列表框
     vbox=gtk_vbox_new(FALSE, 5);
     gtk_container_set_border_width(GTK_CONTAINER(vbox), 5);
   //gtk_box_pack_start(GTK_BOX(vbox), scrolled_window, TRUE, TRUE, 0);
     gtk_table_attach_defaults  (GTK_TABLE(table1), vbox,2, 60, 17,120);  

   scrolled_window = gtk_scrolled_window_new (NULL, NULL);
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
   gtk_box_pack_start(GTK_BOX(vbox), scrolled_window, TRUE, TRUE, 0);
   gtk_widget_show (scrolled_window);

   show_box=gtk_vbox_new(FALSE, 5);
   show_box=create_list_shouxin();
   
  gtk_container_add(GTK_CONTAINER(scrolled_window), show_box);
 /* gtk_signal_connect(GTK_OBJECT(clist), "select_row",
                     GTK_SIGNAL_FUNC(selection_made),NULL
                     );*/

 //  gtk_widget_show_all (window); 
  //  gtk_main();
   return total_vbox;

}

receive_all.c

#include <gtk/gtk.h> 
#include <string.h>
#include "main.h"
GtkWidget *window_shouxin;
//char name[20]="hjlhsa";//邮件地址gggggggggggggggggg
/* 用于list view */
enum ListCols
{
    LIST_CHECKED,
    LIST_SENDER,
    LIST_SUBJECT,
    LIST_TIME
};

void select_show_shouxin(GtkTreeSelection* select, gpointer data) //获得sender和发送时间发送给数据库
{
   // GtkTreeIter iter;
   // GtkTreeModel* model;
    gchar* sender;
    gchar* time1;
    gchar* subject;
    char buf[100]={"hiierjhejkhjkdfh"};
    //gchar* info;
    char request[1024];
    int len;
	int i;
    memset(request,' ',sizeof(request));

    if(gtk_tree_selection_get_selected(select, &shouxin_model, &shouxin_iter))
    {
        gtk_tree_model_get(shouxin_model, &shouxin_iter, LIST_SENDER, &sender,LIST_TIME,&time1,LIST_SUBJECT,&subject,-1);
         printf("%s\n",time1);
        request[0]='2';
        request[1]='2';
        len=strlen(sender);
        request[2]=(char)len;
        for(i=0;i<len;i++){
		request[i+3]=sender[i];
	}
	request[15]=26;
	for(i=0;i<19;i++){
		request[i+16]=time1[i];
	}
        //连接数据库,获得装有邮件内容的buf
	/**************************/   
 


 
        window_show_shouxin(sender,subject,time1,name,buf);///弹出邮件阅读窗口,显示邮件

        printf("%s\n",request);
        g_free(sender);
	g_free(time1);
    }
}


GtkWidget * create_list_shouxin()//创建显示邮件信息的列表
{

    GtkWidget* vbox ;

    //GtkTreeView* list;
    //GtkListStore*  list_store;
    GtkTreeIter iter;
    GtkCellRenderer* renderer;
    GtkTreeViewColumn* column;
    GtkTreeSelection* select;
    vbox = gtk_vbox_new (FALSE, 2);

    /* 创建ListView */
    shouxin_list = gtk_tree_view_new();
    /* 创建ListView的model, 添加数据 */
    shouxin_list_store = gtk_list_store_new(4,G_TYPE_BOOLEAN,
                                    G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING);
   //连接数据库,获得邮件列表
	/**************************/
  
  
    gtk_list_store_append(shouxin_list_store, &iter);
    gtk_list_store_set(shouxin_list_store, &iter,
                       LIST_CHECKED,FALSE,
                       LIST_SENDER, "KENBER",
                       LIST_SUBJECT, "HHHHHHHHHHH",
                       LIST_TIME,"2014/ 2/ 3 13:34:26" , -1);
      gtk_list_store_append(shouxin_list_store, &iter);
    gtk_list_store_set(shouxin_list_store, &iter,
                       LIST_CHECKED,FALSE,
                       LIST_SENDER, "guosiyu",
                       LIST_SUBJECT, "uuuuuuu",
                       LIST_TIME,"2012/ 2/ 7 13:34:26" , -1);
    gtk_tree_view_set_model(shouxin_list,shouxin_list_store);
    //g_object_unref(list_store);

    /* 创建ListView的View */
        renderer = gtk_cell_renderer_toggle_new();
    column = gtk_tree_view_column_new_with_attributes("选择", renderer,
             "active", LIST_CHECKED, NULL);
    column = gtk_tree_view_append_column(shouxin_list, column);
    renderer = gtk_cell_renderer_text_new();
    column = gtk_tree_view_column_new_with_attributes("发件人", renderer,
             "text", LIST_SENDER, NULL);
    column = gtk_tree_view_append_column(shouxin_list, column);
    renderer = gtk_cell_renderer_text_new();
    column = gtk_tree_view_column_new_with_attributes("主题", renderer,
             "text", LIST_SUBJECT, NULL);
    column = gtk_tree_view_append_column(shouxin_list, column);
    column = gtk_tree_view_column_new_with_attributes("日期", renderer,
             "text", LIST_TIME, NULL);
    column = gtk_tree_view_append_column(shouxin_list, column);
    
    //设置点击列表触发事件
    select = gtk_tree_view_get_selection(shouxin_list);
    gtk_tree_selection_set_mode(select, GTK_SELECTION_SINGLE);
    g_signal_connect(G_OBJECT(select), "changed",
                     G_CALLBACK(select_show_shouxin), NULL);


    gtk_box_pack_start(vbox, shouxin_list, TRUE,TRUE, 1);
    return vbox;
}

GtkWidget *make_box55( gboolean homogeneous,      //已发送  
                     gint     spacing,
                     gboolean expand,
                     gboolean fill,
                     guint    padding ) 
{
    GtkWidget *box;
    GtkWidget *button;
    char padstr[80];
    
    /* 以合适的 homogeneous 和 spacing 设置创建一个新的横向盒 */
    box = gtk_hbox_new (homogeneous, spacing);
    
    /* 以合适的设置创建一系列的按钮 */
    button = gtk_button_new_with_label (" 回 复 ");
    gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 2);
    gtk_widget_show (button);
    
    button = gtk_button_new_with_label (" 转 发 ");
    gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 2);
    gtk_widget_show (button);

    button = gtk_button_new_with_label (" 删 除 ");
    gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 2);
    gtk_widget_show (button);

    button = gtk_button_new_with_label (" 标 记 ");
    gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 2);
    gtk_widget_show (button);	
    
    return box;
}
 


 


GtkWidget *make_shouxin()
{ 
   // GtkWidget *window;

	 GtkWidget *total_vbox;
    GtkWidget *table1;
    
     GtkWidget *button6;  
     GtkWidget *button7;
     GtkWidget *button8;
     GtkWidget *button9;
     GtkWidget *button10;  
     GtkWidget *button11;  

     GtkWidget *label3;
     GtkWidget *label4;  
     GtkWidget *entry1;
     GtkWidget *vbox1;
     GtkWidget *vbox2;

     GtkWidget *show_box;
   
     int indx;
     GtkWidget *vbox;
     GtkWidget *scrolled_window, *clist;


    /*gtk_init (&argc, &argv); 
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title(GTK_WINDOW(window), "GtkScrolledWindow");
    gtk_window_set_default_size(GTK_WINDOW(window), 320, 200);


   
    g_signal_connect_swapped(G_OBJECT(window),"destroy",G_CALLBACK(gtk_main_quit), NULL);*/
    
     total_vbox= gtk_vbox_new(FALSE,0);
     window_shouxin = gtk_scrolled_window_new (NULL, NULL);

   gtk_container_add (GTK_CONTAINER (total_vbox), window_shouxin);

     
    gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (window_shouxin),GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);


     table1 = gtk_table_new (60,120, FALSE);

     label3 = gtk_label_new (g_locale_to_utf8("显 示:", -1, NULL, NULL, NULL));  
     label4 = gtk_label_new (g_locale_to_utf8("搜 索:", -1, NULL, NULL, NULL));
	vbox2 = make_box55(FALSE,0,FALSE,FALSE,3);  

    // button6 = gtk_button_new_with_label(g_locale_to_utf8("回  复", -1, NULL, NULL, NULL));
   //  button7 = gtk_button_new_with_label(g_locale_to_utf8("转  发", -1, NULL, NULL, NULL));
  //   button8 = gtk_button_new_with_label(g_locale_to_utf8("删  除", -1, NULL, NULL, NULL));
   //  button9 = gtk_button_new_with_label(g_locale_to_utf8("标  记", -1, NULL, NULL, NULL));
     button10 = gtk_button_new_with_label(g_locale_to_utf8("全 部 信 件", -1, NULL, NULL, NULL));    
     button11 = gtk_button_new_with_label(g_locale_to_utf8(" 搜 索 ", -1, NULL, NULL, NULL)); 
     entry1 = gtk_entry_new ();
     //添加表格到窗口
     gtk_container_add(GTK_CONTAINER (window_shouxin), table1);
     //将元件分别添加到表格中        
     
//左半边

     gtk_table_attach_defaults (GTK_TABLE(table1), label3, 3, 5, 8, 10);     
     gtk_table_attach_defaults  (GTK_TABLE(table1), label4, 3, 5, 12, 14);
   //  gtk_table_attach_defaults  (GTK_TABLE(table1), button6, 4, 6, 2, 3);
  //   gtk_table_attach_defaults  (GTK_TABLE(table1), button7, 6, 8, 2, 3);
   //  gtk_table_attach_defaults  (GTK_TABLE(table1), button8, 8, 10, 2, 3);
   //  gtk_table_attach_defaults  (GTK_TABLE(table1), button9, 10, 12, 2, 3);
	gtk_table_attach_defaults  (GTK_TABLE(table1), vbox2, 3, 12, 2, 3);
     gtk_table_attach_defaults  (GTK_TABLE(table1), button10,6,8, 8, 9);  
     gtk_table_attach_defaults  (GTK_TABLE(table1), button11,11, 13, 12, 14);     
     gtk_table_attach_defaults  (GTK_TABLE(table1), entry1,6, 10, 12, 13);

//加入滚动列表框
     vbox=gtk_vbox_new(FALSE, 5);
     gtk_container_set_border_width(GTK_CONTAINER(vbox), 5);
   //gtk_box_pack_start(GTK_BOX(vbox), scrolled_window, TRUE, TRUE, 0);
     gtk_table_attach_defaults  (GTK_TABLE(table1), vbox,2, 60, 17,120);  

   scrolled_window = gtk_scrolled_window_new (NULL, NULL);
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
   gtk_box_pack_start(GTK_BOX(vbox), scrolled_window, TRUE, TRUE, 0);
   gtk_widget_show (scrolled_window);

   show_box=gtk_vbox_new(FALSE, 5);
   show_box=create_list_shouxin();
   
  gtk_container_add(GTK_CONTAINER(scrolled_window), show_box);
 /* gtk_signal_connect(GTK_OBJECT(clist), "select_row",
                     GTK_SIGNAL_FUNC(selection_made),NULL
                     );*/

 //  gtk_widget_show_all (window); 
  //  gtk_main();
   return total_vbox;

}

server.c

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<netdb.h>
#include<string.h>
#include "sqlite3.h"
char s_callback1[1024] = {0};
char s_callback2[100][1024];
int record_num=0;
int callback1_flag=0;
int legal_user_flag=1;
int port=12333;

int callback1(void* p ,int nCount,char** pValue,char** pName);
static int callback2(void* p ,int nCount,char** pValue,char** pName);

int main()
{

    memset(s_callback2,' ',sizeof(s_callback2));

    struct sockaddr_in sin;
    struct sockaddr_in pin;
    int sock_descriptor;
    int temp_sock_descriptor;
    int size_of_addr;
    char buf[8192];
    memset(buf,' ',sizeof(buf));
    int i, length;
    sock_descriptor=socket(AF_INET, SOCK_STREAM, 0);

    if(sock_descriptor == -1)
    {
        perror("socket error!");
        exit(1);
    }
    bzero(&sin, sizeof(sin));
    sin.sin_family=AF_INET;
    sin.sin_addr.s_addr = INADDR_ANY;
    sin.sin_port=htons(port);
    if(bind(sock_descriptor, (struct sockaddr*)&sin, sizeof(sin)) == -1)
    {
        perror("bind error");
        exit(1);
    }
    if(listen(sock_descriptor, 20) == -1)
    {
        perror("listen1 error");
        exit(1);
    }
    printf("waiting for accepting!\n");
    while(1)
    {
        temp_sock_descriptor = accept(sock_descriptor, (struct sockaddr*)&pin, &size_of_addr);
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
        if(temp_sock_descriptor == -1)
        {
            perror("accept error!");
            exit(1);
        }
	else{
	       printf("accept client request\n");
	}
memset(buf, ' ', sizeof(buf));
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
        if(recv(temp_sock_descriptor, buf, sizeof(buf), 0) < 0)
        {
            perror("recv()!");
            exit(1);
        }
  	else{
		/**********************************打开mail数据库*********************************/
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
		printf("message received from client: %s\n", buf);
		sqlite3 *db = NULL;
	        char *ErrMsg = 0;
	        int rc;
	        rc = sqlite3_open ("mail.db", &db);
		if (rc){
				 fprintf (stderr, "Can't open database: %s\n", sqlite3_errmsg (db));
				 sqlite3_close (db);
				 exit (EXIT_FAILURE);
	        }
		else{
		    	 printf ("You have opened a sqlite3 database named mail.db successfully!\n");
	        }
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
		char sql[1024]={0};
		/**********************************打开mail数据库*********************************/

		/**插入user表的内容**/
		char username[13];
		char password[17];
		char nickname[21];
		char telnum[12];
		int user_num=0;
		char* new_usr_check_msg='\0';
		/**插入user表的内容**/

		/**插入send表的内容**/
		int status_sender=0;
		char sender[13];
		char date_time[27];
		char title[81];
		char content[501];
		/**插入send表的内容**/

		/**插入receive表的内容**/
		char receiver[13]={'\0'};
		int status_recer=0;
		int secret=0;
		/**插入receive表的内容**/

		/**插入contact表中的内容**/
		char usrname[13];
		char contactor[13];
		/**插入contact表中的内容**/

		int j=0,k=0,st=0;
		int recer_st=0;
		int tmp_recer_st=0;
		char tmp_sender[13];
		char tmp_date_time[27];
		int col_num=0;
		int line_num=0;
		char line_num_buf[10];
		memset(line_num_buf,' ',sizeof(line_num_buf));
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
		switch (buf[0]){//确定要进行数据操作的表
/**********************************************************向user表插入数据**********************************************************/
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
			case 'u':/*向user表插入数据*/
				{
				      memset(username,0,sizeof(username));
				      memset(password, 0, sizeof(password));
				      memset(nickname, 0, sizeof(nickname));
				      memset(telnum, 0, sizeof(telnum));
printf("in case'u'");
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
				      memcpy(username,buf+3,(int)buf[2]);
printf("username:%s\n",username);

printf("password_c:");
				      for(i=16;i<(int)buf[15]+16;i++){
						printf("%c",buf[i]);
				      }
printf("\n");
			              memcpy(password,buf+16,(int)buf[15]);
printf("password:%s\n",password);
			              if(buf[1]=='1'){//检查用户登录信息是否正确
					callback1_flag=0;
					sprintf(sql,"SELECT usrname,password FROM user WHERE usrname='%s' AND password='%s';",username,password);
					sqlite3_exec (db, sql, callback1, 0, &ErrMsg);
					memset(sql,'\0',sizeof(sql));	
					if(callback1_flag==1){
						new_usr_check_msg="login_success";
printf("login_success\n");
						legal_user_flag=1;
						if(send(temp_sock_descriptor, new_usr_check_msg, strlen(new_usr_check_msg), 0)==-1)
   						        {
								
        							perror("can not send message\n");
        							exit(1);
    							}
					}					
					if(callback1_flag==0){
						new_usr_check_msg="login_error";
printf("login_error\n");
						if(send(temp_sock_descriptor, new_usr_check_msg, strlen(new_usr_check_msg), 0)==-1)
   						        {
printf("send()\n");
        							perror("can not send message\n");
        							exit(1);
    							}
					}
				      }
				      if(buf[1]=='0'){//检验新注册用户是否重名
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
						sprintf(sql, "SELECT usrname FROM user WHERE usrname = '%s'", username);
						memset(s_callback1,0,sizeof(s_callback1));
						sqlite3_exec(db,sql,callback1,0,&ErrMsg);
   						if(strcmp(s_callback1,username)==0){
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
						 	new_usr_check_msg="usrname_repeat";
							if(send(temp_sock_descriptor, new_usr_check_msg, strlen(new_usr_check_msg), 0)==-1)
   						        {
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
        							perror("can not send message\n");
        							exit(1);
    							}
							else{
								printf("send success!\n");
							}

						}
						else{
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
							memcpy(nickname,buf+33,(int)buf[32]);
printf("nickname:%s\n",nickname);
							memcpy(telnum,buf+54,11);
printf("telnum:%s\n",telnum);
							sprintf(sql,"INSERT INTO user(ID_U,usrname,password,nickname,telnum) VALUES(NULL,'%s','%s','%s','%s');",username,password,nickname,telnum);
printf("sql:%s\n",sql);
							if(sqlite3_exec(db, sql, 0, 0, &ErrMsg)==0){
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
								user_num++;
								printf("usernum:%d\n",user_num);
								memset(sql,'\0',sizeof(sql));
							}					new_usr_check_msg="insert_newuser_success";//向user表插入新用户成功	
printf("new_usr_check_msg:%s\n",new_usr_check_msg);
printf("sock_descriptor:%d",sock_descriptor);
						 	if(send(temp_sock_descriptor, new_usr_check_msg, strlen(new_usr_check_msg), 0)<0)//==-1)
   						        {
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
        							perror("can not send message\n");
        							exit(1);
    							}
							else{
								printf("send success!\n");
							}
						    }
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
					memset(s_callback1,'\0',sizeof(s_callback1));
					memset(sql,'\0',sizeof(sql));
				      }
					memset(username,0,sizeof(username));
					memset(password, 0, sizeof(password));
					memset(nickname, 0, sizeof(nickname));
					memset(telnum, 0, sizeof(telnum));
					new_usr_check_msg="0";
					break;
				}
/**********************************************************向user表插入数据**********************************************************/

/**********************************************************向send表插入数据**********************************************************/
		       case 's':
		               {
printf("in case's'");
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
				    if(legal_user_flag==1){
printf("legal_user_flag:%d\n",legal_user_flag);
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
					status_sender=(int)buf[1];
printf("status_sender:%d\n",status_sender);
					status_recer=0;
					memset(sender,0,sizeof(sender));
					memcpy(sender,buf+3,(int)buf[2]);
printf("sender:%s\n(int)buf[2]:%d\n",sender,(int)buf[2]);
					memset(date_time,0,sizeof(date_time));
					memcpy(date_time,buf+16,(int)buf[15]);
printf("date_time:%s\n",date_time);
					memset(title,0,sizeof(title));
					memcpy(title,buf+43,(int)buf[42]);
printf("title:%s\n",title);
					memset(content,0,sizeof(content));
					memcpy(content,buf+124,(int)buf[123]);
printf("content:%s\n(int)buf[123]:%d\n",content,(int)buf[123]);
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
					sprintf(sql,"INSERT INTO send(ID_M,status_sender,sender,date_time,title,content) VALUES(NULL,%d,'%s','%s','%s','%s');",status_sender,sender,date_time,title,content);
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
					if(sqlite3_exec (db, sql, 0, 0, &ErrMsg)<0){
						perror("insert send error!\n");
						memset(sql,'\0',sizeof(sql));
					}
					else{
						printf("insert into send success\n");			
					}
					memset(sql,'\0',sizeof(sql));
					if(status_sender==2||status_sender==5||status_sender==8){//信件在发信人发件箱中时,可以向receive表中插入数据
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
printf("(int)buf[624]:%d\n",(int)buf[624]);
					     recer_st=625;
					     tmp_recer_st=625;
					     for(i=0;i<(int)buf[624];i++){
						    j=0;secret=0;
						    recer_st=tmp_recer_st;
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
						    memset(receiver,0,sizeof(receiver));
printf("k:%d\nbuf[k]:%c",recer_st,buf[recer_st]);
						     for(k=recer_st;buf[k]!=';';k++){
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
printf("k:%d\nbuf[k]:%c\n",k,buf[k]);
							if(buf[k]=='*'){
								secret=1;
printf("secret:%d\n",secret);				
							}
							else{
printf("secret:%d\n",secret);
							   	receiver[j]=buf[k];
						           	j++;	
							}
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
printf("tmp_recer_st:%d\n",tmp_recer_st);
							tmp_recer_st++;
						     }
						     tmp_recer_st++;
printf("tmp_recer_st:%d\n",tmp_recer_st);
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
printf("secret:%d\n",secret);
							status_recer=3;
printf("status_recer=%d\n",status_recer);
							sprintf(sql,"INSERT INTO receive(sender,receiver,date_time,status_recer,secret) VALUES('%s','%s','%s',%d,%d);",sender,receiver,date_time,status_recer,secret);
printf("sql:%s\n",sql);
printf("status_recer=%d\n",status_recer);
							sqlite3_exec(db,sql,0,0,&ErrMsg);
							memset(sql,'\0',sizeof(sql));
							sprintf(sql,"INSERT INTO contact(usrname,contactor) VALUES(%s,%s);",sender,receiver);
							sqlite3_exec(db,sql,0,0,&ErrMsg);
							memset(sql,'\0',sizeof(sql));
							memset(receiver, 0, sizeof(receiver));
				             }
					}
					char * rtn_msg="inset into send success";
					if(send(temp_sock_descriptor,rtn_msg, strlen(rtn_msg), 0)<0)
   						{
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
        						perror("can not send message\n");
        						exit(1);
    						}
						else{
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
							printf("send success!\n");
						}
					memset(sender,0,sizeof(sender));
					memset(date_time,0,sizeof(date_time));	
					memset(title, 0, sizeof(title));
					memset(content, 0, sizeof(content));
					memset(receiver, 0, sizeof(receiver));
				      }
				      break;
		                 }
/**********************************************************向send表插入数据**********************************************************/

/*****************************************收件箱标为已读、标为未读、删除已读、删除未读、彻底删除********************************************/
		      case 'r':
			       {
printf("in case'r'");
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
				     if(legal_user_flag==1){
					if(buf[1]=='9'){//彻底删除
						memcpy(tmp_sender,buf+2,(int)buf[2]);
					        memcpy(tmp_date_time,buf+15,(int)buf[15]);
						/*sqlite3_exec(db,"SELECT sender FROM receiver WHERE status_recer=4 OR status_recer=7;",callback1,0,&ErrMsg);
						memset(sql,'\0',sizeof(sql));
						strcpy(tmp_sender,s_callback1);
						memset(s_callback1,'\0',sizeof(s_callback1));

						sqlite3_exec(db,"SELECT date_time FROM receiver WHERE status_recer=4 OR status_recer=7;",callback1,0,&ErrMsg);
						memset(sql,'\0',sizeof(sql));
						strcpy(tmp_date_time,s_callback1);
						memset(s_callback1,'\0',sizeof(s_callback1));*/
						sprintf(sql,"DELETE FROM receive WHERE sender='%s' AND date_time='%s' AND status_recer=4 OR status_recer=7;",tmp_sender,tmp_date_time);
						sqlite3_exec(db,sql,0,0,&ErrMsg);
						memset(sql,'\0',sizeof(sql));
						sprintf(sql,"DELETE FROM send WHERE sender='%s' AND date_time='%s';",tmp_sender,tmp_date_time);
						sqlite3_exec(db,sql,0,0,&ErrMsg);
						memset(sql,'\0',sizeof(sql));
					}
					memcpy(sender,buf+3,(int)buf[2]);
					memcpy(date_time,buf+16,(int)buf[15]);
					sprintf(sql,"UPDATE receive SET status_receiver='%d' WHERE sender='%s' AND date_time='%s';",(int)buf[1],sender,date_time);
					sqlite3_exec(db,sql,0,0,&ErrMsg);
					memset(sql,'\0',sizeof(sql));
					memset(sender,0,sizeof(sender));
					status_recer=0;
				      }
					break;
			       }
/*****************************************收件箱标为已读、标为未读、删除已读、删除未读、彻底删除********************************************/

/*****************************************************向contact表中插入新数据********************************************************/
	     	      case 'c':/*向contact表中插入新数据*/
			       {
printf("in case'c'");
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
				     memcpy(usrname,buf+2,buf[2]);
				     memcpy(contactor,buf+15,buf[15]);
				     if(buf[1]=='1'){
 					sprintf(sql,"INSERT INTO contact(usrname,contactor) VALUES('%s','%s');",usrname,contactor);
					sqlite3_exec(db,sql,0,0,&ErrMsg);
					memset(sql,'\0',sizeof(sql));
			             }
				     if(buf[1]=='2'){
				        sprintf(sql,"UPDATE contact SET usrname='%s',contactor='%s';",usrname,contactor);
					sqlite3_exec(db,sql,0,0,&ErrMsg);
					memset(sql,'\0',sizeof(sql));
				     }
				     if(buf[1]=='3'){
					sprintf(sql,"DELETE FROM contact WHERE usrname='%s',contactor='%s';",usrname,contactor);
				     }
				     memset(usrname,0,sizeof(usrname));
				     memset(usrname,0,sizeof(usrname));
				     break;
			       }
/*****************************************************向contact表中插入新数据****************************************************/		
   
		      case '2':
				{
printf("in case'2'\n");
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
printf("buf[1]:%c\n",buf[1]);
printf("buf:%s\n",buf);
				     if(buf[1]=='0'){//向客户端发"草稿箱"内容
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
					memset(sender,0,sizeof(sender));//客户端传sender字段给服务器
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
				        memcpy(sender,buf+3,(int)buf[2]);
					memset(sql,'\0',sizeof(sql));
					sprintf(sql,"SELECT r.receiver,s.title,s.date_time FROM send s,receive r WHERE s.sender='%s' AND s.sender=r.sender AND s.date_time=r.date_time AND status_recer=1;",sender);
					memset(s_callback2,' ',sizeof(s_callback2));
					sqlite3_exec(db,sql,callback2,0,&ErrMsg);
					line_num=record_num/col_num;
					line_num_buf[0]=(char)line_num;
					if(send(temp_sock_descriptor, line_num_buf, strlen(line_num_buf), 0)<0)
   					{
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
        					perror("can not send message\n");
        					exit(1);
    					}
					else{
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
						printf("send success!\n");
					}
					char to_client[501];
					memset(to_client,' ',sizeof(to_client));
					for(i=0;i<record_num;i++){
						memset(to_client,' ',sizeof(to_client));
						to_client[0]=(char)strlen(s_callback2[i]);
						strcat(to_client,s_callback2[i]);
						if(send(temp_sock_descriptor,to_client,strlen(to_client),0)<0)  
        					{  
            						perror("write");  
            						return 1;  
        					}
						else{
							printf("send s_callback2[%d] success\n",i);
						}
					}							
					record_num=0;					     
				     }

   				     if(buf[1]=='1'){//向客户端发送"已发送"内容
						memset(sender,0,sizeof(sender));
						memcpy(sender,buf+3,(int)buf[2]);
						memset(sql,0,sizeof(sql));
						memset(s_callback2,0,sizeof(s_callback2));
						sprintf(sql,"SELECT title,date_time FROM send WHERE sender='%s'AND status_sender=2 OR status_sender=5 OR status_sender=8;",sender);
						col_num=2;
						sqlite3_exec(db,sql,callback2,0,&ErrMsg);
						line_num=record_num/col_num;
						line_num_buf[0]=(char)line_num;
printf("line_num_buf[0]:%d\n",(int)line_num_buf[0]);
						if(send(temp_sock_descriptor, line_num_buf, strlen(line_num_buf), 0)<0)
   						{
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
        						perror("can not send message\n");
        						exit(1);
    						}
						else{
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
							printf("send success!\n");
						}
						for(i=0;i<record_num;i++){
							if(send(temp_sock_descriptor,s_callback2[i],strlen(s_callback2[i]),0)<0)  
        						{  
            							perror("write");  
            							return 1;  
        						}
							else{
								printf("send s_callback2[%d] success\n",i);
							}
						}
						record_num=0;
					}
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
printf("strlen(buf):%d\n",strlen(buf));
					if(buf[1]=='2'){//向客户端发送一封邮件的具体内容
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
						memset(sender,0,sizeof(sender));
						memcpy(sender,buf+3,(int)buf[2]);
printf("sender:%s\n",sender);
printf("strlen(buf):%d\n",strlen(buf));
						memset(date_time,0,sizeof(date_time));
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
printf("strlen(buf):%d\n",strlen(buf));
						memcpy(date_time,buf+15,(int)buf[14]);
printf("strlen(buf):%d\n",strlen(buf));
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
printf("date_time:%s\n",date_time);
						memset(receiver,0,sizeof(receiver));
						memcpy(receiver,buf+42,(int)buf[41]);
printf("receiver:%s\n",receiver);
						memset(sql,0,sizeof(sql));
						memset(s_callback2,0,sizeof(s_callback2));
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
						sprintf(sql,"SELECT content FROM send WHERE date_time='%s' AND sender IN (SELECT sender FROM receive WHERE sender='%s' AND date_time='%s' AND receiver='%s');",date_time,sender,date_time,receiver);
printf("sql:%s\n",sql);
						col_num=1;
						sqlite3_exec(db,sql,callback2,0,&ErrMsg);
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
printf("s_callback2[0]:%s\n",s_callback2[0]);
						//char to_client[501];
						//memset(to_client,0,sizeof(to_client));
						//to_client[0]=(char)strlen(s_callback2[0]);
						//strcat(to_client,s_callback2[0]);
						if(send(temp_sock_descriptor,s_callback2[0],strlen(s_callback2[0]),0)<0)  
        					{  
            						perror("write");  
            						return 1;  
        					}
						else{
							printf("send s_callback2[0] success\n");
						}
						record_num=0;				
					}
					if(buf[1]=='3'){//向客户端发送一封草稿的内容,若有收信人写在content内
						memset(sender,0,sizeof(sender));
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
						memcpy(sender,buf+3,(int)buf[2]);
printf("sender:%s\n",sender);
						memset(date_time,0,sizeof(date_time));
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
						memcpy(date_time,buf+15,(int)buf[14]);
printf("date_time:%s\n",date_time);
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
						memset(sql,0,sizeof(sql));
						memset(s_callback2,0,sizeof(s_callback2));
						sprintf(sql,"SELECT content FROM send WHERE sender='%s' AND date_time='%s' AND status_sender=1;",sender,date_time);
printf("sql:%s\n",sql);
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
						col_num=1;
						sqlite3_exec(db,sql,callback2,0,&ErrMsg);
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
printf("s_callback2[0]:%s\n",s_callback2[0]);
						if(send(temp_sock_descriptor,s_callback2[0],strlen(s_callback2[0]),0)<0)  
        					{  
            						perror("write");  
            						return 1;  
        					}
						else{
							printf("send s_callback2[0] success\n");
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
						}
						record_num=0;	
					}	
					break;
				}
				case '3':
				{
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
					if(buf[1]=='0'){//向客户端发收信箱内容
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
						memset(receiver,0,sizeof(receiver));
						memcpy(receiver,buf+3,(int)buf[2]);
						memset(sql,0,sizeof(sql));
						memset(s_callback2,0,sizeof(s_callback2));
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);						
						sprintf(sql,"SELECT r.sender,s.title,s.date_time FROM send s,receive r WHERE s.sender=r.sender AND s.date_time=r.date_time AND receiver='%d' AND status_recer=3;",receiver);
printf("sql:%s\n");
						sqlite3_exec(db,sql,callback2,0,&ErrMsg);
						line_num=record_num/col_num;
						line_num_buf[0]=(char)line_num;
						if(send(temp_sock_descriptor, line_num_buf, strlen(line_num_buf), 0)<0)	
   						{
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
        						perror("can not send message\n");
        						exit(1);
    						}
						else{
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
							printf("send success!\n");
						}
						for(i=0;i<record_num;i++){
							if(send(temp_sock_descriptor,s_callback2[i],strlen(s_callback2[i]),0)<0)  
        						{  
            							perror("write");  
            							return 1;  
        						}
							else{
								printf("send s_callback2[%d] success\n",i);
							}
						}
						record_num=0;
					}
					if(buf[1]=='1'){//向客户端发收件箱内容
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
						memset(receiver,0,sizeof(receiver));
						memcpy(receiver,buf+3,(int)buf[2]);
printf("receiver:%s\n",receiver);
						memset(sql,0,sizeof(sql));
						memset(s_callback2,0,sizeof(s_callback2));						
						sprintf(sql,"SELECT s.sender,s.title,s.date_time FROM send s,receive r WHERE s.sender=r.sender AND s.date_time=r.date_time AND receiver='%s' AND status_recer=3 OR status_recer=6;",receiver);
printf("sql:%s\n",sql);
						sqlite3_exec(db,sql,callback2,0,&ErrMsg);
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
printf("record_num:%d\n",record_num);
						line_num=record_num/3;
printf("line_num:%d\n",line_num);
						memset(line_num_buf,' ',sizeof(line_num_buf));
						line_num_buf[0]=(char)line_num;
printf("(int)line_num_buf[0]:\n",(int)line_num_buf[0]);
						if(send(temp_sock_descriptor, line_num_buf, strlen(line_num_buf), 0)<0)
   						{
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
        						perror("can not send message\n");
        						exit(1);
    						}
						else{
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
							printf("send success!\n");
						}
						char to_client[501];
						for(i=0;i<record_num;i++){
							memset(to_client,0,sizeof(to_client));
							to_client[0]=(char)strlen(s_callback2[0]);
							strcat(to_client,s_callback2[i]);
printf("to_client:%s\n",to_client);
							if(send(temp_sock_descriptor,to_client,strlen(to_client),0)<0)  
        						{  
            							perror("write");  
            							return 1;  
        						}
							else{
								printf("send s_callback2[%d] success\n",i);
							}
						}
						record_num=0;
					}
					if(buf[1]=='2'){//向客户端发已删除箱内容
						memset(receiver,0,sizeof(receiver));
						memcpy(receiver,buf+3,(int)buf[2]);
						memset(sql,0,sizeof(sql));
						memset(s_callback2,0,sizeof(s_callback2));						
						sprintf(sql,"SELECT s.sender,s.title,s.date_time FROM send s,receive r WHERE s.sender=r.sender AND s.date_time=r.date_time AND receiver='%d' AND status_recer=4 OR status_recer=7;",receiver);
						sqlite3_exec(db,sql,callback2,0,&ErrMsg);
						line_num=record_num/col_num;
						line_num_buf[0]=(char)line_num;
						if(send(temp_sock_descriptor, line_num_buf, strlen(line_num_buf), 0)<0)
   						{
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
        						perror("can not send message\n");
        						exit(1);
    						}
						else{
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
							printf("send success!\n");
						}
						for(i=0;i<record_num;i++){
							if(send(temp_sock_descriptor,s_callback2[i],strlen(s_callback2[i]),0)<0)  
        						{  
            							perror("write");  
            							return 1;  
        						}
							else{
								printf("send s_callback2[%d] success\n",i);
							}
						}
						record_num=0;
					}
					break;			
				}
			case '4':
				{
					if(buf[1]=='0'){
						memset(usrname,0,sizeof(usrname));
						memcpy(usrname,buf[3],(int)buf[2]);
						memset(sql,0,sizeof(sql));
						memset(s_callback2,0,sizeof(s_callback2));
						sprintf(sql,"SELECT contactor FROM contact WHERE uarname='%s';",usrname);
						sqlite3_exec(db,sql,callback2,0,&ErrMsg);
						line_num=record_num/col_num;
						line_num_buf[0]=(char)line_num;
						if(send(temp_sock_descriptor, line_num_buf, strlen(line_num_buf), 0)<0)
   						{
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
        						perror("can not send message\n");
        						exit(1);
    						}
						else{
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
							printf("send success!\n");
						}
						for(i=0;i<record_num;i++){
							if(send(temp_sock_descriptor,s_callback2[i],strlen(s_callback2[i]),0)<0)  
        						{  
            							perror("write");  
            							return 1;  
        						}
							else{
								printf("send s_callback2[%d] success\n",i);
							}
						}
						record_num=0;
					}
					break;
				}
		}
	}
	memset(buf,' ', sizeof(buf));
/*      length = strlen(buf);

        for(i  = 0 ; i < length; i++)
        {
            buf[i] = toupper(buf[i]);`
        }
        if(send(temp_sock_descriptor, buf, length, 0) == -1)
        {
            perror("send()!");
            exit(1);
        }
*/
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
 }
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
        close(temp_sock_descriptor);
}

int callback1(void* p ,int nCount,char** pValue,char** pName)
{
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
    int i = 0;
	callback1_flag=1;
    for(i=0;i<nCount;i++)
    {
	strcat(s_callback1, pValue[i]);
    }
    printf("s_callback1:%s\n", s_callback1);
printf("[%s, %s, %d]\n", __FILE__, __FUNCTION__, __LINE__);
    return 0;
}
static int callback2(void *NotUsed, int argc, char **argv, char **azColName) 
{ 
     int i=0,k=0; 
     record_num=argc;
     for(i=0; i<argc; i++){
		printf("s_callback2[%d]:%s\n",i,s_callback2[i]);
        	strcpy(s_callback2[i],argv[i] ? argv[i] : "NULL");
     } 
     printf("\n");
     return 0; 
}

makefile

CC=gcc
INCLUDIR = ./include

all:
#	gcc register.c -o register `pkg-config --cflags --libs gtk+-2.0`
	gcc ./src/*.c -o login -I./include `pkg-config --cflags --libs gtk+-2.0` -lsqlite3
#	gcc main.c -o main `pkg-config --cflags --libs gtk+-2.0`
#	gcc new.c -o new `pkg-config --cflags --libs gtk+-2.0` 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值