⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 omati.c

📁 想学linux中的motif编程
💻 C
📖 第 1 页 / 共 2 页
字号:
                    *p = '\0';                }                                       /* コメント乖を猴近           */                if ((p = strchr(buff, '#')) != NULL) {                    *p = '\0';                }                                       /* 矢机误がない眷圭は肌の乖を */                                       /* 粕み哈む                   */                if (strlen(buff) < 1) {                    continue;                }                                       /* ファイルが赂哼する眷圭     */                if (access(buff, F_OK) == 0) {                                       /* ファイル叹を瘦赂           */                    strcpy(mapfname[maplength], buff);                    maplength ++;                } else  {                    sprintf(work, "load_pixmap():%s in %s",                                                      fname, buff);                    perror(work);                }            }            fclose(fp_r);              /* ファイルクロ〖ズ           */        } else  {            sprintf(work, "load_pixmap():%s", fname);            perror(work);        }                                       /* pixmapファイルを艰评 */        if (maplength > 0) {           /* している眷圭               */                                       /* ファイル眶尸のエリア澄瘦   */            mapdata = (struct _bm_tbl*)                          XtMalloc(sizeof(struct _bm_tbl) * maplength);                                       /* ファイル眶尸帆り手し       */            for(idx = 0;idx < maplength;idx++) {#if DEBUG                printf("pixmap 年盗ファイル叹[%d]:%s\n",                                            idx, mapfname[idx]);#endif                                       /* pixmapデ〖タ艰评     */                sts = SUB_getpixmap(parent, mapfname[idx],                                          NULL, NULL,                                          &mapdata[idx].pixmap);                                       /* デ〖タを艰评できた眷圭     */                if (sts == NORMAL &&                        mapdata[idx].pixmap != XmUNSPECIFIED_PIXMAP) {                                       /* IDとファイル叹を肋年     */                    mapdata[idx].id = idx + 1;                    strcpy(mapdata[idx].name, mapfname[idx]);                } else  {              /* デ〖タを艰评できない眷圭   */#if DEBUG                    printf("pixmap 稍赖\n");#endif                    mapdata[idx].id = INITIAL;                    mapdata[idx].name[0] = 0;                }            }        }    }    return(sts);}int load_font(widget, font_info)Widget  widget;XFontStruct  **font_info;{    int  sts = ABNORMAL;    char  *fontname = "9x15";/*-------------------------------------------------------------------*/#if 0                                       /* フォント叹艰评             */    XtVaGetValues(widget, XmNfontList, &fontname, NULL);    if (fontname != NULL) {        printf("fontname=%s\n", fontname);                                       /* フォント菇陇挛艰评         */        *font_info = XLoadQueryFont(XtDisplay(widget), fontname);        if (*font_info != NULL) {            sts = NORMAL;        }        XtFree(fontname);        fontname = NULL;    }#else    sts = NORMAL;#endif    return(sts);}int create_msgpixmap(widget, msg)Widget  widget;char    *msg;{    int  sts = NORMAL;    int  font_height;    int  width, height;    Pixel  foreground, background;/*-------------------------------------------------------------------*/    label_tbl.dpy = XtDisplay(widget);    label_tbl.screen = XtScreen(widget);    label_tbl.win = XtWindow(widget);    label_tbl.gc = XCreateGC(label_tbl.dpy,                             RootWindowOfScreen(label_tbl.screen),                             0, NULL);    label_tbl.str = (char*)XtMalloc(strlen(message) + 1);    strcpy(label_tbl.str, message);    label_tbl.width = (strlen(message) * FONTSIZE) * 2;    label_tbl.height = (FONTSIZE * 2);    label_tbl.pixmap = XCreatePixmap(label_tbl.dpy,                               RootWindowOfScreen(label_tbl.screen),                               label_tbl.width, label_tbl.height,                                DefaultDepthOfScreen(label_tbl.screen));    XSetForeground(display, label_tbl.gc,                            WhitePixelOfScreen(label_tbl.screen));    XFillRectangle(display, label_tbl.pixmap, label_tbl.gc, 0, 0,                                 label_tbl.width, label_tbl.height);    XSetForeground(display, label_tbl.gc,                            BlackPixelOfScreen(label_tbl.screen));    XDrawString(display, label_tbl.pixmap, label_tbl.gc, 25, 25,                                label_tbl.str, strlen(label_tbl.str));}void interval_func(client, id)caddr_t       client;XtIntervalId  id;{    char  *buff = NULL;    XmString  mstr;    unsigned int  width, height;/*-------------------------------------------------------------------*/#if 1                                       /* 山绩脱メッセ〖ジ矢机误艰评 */    if (SUB_strget(message, offset, MIN_MSGLENGTH, &buff) == NORMAL) {#if DEBUG        printf("[%d]buff=[%s]\n", offset, buff);#endif                                       /* 矢机误をラベルに肋年       */        mstr = XmStringCreateLtoR(buff,                              XmSTRING_DEFAULT_CHARSET);/*        mstr = XmStringCreateSimple(buff);*/        XtVaSetValues(label1, XmNlabelString, mstr, NULL);        XmStringFree(mstr);                                       /* 染逞、链逞矢机によりオフセ */        if (buff[0] >= 0) {            /* ットを构糠                 */            offset+=1;        } else  {            offset+=2;        }        XtFree(buff);                  /* 山绩矢机误脱エリア豺庶     */        buff = NULL;    }    if (offset >= strlen(message)) {        offset = 0;    }#else    XtVaGetValues(label1, XmNwidth, &width,                          XmNheight, &height, NULL);/*    XCopyArea(label_tbl.dpy, label_tbl.pixmap, label_tbl.win,                             label_tbl.gc, 0, 0, width, height, 0, 0);*/    XtVaSetValues(label1, XmNlabelPixmap, label_tbl.pixmap, NULL);#endif    current++;    if (current >= maplength) {        current = 0;    }    if (mapdata != NULL && mapdata[current].id > 0) {        XtVaSetValues(label0, XmNlabelPixmap, mapdata[current].pixmap,                              NULL);    }    XFillRectangle(display, draw_pixmap, gc, x, y, 3, 3);    x += 10;    if (x > WIDTH) {        x = START_X;        y += 10;        if (y > HEIGHT) {            y = START_Y;            XSetForeground(display, gc, WhitePixelOfScreen(screen));            XFillRectangle(display, draw_pixmap, gc,                                   0, 0, WIDTH, HEIGHT);            XSetForeground(display, gc, BlackPixelOfScreen(screen));        }    }    XCopyArea(display, draw_pixmap, XtWindow(drawing_a), gc,                       0, 0, WIDTH, HEIGHT, 0, 0);    XtPopup(topshell,XtGrabNone);      /* ウィンドウを涟烫に山绩     */                                       /* タイマ肋年                 */    interval_id = XtAppAddTimeOut(appcon, interval,                                          interval_func, NULL);}void quit(w, client, cbs)Widget  w;caddr_t  client;XmAnyCallbackStruct  *cbs;{    int  sts, ret;    Display  *dpy;    Window   win, *label;    Atom     window_id, type, evt_message;    int      format;    unsigned long  nitems, left;    XClientMessageEvent  evt;          /* 流慨脱デ〖タ菇陇挛         *//*-------------------------------------------------------------------*/    XtUnmanageChild(rc0);    dpy = XtDisplay(w);    win = XtWindow(w);                                       /* 姜位妥滇デ〖タ侯喇         */    window_id = XInternAtom(dpy, "__WAITDISP", False);    ret = XGetWindowProperty(dpy, RootWindow(dpy, 0),                          window_id, 0, 4, False, XA_WINDOW,                          &type, &format, &nitems, &left, &label);    if (ret == Success && type == XA_WINDOW) {                                       /* 流慨するイベントデ〖タ侯喇 */        evt_message = XInternAtom(dpy, "__WAITDISP_KILL", False);        evt.display = dpy;        evt.window  = *label;        evt.type    = ClientMessage;        evt.format  = 8;        evt.message_type = evt_message;        evt.data.l[0] = (long)getpid();        evt.data.l[1] = (long)dpy;        evt.data.l[2] = (long)win;                                       /* 姜位妥滇デ〖タ流慨         */        sts = XSendEvent(dpy, *label, True, NoEventMask, evt);#if DEBUG        printf("姜位妥滇 sts=%d\n", sts);#endif    } else  {        printf("流慨黎艰评エラ〖\n");        printf("动扩姜位\n");        exit(0);    }}void destroy_it(w, client, cbs)Widget  w;caddr_t  client;XmAnyCallbackStruct  *cbs;{    Pixmap  pixmap;/*-------------------------------------------------------------------*/#if DEBUG    printf("destroy_it()\n");#endif    XtVaGetValues(w, XmNlabelPixmap, &pixmap, NULL);    XmDestroyPixmap(pixmap);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -