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

📄 stdprop.c

📁 CC386 is a general-purpose 32-bit C compiler. It is not an optimizing compiler but given that the co
💻 C
📖 第 1 页 / 共 3 页
字号:
    DEFINES **d1;
    switch (wmsg)
    {
        case WM_INITDIALOG:
            CenterWindow(hwnd);
            return 1;
        case WM_COMMAND:
            switch (LOWORD(wparam))
            {
            case IDOK:
                SendDlgItemMessage(hwnd, IDC_DFADD, WM_GETTEXT, 256, (LPARAM)
                    buf);
                if (buf[0] == 0)
                    break;
                p = buf;
                if (!isalpha(*p) &&  *p != '_')
                {
                    ExtendedMessageBox("Define", 0, "Invalid Define Name");
                    break;
                }
                while (*p)
                {
                    if (!isalnum(*p) &&  *p != '_')
                    {
                        ExtendedMessageBox("Define", 0, "Invalid Define Name");
                        break;
                    }
                    p++;
                }
                GetDefineText(definehWnd, defineSelected);
                d1 = &workProj.defines;
                while (*d1)
                {
                    if (!strcmp((*d1)->name, buf))
                        break;
                    d1 = &(*d1)->next;
                }
                if (*d1)
                {
                    defineSelected = SendDlgItemMessage(definehWnd,
                        IDC_DEFINELIST, LB_FINDSTRINGEXACT,  - 1, (LPARAM)buf);
                    SetDefineLBEditFields(definehWnd, defineSelected);
                    ExtendedMessageBox("Defines", 0, 
                        "Define already exists, selecting");
                }
                else
                {
                    *d1 = calloc(sizeof(DEFINES), 1);
                    if (! *d1)
                        ExtendedMessageBox("out of memory", 0, "out of memory");
                    else
                    {
                        defineSelected = SendDlgItemMessage(definehWnd,
                            IDC_DEFINELIST, LB_ADDSTRING, 0, (LPARAM)buf);
                        strcpy((*d1)->name, buf);
                        SendDlgItemMessage(definehWnd, IDC_DEFINELIST,
                            LB_SETITEMDATA, defineSelected, (LPARAM)(*d1)->name)
                            ;
                        SendDlgItemMessage(definehWnd, IDC_DEFINELIST,
                            LB_SETCURSEL, defineSelected, 0);
                        SetDefineLBEditFields(definehWnd, defineSelected);
                    }
                }
                EndDialog(hwnd, 1);
                break;
            case IDCANCEL:
                EndDialog(hwnd, 0);
                break;
            }
            break;
        case WM_CLOSE:
            EndDialog(hwnd, 0);
            break;
    }
    return 0;
}

// ==============================================================
// ==============================================================
//
static int FAR PASCAL DefineProc(HWND hwnd, UINT wmsg, WPARAM wparam, LPARAM
    lparam)

{
    NMHDR *nmhead;
    DEFINES *d,  **d1;
    int disable_state;
    char buf[256];
    char *data;
    switch (wmsg)
    {
        case WM_INITDIALOG:
            return TRUE;
        case WM_COMMAND:
            switch (HIWORD(wparam))
            {
            case LBN_SELCHANGE:
                GetDefineText(hwnd, defineSelected);
                defineSelected = SendDlgItemMessage(hwnd, IDC_DEFINELIST,
                    LB_GETCURSEL, 0, 0);
                SetDefineLBEditFields(hwnd, defineSelected);
                break;
            }
            switch (LOWORD(wparam))
            {
            case IDC_DEFINEADD:
                definehWnd = hwnd;
                DialogBox(hInstance, "DEFINEADDDLG", GetParent(hwnd), (DLGPROC)
                    daDlgProc);
                break;
            case IDC_DEFINEREMOVE:
                d1 = &workProj.defines;
                data = (char*)SendDlgItemMessage(hwnd, IDC_DEFINELIST,
                    LB_GETITEMDATA, defineSelected, 0);
                SendDlgItemMessage(hwnd, IDC_DEFINELIST, LB_DELETESTRING,
                    defineSelected, 0);
                while (*d1)
                {
                    if ((*d1)->name == data)
                    {
                        DEFINES *d2 =  *d1;
                        (*d1) = (*d1)->next;
                        free(d2);
                        break;
                    }
                    d1 = &(*d1)->next;
                }
                if (defineSelected && defineSelected >= SendDlgItemMessage(hwnd,
                    IDC_DEFINELIST, LB_GETCOUNT, 0, 0))
                    defineSelected--;
                SetDefineLBEditFields(hwnd, defineSelected);
                break;
            }
            break;
        case WM_NOTIFY:
            nmhead = (NMHDR*)lparam;
            switch (nmhead->code)
            {
            case PSN_SETACTIVE:
                /* page startup */
                d = workProj.defines;
                SendDlgItemMessage(hwnd, IDC_DEFINELIST, LB_RESETCONTENT, 0, 0);
                while (d)
                {
                    int i = SendDlgItemMessage(hwnd, IDC_DEFINELIST,
                        LB_ADDSTRING, 0, (LPARAM)d->name);
                    SendDlgItemMessage(hwnd, IDC_DEFINELIST, LB_SETITEMDATA, i,
                        (LPARAM)d->name);
                    d = d->next;
                }
                SetDefineLBEditFields(hwnd, defineSelected);
                SetCBField(hwnd, IDC_DEFINEPASSTONASM, workProj.defineFlags
                    &DEFINE_TONASM ? 1 : 0);
                SetResult(hwnd, FALSE);
                break;
            case PSN_KILLACTIVE:
                GetDefineText(hwnd, defineSelected);
                workProj.defineFlags = GetCBField(hwnd, IDC_DEFINEPASSTONASM) ?
                    1 : 0;
                SetResult(hwnd, FALSE);
                break;
            case PSN_APPLY:
                /* Page application */
                break;
            case PSN_RESET:
                break;
            case PSN_HELP:
                ContextHelp(134);
                break;
            }
            break;
    }
    return FALSE;
}

// ==============================================================
//
static int FAR PASCAL TooloptProc(HWND hwnd, UINT wmsg, WPARAM wparam, LPARAM
    lparam)

{
    NMHDR *nmhead;
    switch (wmsg)
    {
        case WM_INITDIALOG:
            return TRUE;
        case WM_NOTIFY:
            nmhead = (NMHDR*)lparam;
            switch (nmhead->code)
            {
            case PSN_SETACTIVE:
                /* page startup */
                SetEditField(hwnd, IDC_TOCOMPILER, workProj.compileopts);
                SetEditField(hwnd, IDC_TOASSEMBLER, workProj.assembleopts);
                SetEditField(hwnd, IDC_TOLINKER, workProj.linkopts);
                SetEditField(hwnd, IDC_TOLIBRARIAN, workProj.libopts);
                break;
            case PSN_KILLACTIVE:
                /* verify ok always */
                GetEditField(hwnd, IDC_TOCOMPILER, workProj.compileopts);
                GetEditField(hwnd, IDC_TOASSEMBLER, workProj.assembleopts);
                GetEditField(hwnd, IDC_TOLINKER, workProj.linkopts);
                GetEditField(hwnd, IDC_TOLIBRARIAN, workProj.libopts);
                SetResult(hwnd, FALSE);
                break;
            case PSN_APPLY:
                /* Page application */
                break;
            case PSN_HELP:
                ContextHelp(135);
                break;
            }
            break;
    }
    return FALSE;
}

// ==============================================================
//
static int FAR PASCAL PrebuildProc(HWND hwnd, UINT wmsg, WPARAM wparam, LPARAM
    lparam)

{
    NMHDR *nmhead;
    switch (wmsg)
    {
        case WM_INITDIALOG:
            return TRUE;
        case WM_NOTIFY:
            nmhead = (NMHDR*)lparam;
            switch (nmhead->code)
            {
            case PSN_SETACTIVE:
                SetEditField(hwnd, IDC_PREBUILDLABEL, workProj.prebuildlabel);
                SendMessage(GetDlgItem(hwnd, IDC_PREBUILDLABEL), EM_LIMITTEXT,
                    80, 0);
                SetEditField(hwnd, IDC_PREBUILDSTEPS, workProj.prebuildsteps);
                /* page startup */
                break;
            case PSN_KILLACTIVE:
                /* verify ok always */
                GetEditField(hwnd, IDC_PREBUILDLABEL, workProj.prebuildlabel);
                GetEditField(hwnd, IDC_PREBUILDSTEPS, workProj.prebuildsteps);
                SetResult(hwnd, FALSE);
                break;
            case PSN_APPLY:
                /* Page application */
                break;
            case PSN_HELP:
                ContextHelp(137);
                break;
            }
            break;
    }
    return FALSE;
}

// ==============================================================
//
static int FAR PASCAL PostbuildProc(HWND hwnd, UINT wmsg, WPARAM wparam, LPARAM
    lparam)

{
    NMHDR *nmhead;
    switch (wmsg)
    {
        case WM_INITDIALOG:
            return TRUE;
        case WM_NOTIFY:
            nmhead = (NMHDR*)lparam;
            switch (nmhead->code)
            {
            case PSN_SETACTIVE:
                SetEditField(hwnd, IDC_POSTBUILDLABEL, workProj.postbuildlabel);
                SendMessage(GetDlgItem(hwnd, IDC_POSTBUILDLABEL), EM_LIMITTEXT,
                    80, 0);
                SetEditField(hwnd, IDC_POSTBUILDSTEPS, workProj.postbuildsteps);
                /* page startup */
                break;
            case PSN_KILLACTIVE:
                /* verify ok always */
                GetEditField(hwnd, IDC_POSTBUILDLABEL, workProj.postbuildlabel);
                GetEditField(hwnd, IDC_POSTBUILDSTEPS, workProj.postbuildsteps);
                SetResult(hwnd, FALSE);
                break;
            case PSN_APPLY:
                /* Page application */
                break;
            case PSN_HELP:
                ContextHelp(139);
                break;
            }
            break;
    }
    return FALSE;
}

// ==============================================================
//
// display the property sheet and return to caller
//
void TargetProperties(HINSTANCE hInst, HWND hwnd, PROJLIST *p)
{
    proj = p;
    workProj =  *p;
    defineSelected = 0;
    workProj.defines = duplicateDefines(workProj.defines);
    // struct for server page
    pages[TARGETPROP].dwSize = sizeof(PROPSHEETPAGE);
    pages[TARGETPROP].dwFlags = PSP_HASHELP;
    pages[TARGETPROP].hInstance = hInst;
    pages[TARGETPROP].u.pszTemplate = "TARGETPROPDLG";
    pages[TARGETPROP].pfnDlgProc = TargetProc;
    pages[TARGETPROP].pszTitle = "General";

    pages[DEBUGPROP].dwSize = sizeof(PROPSHEETPAGE);
    pages[DEBUGPROP].dwFlags = PSP_HASHELP;
    pages[DEBUGPROP].hInstance = hInst;
    pages[DEBUGPROP].u.pszTemplate = "DEBUGPROPDLG";
    pages[DEBUGPROP].pfnDlgProc = DebugProc;
    pages[DEBUGPROP].pszTitle = "Debug";

    pages[DEFINEPROP].dwSize = sizeof(PROPSHEETPAGE);
    pages[DEFINEPROP].dwFlags = PSP_HASHELP;
    pages[DEFINEPROP].hInstance = hInst;
    pages[DEFINEPROP].u.pszTemplate = "DEFINEPROPDLG";
    pages[DEFINEPROP].pfnDlgProc = DefineProc;
    pages[DEFINEPROP].pszTitle = "Defines";

    pages[TOOLOPTSPROP].dwSize = sizeof(PROPSHEETPAGE);
    pages[TOOLOPTSPROP].dwFlags = PSP_HASHELP;
    pages[TOOLOPTSPROP].hInstance = hInst;
    pages[TOOLOPTSPROP].u.pszTemplate = "TOOLOPTPROPDLG";
    pages[TOOLOPTSPROP].pfnDlgProc = TooloptProc;
    pages[TOOLOPTSPROP].pszTitle = "Tool Options";

    pages[PREBUILDPROP].dwSize = sizeof(PROPSHEETPAGE);
    pages[PREBUILDPROP].dwFlags = PSP_HASHELP;
    pages[PREBUILDPROP].hInstance = hInst;
    pages[PREBUILDPROP].u.pszTemplate = "PREBUILDPROPDLG";
    pages[PREBUILDPROP].pfnDlgProc = PrebuildProc;
    pages[PREBUILDPROP].pszTitle = "Pre Build Step";

    pages[POSTBUILDPROP].dwSize = sizeof(PROPSHEETPAGE);
    pages[POSTBUILDPROP].dwFlags = PSP_HASHELP;
    pages[POSTBUILDPROP].hInstance = hInst;
    pages[POSTBUILDPROP].u.pszTemplate = "POSTBUILDPROPDLG";
    pages[POSTBUILDPROP].pfnDlgProc = PostbuildProc;
    pages[POSTBUILDPROP].pszTitle = "Post Build Step";

    // struct for property sheet header
    header.dwSize = sizeof(PROPSHEETHEADER);
    header.dwFlags = PSH_PROPSHEETPAGE | PSH_PROPTITLE | PSH_NOAPPLYNOW /* |
        PSH_HASHELP*/;
    header.hwndParent = hwnd;
    header.hInstance = hInstance;
    header.pszCaption = "Target";
    header.nPages = TARGET_PROPERTY_SHEET_COUNT;
    header.u2.nStartPage = 0;
    header.u3.ppsp = &pages[0];

    // make the property sheet and exit
    PropertySheet(&header);
}

⌨️ 快捷键说明

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