当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 6 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 关于“GTK+2.0走马灯”程序的疑惑
帖子发表于 : 2008-08-12 20:56 

注册: 2008-08-11 10:44
帖子: 56
送出感谢: 0 次
接收感谢: 0 次
小弟曾天真的以为“走马灯程序可以这样写:

#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才动一下! 这是为什么呢? 如何解决?


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2008-08-12 20:57 

注册: 2008-08-11 10:44
帖子: 56
送出感谢: 0 次
接收感谢: 0 次
顶一个


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2008-08-12 21:03 
头像

注册: 2006-07-02 11:16
帖子: 12522
地址: 廣州
送出感谢: 0 次
接收感谢: 8
移动了label后要重画吧


_________________
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2008-08-13 8:45 

注册: 2008-08-11 10:44
帖子: 56
送出感谢: 0 次
接收感谢: 0 次
BigSnake.NET 写道:
移动了label后要重画吧



如何重画阿? 我刚刚接触gtk+


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2008-08-13 10:34 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
系统有定时器的。类似这样的。
Glib::signal_timeout().connect(sigc::mem_fun(*this, &MainWnd::on_timeout), timeout*1000);


usleep(50000);

看devhelp吧。或者找例子。


_________________
● 鸣学


页首
 用户资料  
 
6 楼 
 文章标题 : 学习GTK有什么网站好一些啊?
帖子发表于 : 2008-08-13 10:46 

注册: 2008-08-11 10:44
帖子: 56
送出感谢: 0 次
接收感谢: 0 次
如题!


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 6 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 3 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译