关于“GTK+2.0走马灯”程序的疑惑

内核编译和嵌入式产品的设计与开发
回复
chenlb206
帖子: 56
注册时间: 2008-08-11 10:44

关于“GTK+2.0走马灯”程序的疑惑

#1

帖子 chenlb206 » 2008-08-12 20:56

小弟曾天真的以为“走马灯程序可以这样写:

#include <gtk/gtk.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <pthread.h>

gint x = 1000;
gint y = 800;

GtkWidget *label;
GtkWidget *fixed;


void *move_button( void *arg)
{
while(1)
{
if (x <= 0)
x=1000;
x=x -10 ;
gtk_fixed_move (GTK_FIXED (fixed), label, x, y);
usleep(50000);
}
}

int main( int argc, char *argv[] )
{

GtkWidget *window;
int res;
pthread_t a_thread;
gtk_init (&argc, &argv);

window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (window), "Fixed Container");
gtk_window_set_default_size(GTK_WINDOW (window), 1000, 800);

g_signal_connect (G_OBJECT (window), "destroy",G_CALLBACK (gtk_main_quit), NULL);

gtk_container_set_border_width (GTK_CONTAINER (window), 10);
fixed = gtk_fixed_new ();
gtk_container_add (GTK_CONTAINER (window), fixed);
gtk_widget_show (fixed);

label = gtk_label_new("I like DMB");

gtk_fixed_put (GTK_FIXED (fixed), label, 1000, 800);

gtk_widget_show (label);
gtk_widget_show (window);


res = pthread_create(&a_thread,NULL,move_button,NULL);
if (res != 0)
{
perror("Thread creation failed");
exit(EXIT_FAILURE);
}

gtk_main ();

return 0;
}


可结果是label 不会随时间均匀的在gtk的窗口上显示走动!当鼠标点击gtk窗口时label才动一下! 这是为什么呢? 如何解决?
chenlb206
帖子: 56
注册时间: 2008-08-11 10:44

#2

帖子 chenlb206 » 2008-08-12 20:57

顶一个
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

#3

帖子 BigSnake.NET » 2008-08-12 21:03

移动了label后要重画吧
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
chenlb206
帖子: 56
注册时间: 2008-08-11 10:44

#4

帖子 chenlb206 » 2008-08-13 8:45

BigSnake.NET 写了:移动了label后要重画吧

如何重画阿? 我刚刚接触gtk+
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#5

帖子 eexpress » 2008-08-13 10:34

系统有定时器的。类似这样的。
Glib::signal_timeout().connect(sigc::mem_fun(*this, &MainWnd::on_timeout), timeout*1000);


usleep(50000);

看devhelp吧。或者找例子。
● 鸣学
chenlb206
帖子: 56
注册时间: 2008-08-11 10:44

学习GTK有什么网站好一些啊?

#6

帖子 chenlb206 » 2008-08-13 10:46

如题!
回复