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

📄 gquery.c

📁 Graphviz - Graph Drawing Programs from AT&T Research and Lucent Bell Labs See doc/build.html for
💻 C
字号:
/* $Id: gquery.c,v 1.2 2005/04/08 20:45:34 erg Exp $ $Revision: 1.2 $ *//* vim:set shiftwidth=4 ts=8: *//***********************************************************      This software is part of the graphviz package      **                http://www.graphviz.org/                 **                                                         **            Copyright (c) 1994-2004 AT&T Corp.           **                and is licensed under the                **            Common Public License, Version 1.0           **                      by AT&T Corp.                      **                                                         **        Information and Software Systems Research        **              AT&T Research, Florham Park NJ             ***********************************************************//* Lefteris Koutsofios - AT&T Labs Research */#include "common.h"#include "g.h"#include "gcommon.h"#include "mem.h"#include "resource.h"#define WQU widget->u.qBOOL CALLBACK stringproc (HWND, UINT, WPARAM, LPARAM);BOOL CALLBACK choiceproc (HWND, UINT, WPARAM, LPARAM);int GQcreatewidget (    Gwidget_t *parent, Gwidget_t *widget, int attrn, Gwattr_t *attrp) {    DWORD wflags;    int ai;    WQU->mode = G_QWSTRING;    wflags = WS_OVERLAPPEDWINDOW;    for (ai = 0; ai < attrn; ai++) {        switch (attrp[ai].id) {        case G_ATTRMODE:            if (strcmp ("string", attrp[ai].u.t) == 0)                WQU->mode = G_QWSTRING;            else if (strcmp ("file", attrp[ai].u.t) == 0)                WQU->mode = G_QWFILE;            else if (strcmp ("choice", attrp[ai].u.t) == 0)                WQU->mode = G_QWCHOICE;            else {                Gerr (POS, G_ERRBADATTRVALUE, attrp[ai].u.t);                return -1;            }            break;        case G_ATTRUSERDATA:            widget->udata = attrp[ai].u.u;            break;        default:            Gerr (POS, G_ERRBADATTRID, attrp[ai].id);            return -1;        }    }    switch (WQU->mode) {    case G_QWSTRING:        widget->w = 0;        break;    case G_QWFILE:        widget->w = 0;        break;    case G_QWCHOICE:        widget->w = 0;        break;    }    return 0;}int GQsetwidgetattr (Gwidget_t *widget, int attrn, Gwattr_t *attrp) {    int ai;    for (ai = 0; ai < attrn; ai++) {        switch (attrp[ai].id) {        case G_ATTRMODE:            Gerr (POS, G_ERRCANNOTSETATTR2, "mode");            return -1;        case G_ATTRUSERDATA:            widget->udata = attrp[ai].u.u;            break;        default:            Gerr (POS, G_ERRBADATTRID, attrp[ai].id);            return -1;        }    }    return 0;}int GQgetwidgetattr (Gwidget_t *widget, int attrn, Gwattr_t *attrp) {    int ai;    for (ai = 0; ai < attrn; ai++) {        switch (attrp[ai].id) {        case G_ATTRMODE:            switch (WQU->mode) {            case G_QWSTRING:                attrp[ai].u.t = "string";                break;            case G_QWFILE:                attrp[ai].u.t = "file";                break;            case G_QWCHOICE:                attrp[ai].u.t = "choice";                break;            }            break;        case G_ATTRUSERDATA:            attrp[ai].u.u = widget->udata;            break;        default:            Gerr (POS, G_ERRBADATTRID, attrp[ai].id);            return -1;        }    }    return 0;}int GQdestroywidget (Gwidget_t *widget) {    return 0;}static Gwidget_t *choicew;static char *buttons[20];static char *stringp;static int stringn;int GQqueryask (    Gwidget_t *widget, char *prompt, char *args,    char *responsep, int responsen) {    OPENFILENAME ofn;    char buf[256];    char *s1, *s2;    char c;    int i;    switch (WQU->mode) {    case G_QWSTRING:        stringp = responsep;        stringn = responsen;        buttons[0] = prompt;        buttons[1] = args;        DialogBox (hinstance, (LPCSTR) "STRINGDIALOG", (HWND) NULL, stringproc);        Gpopdownflag = TRUE;        if (stringp)            return 0;        return -1;        break;    case G_QWFILE:        strcpy (buf, args);        ofn.lStructSize       = sizeof (OPENFILENAME);        ofn.hwndOwner         = (HWND) NULL;        ofn.lpstrFilter       = "All Files (*.*)\0*.*\0";        ofn.lpstrCustomFilter = NULL;        ofn.nMaxCustFilter    = 0;        ofn.nFilterIndex      = 1;        ofn.lpstrFile         = buf;        ofn.nMaxFile          = 256;        ofn.lpstrFileTitle    = NULL;        ofn.nMaxFileTitle     = 0;        ofn.lpstrInitialDir   = NULL;        ofn.lpstrTitle        = prompt;        ofn.Flags             = 0;        ofn.lpstrDefExt       = NULL;        if (!GetOpenFileName (&ofn)) {            Gpopdownflag = TRUE;            return -1;        }        strncpy (responsep, buf, responsen);        Gpopdownflag = TRUE;        break;    case G_QWCHOICE:        if (!args)            return -1;        WQU->button = 0;        choicew = widget;        buttons[0] = prompt;        for (s1 = args, i = 1; *s1; i++) {            buttons[i] = s1;            s2 = s1;            while (*s2 && *s2 != '|')                s2++;            c = *s2, *s2 = 0;            s1 = s2;            if (c)                s1++;        }        buttons[i] = NULL;        DialogBox (hinstance, "CHOICEDIALOG", (HWND) NULL, choiceproc);        if (WQU->button > 0)            strncpy (responsep, buttons[WQU->button], responsen);        for (s2 = args; s2 < s1; s2++)            if (!*s2)                *s2 = '|';        Gpopdownflag = TRUE;        if (WQU->button > 0)            return 0;        return -1;        break;    }    if (responsep[0] && responsep[strlen(responsep) - 1] == '\n')        responsep[strlen(responsep) - 1] = 0;    return 0;}BOOL CALLBACK stringproc (    HWND hdlg, UINT message, WPARAM wparam, LPARAM lparam) {    switch (message) {    case WM_INITDIALOG:        SetDlgItemText (hdlg, IDC_STATIC1, (LPCSTR) buttons[0]);        if (buttons[1])            SetDlgItemText (hdlg, IDC_EDIT1, (LPCSTR) buttons[1]);        return TRUE;        break;    case WM_COMMAND:        switch (wparam) {        case IDOK:            GetDlgItemText (hdlg, IDC_EDIT1, stringp, stringn);            EndDialog (hdlg, TRUE);            return TRUE;        case IDCANCEL:            stringp = NULL;            EndDialog(hdlg, TRUE);            return TRUE;            break;        }    }    return FALSE;}BOOL CALLBACK choiceproc (HWND hdlg, UINT message,        WPARAM wparam, LPARAM lparam) {    int sel, i;    switch (message) {    case WM_INITDIALOG:        SetDlgItemText (hdlg, IDC_STATIC1, (LPCSTR) buttons[0]);        for (i = 1; buttons[i]; i++)            SendDlgItemMessage (                hdlg, IDC_LIST1, LB_ADDSTRING, 0, (LPARAM) buttons[i]            );        return TRUE;        break;    case WM_COMMAND:        if ((sel = (int) SendDlgItemMessage (            hdlg, IDC_LIST1, LB_GETCURSEL, 0,  0        )) >= 0) {            choicew->u.q->button = sel + 1;            EndDialog (hdlg, TRUE);        }        return TRUE;        break;    }    return FALSE;}

⌨️ 快捷键说明

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