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

📄 omati.c

📁 想学linux中的motif编程
💻 C
📖 第 1 页 / 共 2 页
字号:
#include <stdio.h>#include <unistd.h>#include <errno.h>#include "system.h"#include "kyotu_t.h"/*-------------------------------------------------------------------*/#define  DEBUG            0/*#define  MIN_MSGLENGTH    20*/#define  MIN_MSGLENGTH    36#define  MAX_MAPLENGTH    256#define  INTERVAL         1000L#define  FONTSIZE         24#define  WIDTH            300#define  HEIGHT           60#define  ICONSIZE_X       32#define  ICONSIZE_Y       32#define  START_X          5#define  START_Y          5/*-------------------------------------------------------------------*/extern int  errno;char work[MAXPATHLEN];void  win_cre();void  interval_func();struct _bm_tbl {    int  id;    char  name[MAXPATHLEN];    Pixmap  pixmap;    unsigned int  width;    unsigned int  height;};struct _label_tbl {    Display  *dpy;    Screen   *screen;    Window   win;    GC       gc;    char    *str;    Pixmap  pixmap;    unsigned int  width;    unsigned int  height;};Display  *display;Screen   *screen;GC       gc;Pixmap   draw_pixmap, msg_pixmap;Position x = START_X, y = START_Y;XtAppContext  appcon;Widget  topshell;Widget  main_w;Widget  rc0, rc1;Widget  form, bb, drawing_a;Widget  label0, label1;Widget  pb;XtIntervalId  interval_id;unsigned long  interval = INTERVAL;static int   offset = 0;static int   current = INITIAL;static int   maplength = 0;static char  mapfname[MAX_MAPLENGTH][MAXPATHLEN];static char  *message = NULL;static struct _bm_tbl  *mapdata = NULL;static struct _label_tbl  label_tbl;main(argc, argv)int  argc;char  *argv[];{    char    fname[MAXPATHLEN];    char    buff[ALIGN(MIN_MSGLENGTH+1)];    XFontStruct  *font_info;/*-------------------------------------------------------------------*/    setlocale(LC_ALL,"");    XtSetLanguageProc(NULL,(XtLanguageProc)NULL,NULL);    topshell = XtAppInitialize(&appcon, "Wait2", NULL, 0,                                  &argc, argv, NULL, NULL, 0);    message = (char*)XtMalloc(ALIGN(MIN_MSGLENGTH+1));    if (argc >= 2) {                   /* メッセ〖ジの回年がある眷圭 */        message = (char*)XtRealloc(message, strlen(argv[1]) + 1);        strcpy(message, argv[1]);        if (argc >= 3) {               /* タイマ粗持の回年がある眷圭 */            interval = (unsigned long)atoi(argv[2]) * 100L;            if (interval < 0) {                interval = INTERVAL;            }        }    } else  {        message[0] = 0;    }#if DEBUG    printf("メッセ〖ジ[%s]\n",(message!=NULL)?message:"null");#endif                                       /* メッセ〖ジが没い眷圭は鄂球 */                                       /* を输う                     */    if (message[0] != 0 && strlen(message) < MIN_MSGLENGTH) {        sprintf(buff, "%*s", MIN_MSGLENGTH, " ");        strncpy(buff, message, strlen(message));        message = (char*)XtRealloc(message, strlen(buff)+1);        strcpy(message, buff);    }    win_cre(topshell);                 /* 茶烫侯喇                   */    sprintf(fname, "%s/f_waitdisp", (char*)getenv("SYSDIR"));    load_pixmap(label0, fname);#if 0    create_msgpixmap(label1, message);#endif    XtRealizeWidget(topshell);    if (mapdata != NULL && mapdata[0].id > 0) {        XtVaSetValues(label0, XmNlabelPixmap, mapdata[0].pixmap, NULL);    }    XFlush(XtDisplay(topshell));                                       /* タイマ肋年                 */    interval_id = XtAppAddTimeOut(appcon, 1000L,                                          interval_func, NULL);    XtAppMainLoop(appcon);}void win_cre(shell)Widget  shell;{    int  length;    char  buff[BUFSIZ];    Widget  frm, sep, rc;    XmString  mstr;    void  quit(), destroy_it();/*-------------------------------------------------------------------*/    XtVaSetValues(shell, XmNmwmDecorations,                         (MWM_DECOR_BORDER | MWM_DECOR_TITLE),                         NULL);    rc0 = XtVaCreateManagedWidget("rc0",                                xmRowColumnWidgetClass, shell,                                XmNmarginWidth, 0,                                XmNmarginHeight, 0,                                NULL);    form = XtVaCreateManagedWidget("form",                                xmFormWidgetClass, rc0,                                XmNmarginWidth, 10,                                XmNmarginHeight, 10,                                NULL);    rc = XtVaCreateManagedWidget("rc",                                xmRowColumnWidgetClass, form,                                XmNmarginWidth, 0,                                XmNmarginHeight, 0,                                XmNleftAttachment, XmATTACH_FORM,                                XmNleftOffset, 30,                                XmNorientation, XmHORIZONTAL,                                NULL);    frm = XtVaCreateManagedWidget("frm",                                xmFrameWidgetClass, rc,                                NULL);    label0 = XtVaCreateManagedWidget("label0",                                xmLabelWidgetClass, frm,                                XmNlabelType, XmPIXMAP,/***/                                XmNwidth, ICONSIZE_X,                                XmNheight, ICONSIZE_Y,/***/                                NULL);                                       /* メッセ〖ジ山绩脱ラベル     */    sprintf(buff, "%*s", MIN_MSGLENGTH, " ");    mstr = XmStringCreateLtoR(buff, XmSTRING_DEFAULT_CHARSET);    label1 = XtVaCreateManagedWidget("label1",                                xmLabelWidgetClass, rc,                                XmNwidth, 240,                                XmNheight, 30,                                XmNlabelString, mstr,                                XmNmarginWidth, 0,                                XmNmarginHeight, 0,                                XmNalignment, XmALIGNMENT_BEGINNING,/*                                XmNlabelType, XmPIXMAP,*/                                NULL);    XmStringFree(mstr);    drawing_a = XtVaCreateManagedWidget("drawing_a",                                xmDrawingAreaWidgetClass, form,                                XmNtopAttachment, XmATTACH_WIDGET,                                XmNtopWidget, rc,                                XmNtopOffset, 20,                                XmNbottomAttachment, XmATTACH_FORM,                                XmNbottomOffset, 10,                                XmNleftAttachment, XmATTACH_FORM,                                XmNleftOffset, 20,                                XmNrightAttachment, XmATTACH_FORM,                                XmNrightOffset, 20,                                XmNwidth, WIDTH,                                XmNheight, (HEIGHT*2) - (HEIGHT/2) + 5,                                XmNmarginWidth, 0,                                XmNmarginHeight, 0,                                NULL);                                       /* ∩ˇ∩肋年脱デ〖タ侯喇     */    display = XtDisplay(drawing_a);    screen = XtScreen(drawing_a);    gc = XCreateGC(display, RootWindowOfScreen(screen), 0, NULL);    XtVaSetValues(drawing_a, XmNuserData, gc, NULL);    XSetForeground(display, gc, WhitePixelOfScreen(screen));    draw_pixmap = XCreatePixmap(display,                                RootWindowOfScreen(screen),                                WIDTH, HEIGHT,                                 DefaultDepthOfScreen(screen));    XFillRectangle(display, draw_pixmap, gc, 0, 0, WIDTH, HEIGHT);    XSetForeground(display, gc, BlackPixelOfScreen(screen));    sep = XtVaCreateManagedWidget("sep",                                xmSeparatorGadgetClass, rc0,                                NULL);    rc1 = XtVaCreateManagedWidget("rc1",                                xmRowColumnWidgetClass, rc0,                                XmNisAligned, True,                                XmNentryAlignment, XmALIGNMENT_CENTER,                                XmNmarginWidth, 30,                                NULL);                                       /* 澄千ボタン                 */    pb = XtVaCreateManagedWidget("澄千",                                xmPushButtonWidgetClass, rc1,                                XmNtraversalOn, False,                                NULL);    XtAddCallback(pb, XmNactivateCallback, quit, NULL);    XtAddCallback(label1, XmNdestroyCallback, destroy_it, NULL);}int load_pixmap(parent, fname)Widget  parent;char  *fname;{    int   sts = ABNORMAL;    int   idx;    unsigned int   width, height;    char  buff[BUFSIZ];    char  *p;    FILE  *fp_r;    Pixmap  pixmap;    if (fname != NULL) {                                       /* pixmap年盗ファイルオ */                                       /* 〖プン                     */        if ((fp_r = fopen(fname, "r")) != NULL) {                                       /* 1乖ずつ粕み哈み           */            while(fgets(buff, sizeof(buff), fp_r) != NULL) {                                       /* 猖乖を猴近                 */                if ((p = strchr(buff, '\n')) != NULL) {

⌨️ 快捷键说明

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