TA的每日心情 | 开心 2014-11-19 20:59 |
---|
签到天数: 2 天 连续签到: 2 天 [LV.1]初来乍到
|
本人是一个学生,刚接触GTK,用的有点摸瞎。
先看一下程序吧,这只是一个简单的测试程序。我在网上看到可以用结构体来返回多个参数,但是试了半天,还是不对,各位前辈能不能帮帮忙看看。
我的目的是让按钮向两个label1和label2中显示数据;顺便提一下我用的是gtk+3.0;不知道他和2.0有没有差别。
希望各位前辈帮帮小弟。谢谢!!!!
#include <stdio.h>
#include <math.h>
#include <gtk/gtk.h>
#include <windows.h>
#include <string.h>
#include <stdlib.h>
gint i=0;/*外部变量声明区*/
gint j=0;
char buf[52];
char cpu[5];
char name2[1];
char name1;
struct label
{
GtkWidget *label1;
GtkWidget *label2;
};
void create_name()/*随机产生进程,并将名字显示*/
{
char name,the_max,the_min;
srand(i);
the_min='A';
the_max='z';
name=the_min+rand()%(the_max-the_min);
sprintf(name2,"%c",name);
strcat(buf,name2);
i++;
}
void decrease(GtkWidget *widget,gpointer data)
{
struct label *label0=(struct label*)data;
GtkWidget *label1=label0->label1;
GtkWidget *label2=label0->label2;
/*label1=label0->label1;
label2=label0->label2;*/
create_name();
j++;
sprintf(cpu,"%d",j);
gtk_label_set_text(GTK_LABEL(label1),cpu);
gtk_label_set_text(GTK_LABEL(label2),buf);
}
int main(int argc,char **argv)
{
GtkWidget *window;
GtkWidget *frame;
GtkWidget *minus;
static struct label *label0;
gtk_init(&argc,&argv);
window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
gtk_window_set_default_size(GTK_WINDOW(window),250,180);
gtk_window_set_title(GTK_WINDOW(window),"-");
frame=gtk_fixed_new();
gtk_container_add(GTK_CONTAINER(window),frame);
minus=gtk_button_new_with_label("-");
gtk_widget_set_size_request(minus,80,35);
gtk_fixed_put(GTK_FIXED(frame),minus,50,80);
label0->label1=gtk_label_new("0");
gtk_fixed_put(GTK_FIXED(frame),label0->label1,190,35);
label0->label2=gtk_label_new("0");
gtk_fixed_put(GTK_FIXED(frame),label0->label2,190,95);
gtk_widget_show_all(window);
g_signal_connect(window,"destroy",
G_CALLBACK(gtk_main_quit),NULL);
g_signal_connect(minus,"changed",G_CALLBACK(decrease),&label0);
gtk_main();
return 0;
}
|
|