当前位置:  技术问答>linux和unix

急急急,请教如何不断创建,销毁窗口,有源码!

    来源: 互联网  发布时间:2015-10-19

    本文导语:  我使用GTK+2.0开发,想实现如下功能,在主程序中输入"s"键创建一个窗口,"p"键把这个窗口销毁。 但我发现在运行过程中第一次输入"s"和"p"键时正常,第二次输入"s"键时,调试输出为 GLib-WARNING **: g_main_context_prepare():...

我使用GTK+2.0开发,想实现如下功能,在主程序中输入"s"键创建一个窗口,"p"键把这个窗口销毁。
但我发现在运行过程中第一次输入"s"和"p"键时正常,第二次输入"s"键时,调试输出为
GLib-WARNING **: g_main_context_prepare(): main loop already active in another thread,然后就不正常了。麻烦各位大虾看看是何原因,有何方法解决,万分感谢!
我的代码如下:
#include 
#include 

pthread_t g_TaskId = -1;
GtkWidget *g_window = NULL;

static void *work_task(void *param)
{

if(NULL==g_window)
{
g_window = gtk_window_new (GTK_WINDOW_POPUP);
gtk_window_set_default_size(GTK_WINDOW(g_window), 250, 240);
gtk_widget_show (g_window);
gtk_main ();
}
}

void show_silence()
{
int err;
err = pthread_create(&g_TaskId, NULL, work_task, NULL);

}
void stop_silence()
{
gtk_widget_destroy(g_window);
gdk_flush();
gtk_main_quit();
}

int main( int argc, char *argv[] )
{
    gtk_init (&argc, &argv);
    int quit = 0;
    while (!quit)
    {        
        int  c;
        c = getchar();
        switch (c)
        {
        case 'q':
        case 'Q':
            quit = 1;
            break;
        case 's':
        case 'S':
            show_silence();
            break;
        case 'p':
        case 'P':
            stop_silence();
            break;
        default:
            break;
        }        
    }
    gtk_main_quit();
    return 0; 
}


|
gtk建议在gtk中使用pthread的时候使用锁进行同步


欢迎访问我的个人网站 www.linuxc.net

|
专业顶贴 兼职接分

    
 
 

您可能感兴趣的文章:

  • Linux Device Driver 源码请教
  • 请教有关socket的问题,并求telnetd的c源码
  • 请教:怎么找df明令的源码?
  • 请教:如何阅读linux下的源码
  • 请教一个完整的linux下通过串口传输各种文件的源码,多谢!
  • 请教如何从一个源码包中做一个rpm文件出来
  • 请教,关于LINUX的源码
  • 请教一个用源码装软件的菜鸟小问题。
  • 请教,刚下载了一个U_boot 1.2.0源码,能直接编译?
  • 请教各位高手,有人成功地交叉编译ubuntu9.04源码?
  • 请教在openSUSE Linux11.0下如何源码安装glade3.6.7和gtk+2.0?
  • 请教:FC5源码光盘怎么看?(200分)
  • 请教下更改内核源码后怎么使他生效。
  • 请教内核代码,有关stdarg.h,有源码参考!
  • 请教:源码安装glibc
  • linux新手,请教各位大人串口通讯问题(发送十六进制正常,接受数据错误)附源码
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请教,请教,这个问题是为什么????
  • 请教本地硬盘安装问题请教本地硬盘安装问题
  • ■请教■请教redhat最基本的问题!
  • 请教一个 shell 问题,我用下面这个 shell 语句总是失败,请教
  • 高分请教,各位大侠,请教一个问题,理论高手请进??谢谢
  • 请教Linux下pgadmin3-1.0.2的编译和安装!!高分请教!
  • 各位大虾,请教装了REDHAT9操作系统后,启动时无法引导到LINUX,请教该如何解决啊
  • 请教,请教,,,一定要看!!一定要看!!
  • 请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • :请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • 请教象我这样的硬盘应如何安装Linux,我昨天试装了,但有问题。(老问题了,也看了前面的帖子,但还是来请教,请多指教)
  • 请教这种循环的执行过程
  • 请教两个redhat9问题
  • 请教如何在指定目录下查找包含指定文字的文件
  • 请教局域网中如何通过ip地址得到主机名
  • 请教kdevelop的问题
  • 请教linux 下的adsl拨号问题.
  • 请教,如何用虚拟订机安装liux
  • 【请教】LINUX 下SNMP的MIB开发
  • 请教一个opengl的问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3