实例介绍
【实例截图】
【核心代码】
//thread.c
#include <gtk/gtk.h>
static GtkWidget *label;
static GtkWidget *fixed;
static GtkWidget *label1;
static GtkWidget *label2;
static gchar *title[10]={"yumo","istruely","averyvery","handsome","bigboy","","","","",""};
static gchar *num[10]={"10","9","8","7","6","5","4","3","2","1",""};
GtkWidget *entry1;
gint count=0;
gint m=0;
gint n=0;
static gint sign;
//////////线程实现
int image_go1(GtkWidget *label)
{
gint x,y;
x = -30;
y = 50;
g_usleep(1500000);
for(;;)
{
if(x==400)
break;
g_usleep(15000);
gdk_threads_enter();
gtk_fixed_move(GTK_FIXED(fixed),label, x, y);
x = x 1;
gdk_threads_leave();
}
return 0;
}
int image_go2(GtkWidget *label)
{
gint x,y;
x = -30;
y = 20;
for(;;)
{
if(x==400)
break;
g_usleep(15000);
gdk_threads_enter();
gtk_fixed_move(GTK_FIXED(fixed),label, x, y);
x = x 1;
gdk_threads_leave();
}
return 0;
}
//////////倒数计时
gint backcount()
{
gtk_label_set_text(GTK_LABEL(label),num[n]);
n ;
if(n>10)
return 0;
}
//////////button按钮效果
int on_begin(GtkWidget* button,gpointer data)
{
//gtk_window_set_focus(GTK_WINDOW(window),entry1);
gtk_widget_set_sensitive(button,FALSE);
sign=g_timeout_add(1000,backcount,NULL);
g_thread_create(image_go1, label1, FALSE, NULL);
g_thread_create(image_go2, label2, FALSE, NULL);
return 0;
}
//////////计算正确单词
void countnum(GtkWidget *button,gpointer data)
{
//gint backcount();
const char *password=gtk_entry_get_text(GTK_ENTRY((GtkWidget *)data));
if(strcmp(title[m],password)==0)
{
count;
printf("还好 第%d个单词输对了\n",(m 1));
}
else
printf("2货 第%d个单词输错了\n",(m 1));
gtk_entry_set_text(GTK_ENTRY(entry1),"");
m ;
}
int main(int argc, char* argv[])
{
GtkWidget *window;
GtkWidget *vbox, *viewport, *button;
if(!g_thread_supported())
g_thread_init(NULL);
gdk_threads_init();
gtk_init(&argc,&argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
//gtk_window_set_focus(GTK_WINDOW(window),entry1);
gtk_window_set_title(GTK_WINDOW(window),"Ywriter");
g_signal_connect(G_OBJECT(window),"delete_event",G_CALLBACK(gtk_main_quit),NULL);
gtk_container_set_border_width(GTK_CONTAINER(window),2);
vbox = gtk_vbox_new(FALSE,0);
gtk_container_add(GTK_CONTAINER(window),vbox);
viewport = gtk_viewport_new(NULL,NULL);
gtk_box_pack_start(GTK_BOX(vbox),viewport,FALSE,FALSE,5);
fixed = gtk_fixed_new();
gtk_widget_set_usize(fixed,550,340);
gtk_container_add(GTK_CONTAINER(viewport),fixed);
entry1=gtk_entry_new();
gtk_fixed_put(GTK_FIXED(fixed),entry1,200,250);
//gtk_window_set_focus(GTK_WINDOW(window),entry1);
button = gtk_button_new_with_label("start");
gtk_box_pack_start(GTK_BOX(vbox),button,FALSE,FALSE,5);
g_signal_connect(G_OBJECT(button),"released",G_CALLBACK(on_begin),NULL);
//gtk_window_set_focus(GTK_WINDOW(window),entry1);
///////////////
////////////////////////////////////////////////////
label1=gtk_label_new(title[0]);
label2=gtk_label_new(title[1]);
gtk_fixed_put(GTK_FIXED(fixed),label1,-80,50);
gtk_fixed_put(GTK_FIXED(fixed),label2,-80,20);
label=gtk_label_new("");
gtk_fixed_put(GTK_FIXED(fixed),label,200,190);
////////////////////////////////////////////////////
g_signal_connect(GTK_OBJECT(entry1),"activate",GTK_SIGNAL_FUNC(countnum),entry1);
gtk_widget_show_all(window);
gdk_threads_enter();
gtk_main();
gdk_threads_leave();
return FALSE;
}
标签: linux
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明


网友评论
我要评论