Ejemplo n.º 1
0
INT_PTR CALLBACK DlgProcContainerOptions(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
    TContainerData *pContainer = 0;
    HWND   hwndTree = GetDlgItem(hwndDlg, IDC_SECTIONTREE);
    pContainer = (TContainerData*) GetWindowLongPtr(hwndDlg, GWLP_USERDATA);

    switch (msg) {
    case WM_INITDIALOG: {
        wchar_t			szNewTitle[128];
        TContainerData *pContainer = 0;
        int   			i, j;
        TVINSERTSTRUCT 	tvis = {0};
        HTREEITEM 		hItem;
        int				nr_layouts = 0;
        const 			TSideBarLayout* sblayouts = CSideBar::getLayouts(nr_layouts);

        SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR) lParam);
        pContainer = (TContainerData*) lParam;
        pContainer->hWndOptions = hwndDlg;
        TranslateDialogDefault(hwndDlg);
        SetWindowText(hwndDlg, TranslateT("Container options"));
        mir_sntprintf(szNewTitle, SIZEOF(szNewTitle), TranslateT("Configure container options for\n%s"), !_tcscmp(pContainer->szName, _T("default")) ?
                      TranslateT("Default container") : pContainer->szName);
        SetDlgItemText(hwndDlg, IDC_HEADERBAR, szNewTitle);
        Utils::enableDlgControl(hwndDlg, IDC_O_HIDETITLE, CSkin::m_frameSkins ? FALSE : TRUE);
        CheckDlgButton(hwndDlg, IDC_CNTPRIVATE, pContainer->settings->fPrivate ? BST_CHECKED : BST_UNCHECKED);

        SendDlgItemMessage(hwndDlg, IDC_TABMODE, CB_INSERTSTRING, -1, (LPARAM)TranslateT("Tabs at the top"));
        SendDlgItemMessage(hwndDlg, IDC_TABMODE, CB_INSERTSTRING, -1, (LPARAM)TranslateT("Tabs at the bottom"));
        SendDlgItemMessage(hwndDlg, IDC_TABMODE, CB_INSERTSTRING, -1, (LPARAM)TranslateT("Switch bar on the left side"));
        SendDlgItemMessage(hwndDlg, IDC_TABMODE, CB_INSERTSTRING, -1, (LPARAM)TranslateT("Switch bar on the right side"));

        SendDlgItemMessage(hwndDlg, IDC_AVATARMODE, CB_INSERTSTRING, -1,
                           (LPARAM)TranslateT("Globally on"));
        SendDlgItemMessage(hwndDlg, IDC_AVATARMODE, CB_INSERTSTRING, -1,
                           (LPARAM)TranslateT("On, if present"));
        SendDlgItemMessage(hwndDlg, IDC_AVATARMODE, CB_INSERTSTRING, -1,
                           (LPARAM)TranslateT("Globally OFF"));
        SendDlgItemMessage(hwndDlg, IDC_AVATARMODE, CB_INSERTSTRING, -1,
                           (LPARAM)TranslateT("On, if present, always in bottom display"));

        SendDlgItemMessage(hwndDlg, IDC_OWNAVATARMODE, CB_INSERTSTRING, -1,
                           (LPARAM)TranslateT("On, if present"));
        SendDlgItemMessage(hwndDlg, IDC_OWNAVATARMODE, CB_INSERTSTRING, -1,
                           (LPARAM)TranslateT("Don't show them"));

        for (i=0; i < nr_layouts; i++)
            SendDlgItemMessage(hwndDlg, IDC_SBARLAYOUT, CB_INSERTSTRING, -1, (LPARAM)TranslateTS(sblayouts[i].szName));

        /* bits 24 - 31 of dwFlagsEx hold the side bar layout id */
        SendDlgItemMessage(hwndDlg, IDC_SBARLAYOUT, CB_SETCURSEL, (WPARAM)((pContainer->settings->dwFlagsEx & 0xff000000) >> 24), 0);


        SendMessage(hwndDlg, DM_SC_INITDIALOG, 0, (LPARAM)pContainer->settings);
        SendDlgItemMessage(hwndDlg, IDC_TITLEFORMAT, EM_LIMITTEXT, TITLE_FORMATLEN - 1, 0);
        SetDlgItemText(hwndDlg, IDC_TITLEFORMAT, pContainer->settings->szTitleFormat);
        SetDlgItemText(hwndDlg, IDC_THEME, pContainer->szRelThemeFile);
        for (i=0; i < NR_O_PAGES; i++) {
            tvis.hParent = NULL;
            tvis.hInsertAfter = TVI_LAST;
            tvis.item.mask = TVIF_TEXT | TVIF_PARAM;
            tvis.item.pszText = TranslateTS(o_pages[i].szTitle);
            tvis.item.lParam = i;
            hItem = TreeView_InsertItem(hwndTree, &tvis);
            if (i == 0)
                SendMessage(hwndTree, TVM_SELECTITEM, TVGN_CARET, (LPARAM)hItem);
            for (j = 0; j < NR_O_OPTIONSPERPAGE && o_pages[i].uIds[j] != 0; j++)
                Utils::showDlgControl(hwndDlg, o_pages[i].uIds[j], SW_HIDE);
            ShowPage(hwndDlg, i, FALSE);
        }
        SendMessage(hwndDlg, WM_SETICON, ICON_SMALL, (LPARAM)LoadSkinnedIcon(SKINICON_EVENT_MESSAGE));
        SendMessage(hwndDlg, WM_SETICON, ICON_BIG, (LPARAM)LoadSkinnedIconBig(SKINICON_EVENT_MESSAGE));
        ShowPage(hwndDlg, 0, TRUE);
        SetFocus(hwndTree);
        Utils::enableDlgControl(hwndDlg, IDC_APPLY, FALSE);

        HFONT hFont = (HFONT)SendDlgItemMessage(hwndDlg, IDC_DESC, WM_GETFONT, 0, 0);
        LOGFONT lf = {0};

        GetObject(hFont, sizeof(lf), &lf);
        lf.lfHeight = (int)(lf.lfHeight * 1.2);
        hFont = CreateFontIndirect(&lf);

        SendDlgItemMessage(hwndDlg, IDC_TITLEBOX, WM_SETFONT, (WPARAM)hFont, TRUE);

        if (pContainer->isCloned && pContainer->hContactFrom != 0) {
            Utils::showDlgControl(hwndDlg, IDC_CNTPRIVATE, SW_HIDE);
            Utils::showDlgControl(hwndDlg, IDC_O_CNTPRIVATE, SW_HIDE);
        }
        return FALSE;
    }

    case WM_CTLCOLOREDIT:
    case WM_CTLCOLORSTATIC:
    {
        HWND hwndChild = (HWND)lParam;
        UINT id = GetDlgCtrlID(hwndChild);

        if (hwndChild == GetDlgItem(hwndDlg, IDC_TITLEBOX)) {
            ::SetTextColor((HDC)wParam, RGB(60, 60, 150));
        } else if (hwndChild == GetDlgItem(hwndDlg, IDC_DESC))
            ::SetTextColor((HDC)wParam, RGB(160, 50, 50));
        if (id == IDC_TSLABEL_REOPENWARN)
            break;
        SetBkColor((HDC)wParam, GetSysColor(COLOR_WINDOW));
        return (INT_PTR)GetSysColorBrush(COLOR_WINDOW);
    }

    case WM_NOTIFY:
        if (wParam == IDC_SECTIONTREE && ((LPNMHDR)lParam)->code == TVN_SELCHANGED) {
            NMTREEVIEW *pmtv = (NMTREEVIEW *)lParam;

            ShowPage(hwndDlg, pmtv->itemOld.lParam, 0);
            ShowPage(hwndDlg, pmtv->itemNew.lParam, 1);
        }
        break;

    case WM_HSCROLL:
        if ((HWND)lParam == GetDlgItem(hwndDlg, IDC_TRANSPARENCY_ACTIVE) || (HWND)lParam == GetDlgItem(hwndDlg, IDC_TRANSPARENCY_INACTIVE))
            Utils::enableDlgControl(hwndDlg, IDC_APPLY, TRUE);
        break;

    case WM_COMMAND:
        switch (LOWORD(wParam)) {
        case IDC_CNTPRIVATE: {

            if (IsDlgButtonChecked(hwndDlg, IDC_CNTPRIVATE)) {
                Utils::ReadPrivateContainerSettings(pContainer, true);
                pContainer->settings->fPrivate = true;
            }
            else {
                if (pContainer->settings != &PluginConfig.globalContainerSettings) {
                    char szCname[40];
                    mir_snprintf(szCname, 40, "%s%d_Blob", CNT_BASEKEYNAME, pContainer->iContainerIndex);
                    pContainer->settings->fPrivate = false;
                    db_set_blob(0, SRMSGMOD_T, szCname, pContainer->settings, sizeof(TContainerSettings));
                    mir_free(pContainer->settings);
                }
                pContainer->settings = &PluginConfig.globalContainerSettings;
                pContainer->settings->fPrivate = false;
            }
            SendMessage(hwndDlg, DM_SC_INITDIALOG, 0, (LPARAM)pContainer->settings);
            goto do_apply;
        }
        case IDC_TRANSPARENCY: {
            int isTrans = IsDlgButtonChecked(hwndDlg, IDC_TRANSPARENCY);

            Utils::enableDlgControl(hwndDlg, IDC_TRANSPARENCY_ACTIVE, isTrans ? TRUE : FALSE);
            Utils::enableDlgControl(hwndDlg, IDC_TRANSPARENCY_INACTIVE, isTrans ? TRUE : FALSE);
            goto do_apply;
        }
        case IDC_SECTIONTREE:
        case IDC_DESC:
            return 0;
        case IDC_SAVESIZEASGLOBAL: {
            WINDOWPLACEMENT wp = {0};

            wp.length = sizeof(wp);
            if (GetWindowPlacement(pContainer->hwnd, &wp)) {
                db_set_dw(0, SRMSGMOD_T, "splitx", wp.rcNormalPosition.left);
                db_set_dw(0, SRMSGMOD_T, "splity", wp.rcNormalPosition.top);
                db_set_dw(0, SRMSGMOD_T, "splitwidth", wp.rcNormalPosition.right - wp.rcNormalPosition.left);
                db_set_dw(0, SRMSGMOD_T, "splitheight", wp.rcNormalPosition.bottom - wp.rcNormalPosition.top);
            }
            break;
        }
        case IDC_O_ENABLESOUNDS:
            SendMessage(hwndDlg, DM_SC_CONFIG, 0, 0);
            break;
        case IDC_TITLEFORMAT:
            if (HIWORD(wParam) != EN_CHANGE || (HWND) lParam != GetFocus())
                return TRUE;
            goto do_apply;
        case IDC_SELECTTHEME: {
            const wchar_t *szFileName = GetThemeFileName(0);

            if (PathFileExists(szFileName)) {
                SetDlgItemText(hwndDlg, IDC_THEME, szFileName);
                goto do_apply;
            }
            break;
        }

        case IDC_O_HELP_TITLEFORMAT:
            CallService(MS_UTILS_OPENURL, OUF_NEWWINDOW|OUF_TCHAR, (LPARAM)_T("http://miranda.or.at/TabSRMM/TitleBarFormatting"));
            break;

        case IDOK:
        case IDC_APPLY: {

            SendMessage(hwndDlg, DM_SC_BUILDLIST, 0, (LPARAM)pContainer->settings);

            pContainer->settings->dwTransparency = MAKELONG((WORD)SendDlgItemMessage(hwndDlg, IDC_TRANSPARENCY_ACTIVE, TBM_GETPOS, 0, 0),
                                                   (WORD)SendDlgItemMessage(hwndDlg, IDC_TRANSPARENCY_INACTIVE, TBM_GETPOS, 0, 0));

            pContainer->settings->avatarMode = (WORD)SendDlgItemMessage(hwndDlg, IDC_AVATARMODE, CB_GETCURSEL, 0, 0);
            pContainer->settings->ownAvatarMode = (WORD)SendDlgItemMessage(hwndDlg, IDC_OWNAVATARMODE, CB_GETCURSEL, 0, 0);

            GetDlgItemText(hwndDlg, IDC_TITLEFORMAT, pContainer->settings->szTitleFormat, TITLE_FORMATLEN);
            pContainer->settings->szTitleFormat[TITLE_FORMATLEN - 1] = 0;

            pContainer->szRelThemeFile[0] = pContainer->szAbsThemeFile[0] = 0;

            if (GetWindowTextLengthA(GetDlgItem(hwndDlg, IDC_THEME)) > 0) {
                wchar_t	szFinalThemeFile[MAX_PATH], szFilename[MAX_PATH];

                GetDlgItemText(hwndDlg, IDC_THEME, szFilename, MAX_PATH);
                szFilename[MAX_PATH - 1] = 0;
                PathToAbsoluteT(szFilename, szFinalThemeFile, M.getDataPath());

                if (_tcscmp(szFilename, pContainer->szRelThemeFile))
                    pContainer->fPrivateThemeChanged = TRUE;

                if (PathFileExists(szFinalThemeFile))
                    mir_sntprintf(pContainer->szRelThemeFile, MAX_PATH, _T("%s"), szFilename);
                else
                    pContainer->szRelThemeFile[0] = 0;
            }
            else {
                pContainer->szRelThemeFile[0] = 0;
                pContainer->fPrivateThemeChanged = TRUE;
            }

            Utils::SettingsToContainer(pContainer);

            if (!IsDlgButtonChecked(hwndDlg, IDC_CNTPRIVATE)) {
                ReloadGlobalContainerSettings(true);
                ::db_set_blob(0, SRMSGMOD_T, CNT_KEYNAME, &PluginConfig.globalContainerSettings, sizeof(TContainerSettings));
            }
            else {
                char *szSetting = "CNTW_";
                Utils::SaveContainerSettings(pContainer, szSetting);
            }

            SendMessage(pContainer->hwnd, DM_CONFIGURECONTAINER, 0, 0);
            BroadCastContainer(pContainer, DM_SETINFOPANEL, 0, 0);

            ShowWindow(pContainer->hwnd, SW_HIDE);
            {
                RECT	rc;

                GetWindowRect(pContainer->hwnd, &rc);
                SetWindowPos(pContainer->hwnd, 0, rc.left, rc.top, (rc.right - rc.left) - 1, (rc.bottom - rc.top) - 1, SWP_NOZORDER | SWP_DRAWFRAME | SWP_FRAMECHANGED);
                SetWindowPos(pContainer->hwnd, 0, rc.left, rc.top, (rc.right - rc.left), (rc.bottom - rc.top), SWP_NOZORDER | SWP_DRAWFRAME | SWP_SHOWWINDOW);
            }

            if (LOWORD(wParam) == IDOK)
                DestroyWindow(hwndDlg);
            else
                Utils::enableDlgControl(hwndDlg, IDC_APPLY, FALSE);

            break;
        }
        case IDCANCEL:
            DestroyWindow(hwndDlg);
            return TRUE;
        default:
do_apply:
            Utils::enableDlgControl(hwndDlg, IDC_APPLY, TRUE);
            break;
        }
        break;
    case DM_SC_INITDIALOG: {
        TContainerSettings* cs = (TContainerSettings *)lParam;

        DWORD dwFlags = cs->dwFlags;
        DWORD dwTransparency = cs->dwTransparency;
        DWORD dwFlagsEx = cs->dwFlagsEx;
        int  isTrans;
        BOOL fAllowTrans = FALSE;

        if (PluginConfig.m_WinVerMajor >= 6)
            fAllowTrans = TRUE;
        else
            fAllowTrans = (!CSkin::m_skinEnabled);

        MY_CheckDlgButton(hwndDlg, IDC_O_HIDETITLE, dwFlags & CNT_NOTITLE);
        MY_CheckDlgButton(hwndDlg, IDC_O_DONTREPORT, dwFlags & CNT_DONTREPORT);
        MY_CheckDlgButton(hwndDlg, IDC_O_NOTABS, dwFlags & CNT_HIDETABS);
        MY_CheckDlgButton(hwndDlg, IDC_O_STICKY, dwFlags & CNT_STICKY);
        MY_CheckDlgButton(hwndDlg, IDC_O_FLASHNEVER, dwFlags & CNT_NOFLASH);
        MY_CheckDlgButton(hwndDlg, IDC_O_FLASHALWAYS, dwFlags & CNT_FLASHALWAYS);
        MY_CheckDlgButton(hwndDlg, IDC_O_FLASHDEFAULT, !((dwFlags & CNT_NOFLASH) || (dwFlags & CNT_FLASHALWAYS)));
        MY_CheckDlgButton(hwndDlg, IDC_TRANSPARENCY, dwFlags & CNT_TRANSPARENCY);
        MY_CheckDlgButton(hwndDlg, IDC_DONTREPORTUNFOCUSED2, dwFlags & CNT_DONTREPORTUNFOCUSED);
        MY_CheckDlgButton(hwndDlg, IDC_DONTREPORTFOCUSED2, dwFlags & CNT_DONTREPORTFOCUSED);
        MY_CheckDlgButton(hwndDlg, IDC_ALWAYSPOPUPSINACTIVE, dwFlags & CNT_ALWAYSREPORTINACTIVE);
        MY_CheckDlgButton(hwndDlg, IDC_CNTNOSTATUSBAR, dwFlags & CNT_NOSTATUSBAR);
        MY_CheckDlgButton(hwndDlg, IDC_HIDEMENUBAR, dwFlags & CNT_NOMENUBAR);
        MY_CheckDlgButton(hwndDlg, IDC_HIDETOOLBAR, dwFlags & CNT_HIDETOOLBAR);
        MY_CheckDlgButton(hwndDlg, IDC_BOTTOMTOOLBAR, dwFlags & CNT_BOTTOMTOOLBAR);
        MY_CheckDlgButton(hwndDlg, IDC_UIDSTATUSBAR, dwFlags & CNT_UINSTATUSBAR);
        MY_CheckDlgButton(hwndDlg, IDC_VERTICALMAX, dwFlags & CNT_VERTICALMAX);
        MY_CheckDlgButton(hwndDlg, IDC_AUTOSPLITTER, dwFlags & CNT_AUTOSPLITTER);
        MY_CheckDlgButton(hwndDlg, IDC_AVATARSONTASKBAR, dwFlags & CNT_AVATARSONTASKBAR);
        MY_CheckDlgButton(hwndDlg, IDC_INFOPANEL, dwFlags & CNT_INFOPANEL);
        MY_CheckDlgButton(hwndDlg, IDC_USEGLOBALSIZE, dwFlags & CNT_GLOBALSIZE);

        MY_CheckDlgButton(hwndDlg, IDC_FLASHICON, dwFlagsEx & TCF_FLASHICON);
        MY_CheckDlgButton(hwndDlg, IDC_FLASHLABEL, dwFlagsEx & TCF_FLASHLABEL);
        MY_CheckDlgButton(hwndDlg, IDC_CLOSEBUTTONONTABS, dwFlagsEx & TCF_CLOSEBUTTON);

        MY_CheckDlgButton(hwndDlg, IDC_SINGLEROWTAB, dwFlagsEx & TCF_SINGLEROWTABCONTROL);
        MY_CheckDlgButton(hwndDlg, IDC_BUTTONTABS, dwFlagsEx & TCF_FLAT);

        MY_CheckDlgButton(hwndDlg, IDC_O_ENABLESOUNDS, !(dwFlags & CNT_NOSOUND));
        MY_CheckDlgButton(hwndDlg, IDC_O_SOUNDSMINIMIZED, dwFlagsEx & CNT_EX_SOUNDS_MINIMIZED);
        MY_CheckDlgButton(hwndDlg, IDC_O_SOUNDSUNFOCUSED, dwFlagsEx & CNT_EX_SOUNDS_UNFOCUSED);
        MY_CheckDlgButton(hwndDlg, IDC_O_SOUNDSINACTIVE, dwFlagsEx & CNT_EX_SOUNDS_INACTIVETABS);
        MY_CheckDlgButton(hwndDlg, IDC_O_SOUNDSFOCUSED, dwFlagsEx & CNT_EX_SOUNDS_FOCUSED);

        SendMessage(hwndDlg, DM_SC_CONFIG, 0, 0);

        if (!(dwFlagsEx & (TCF_SBARLEFT | TCF_SBARRIGHT)))
            SendDlgItemMessage(hwndDlg, IDC_TABMODE, CB_SETCURSEL, dwFlags & CNT_TABSBOTTOM ? 1 : 0, 0);
        else
            SendDlgItemMessage(hwndDlg, IDC_TABMODE, CB_SETCURSEL, dwFlagsEx & TCF_SBARLEFT ? 2 : 3, 0);

        if (LOBYTE(LOWORD(GetVersion())) >= 5 && fAllowTrans)
            CheckDlgButton(hwndDlg, IDC_TRANSPARENCY, dwFlags & CNT_TRANSPARENCY);
        else
            CheckDlgButton(hwndDlg, IDC_TRANSPARENCY, FALSE);

        Utils::enableDlgControl(hwndDlg, IDC_TRANSPARENCY, PluginConfig.m_WinVerMajor >= 5 && fAllowTrans ? TRUE : FALSE);

        isTrans = IsDlgButtonChecked(hwndDlg, IDC_TRANSPARENCY);
        Utils::enableDlgControl(hwndDlg, IDC_TRANSPARENCY_ACTIVE, isTrans ? TRUE : FALSE);
        Utils::enableDlgControl(hwndDlg, IDC_TRANSPARENCY_INACTIVE, isTrans ? TRUE : FALSE);

        SendDlgItemMessage(hwndDlg, IDC_TRANSPARENCY_ACTIVE, TBM_SETRANGE, 0, (LPARAM)MAKELONG(50, 255));
        SendDlgItemMessage(hwndDlg, IDC_TRANSPARENCY_INACTIVE, TBM_SETRANGE, 0, (LPARAM)MAKELONG(50, 255));

        SendDlgItemMessage(hwndDlg, IDC_TRANSPARENCY_ACTIVE, TBM_SETPOS, TRUE, (LPARAM)LOWORD(dwTransparency));
        SendDlgItemMessage(hwndDlg, IDC_TRANSPARENCY_INACTIVE, TBM_SETPOS, TRUE, (LPARAM)HIWORD(dwTransparency));

        Utils::enableDlgControl(hwndDlg, IDC_O_DONTREPORT, nen_options.bWindowCheck == 0);
        Utils::enableDlgControl(hwndDlg, IDC_DONTREPORTUNFOCUSED2, nen_options.bWindowCheck == 0);
        Utils::enableDlgControl(hwndDlg, IDC_DONTREPORTFOCUSED2, nen_options.bWindowCheck == 0);
        Utils::enableDlgControl(hwndDlg, IDC_ALWAYSPOPUPSINACTIVE, nen_options.bWindowCheck == 0);

        SendDlgItemMessage(hwndDlg, IDC_AVATARMODE, CB_SETCURSEL, (WPARAM)cs->avatarMode, 0);
        SendDlgItemMessage(hwndDlg, IDC_OWNAVATARMODE, CB_SETCURSEL, (WPARAM)cs->ownAvatarMode, 0);

        Utils::showDlgControl(hwndDlg, IDC_O_EXPLAINGLOBALNOTIFY, nen_options.bWindowCheck ? SW_SHOW : SW_HIDE);

        SendDlgItemMessage(hwndDlg, IDC_AUTOCLOSETABSPIN, UDM_SETRANGE, 0, MAKELONG(1000, 0));
        SendDlgItemMessage(hwndDlg, IDC_AUTOCLOSETABSPIN, UDM_SETPOS, 0, (LPARAM)cs->autoCloseSeconds);
        break;
    }

    case DM_SC_CONFIG: {
        LRESULT enable = (IsDlgButtonChecked(hwndDlg, IDC_O_ENABLESOUNDS) ? BST_CHECKED : BST_UNCHECKED);
        Utils::enableDlgControl(hwndDlg, IDC_O_SOUNDSINACTIVE, enable);
        Utils::enableDlgControl(hwndDlg, IDC_O_SOUNDSUNFOCUSED, enable);
        Utils::enableDlgControl(hwndDlg, IDC_O_SOUNDSMINIMIZED, enable);
        Utils::enableDlgControl(hwndDlg, IDC_O_SOUNDSFOCUSED, enable);
        return 0;
    }

    case DM_SC_BUILDLIST: {
        DWORD dwNewFlags = 0, dwNewFlagsEx = 0;
        TContainerSettings* cs = (TContainerSettings *)lParam;

        dwNewFlags = (IsDlgButtonChecked(hwndDlg, IDC_O_HIDETITLE) ? CNT_NOTITLE : 0) |
                     (IsDlgButtonChecked(hwndDlg, IDC_O_DONTREPORT) ? CNT_DONTREPORT : 0) |
                     (IsDlgButtonChecked(hwndDlg, IDC_O_NOTABS) ? CNT_HIDETABS : 0) |
                     (IsDlgButtonChecked(hwndDlg, IDC_O_STICKY) ? CNT_STICKY : 0) |
                     (IsDlgButtonChecked(hwndDlg, IDC_O_FLASHALWAYS) ? CNT_FLASHALWAYS : 0) |
                     (IsDlgButtonChecked(hwndDlg, IDC_O_FLASHNEVER) ? CNT_NOFLASH : 0) |
                     (IsDlgButtonChecked(hwndDlg, IDC_TRANSPARENCY) ? CNT_TRANSPARENCY : 0) |
                     (IsDlgButtonChecked(hwndDlg, IDC_DONTREPORTUNFOCUSED2) ? CNT_DONTREPORTUNFOCUSED : 0) |
                     (IsDlgButtonChecked(hwndDlg, IDC_DONTREPORTFOCUSED2) ? CNT_DONTREPORTFOCUSED : 0) |
                     (IsDlgButtonChecked(hwndDlg, IDC_ALWAYSPOPUPSINACTIVE) ? CNT_ALWAYSREPORTINACTIVE : 0) |
                     (IsDlgButtonChecked(hwndDlg, IDC_CNTNOSTATUSBAR) ? CNT_NOSTATUSBAR : 0) |
                     (IsDlgButtonChecked(hwndDlg, IDC_HIDEMENUBAR) ? CNT_NOMENUBAR : 0) |
                     (IsDlgButtonChecked(hwndDlg, IDC_HIDETOOLBAR) ? CNT_HIDETOOLBAR : 0) |
                     (IsDlgButtonChecked(hwndDlg, IDC_BOTTOMTOOLBAR) ? CNT_BOTTOMTOOLBAR : 0) |
                     (IsDlgButtonChecked(hwndDlg, IDC_UIDSTATUSBAR) ? CNT_UINSTATUSBAR : 0) |
                     (IsDlgButtonChecked(hwndDlg, IDC_USEGLOBALSIZE) ? CNT_GLOBALSIZE : 0) |
                     (IsDlgButtonChecked(hwndDlg, IDC_INFOPANEL) ? CNT_INFOPANEL : 0) |
                     (IsDlgButtonChecked(hwndDlg, IDC_O_ENABLESOUNDS) ? 0 : CNT_NOSOUND) |
                     (IsDlgButtonChecked(hwndDlg, IDC_AVATARSONTASKBAR) ? CNT_AVATARSONTASKBAR : 0) |
                     (IsDlgButtonChecked(hwndDlg, IDC_VERTICALMAX) ? CNT_VERTICALMAX : 0) |
                     (IsDlgButtonChecked(hwndDlg, IDC_AUTOSPLITTER) ? CNT_AUTOSPLITTER : 0) |
                     (CNT_NEWCONTAINERFLAGS);

        LRESULT iTabMode = SendDlgItemMessage(hwndDlg, IDC_TABMODE, CB_GETCURSEL, 0, 0);
        LRESULT iTabLayout = SendDlgItemMessage(hwndDlg, IDC_SBARLAYOUT, CB_GETCURSEL, 0, 0);

        dwNewFlagsEx = 0;

        if (iTabMode < 2)
            dwNewFlags = ((iTabMode == 1) ? (dwNewFlags | CNT_TABSBOTTOM) : (dwNewFlags & ~CNT_TABSBOTTOM));
        else {
            dwNewFlags &= ~CNT_TABSBOTTOM;
            dwNewFlagsEx = iTabMode == 2 ? TCF_SBARLEFT : TCF_SBARRIGHT;
        }

        dwNewFlagsEx |= ((IsDlgButtonChecked(hwndDlg, IDC_FLASHICON) ? TCF_FLASHICON : 0) |
                         (IsDlgButtonChecked(hwndDlg, IDC_FLASHLABEL) ? TCF_FLASHLABEL : 0) |
                         (IsDlgButtonChecked(hwndDlg, IDC_BUTTONTABS) ? TCF_FLAT : 0) |
                         (IsDlgButtonChecked(hwndDlg, IDC_CLOSEBUTTONONTABS) ? TCF_CLOSEBUTTON : 0) |
                         (IsDlgButtonChecked(hwndDlg, IDC_SINGLEROWTAB) ? TCF_SINGLEROWTABCONTROL : 0) |
                         (IsDlgButtonChecked(hwndDlg, IDC_O_SOUNDSMINIMIZED) ? CNT_EX_SOUNDS_MINIMIZED : 0) |
                         (IsDlgButtonChecked(hwndDlg, IDC_O_SOUNDSUNFOCUSED) ? CNT_EX_SOUNDS_UNFOCUSED : 0) |
                         (IsDlgButtonChecked(hwndDlg, IDC_O_SOUNDSFOCUSED) ? CNT_EX_SOUNDS_FOCUSED : 0) |
                         (IsDlgButtonChecked(hwndDlg, IDC_O_SOUNDSINACTIVE) ? CNT_EX_SOUNDS_INACTIVETABS : 0)
                        );

        /* bits 24 - 31 of dwFlagsEx hold the sidebar layout id */
        dwNewFlagsEx |= ((int)((iTabLayout << 24) & 0xff000000));

        if (IsDlgButtonChecked(hwndDlg, IDC_O_FLASHDEFAULT))
            dwNewFlags &= ~(CNT_FLASHALWAYS | CNT_NOFLASH);

        cs->dwFlags = dwNewFlags;
        cs->dwFlagsEx = dwNewFlagsEx;
        cs->autoCloseSeconds = (WORD)SendDlgItemMessage(hwndDlg, IDC_AUTOCLOSETABSPIN, UDM_GETPOS, 0, 0);
        break;
    }
    case WM_DESTROY: {
        pContainer->hWndOptions = 0;
        SetWindowLongPtr(hwndDlg, GWLP_USERDATA, 0);

        HFONT hFont = (HFONT)SendDlgItemMessage(hwndDlg, IDC_TITLEBOX, WM_GETFONT, 0, 0);
        DeleteObject(hFont);
        break;
    }
    }
    return FALSE;
}
Ejemplo n.º 2
0
LRESULT CALLBACK FromFileDLG(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) 
{
	HWND hWnd;
	static FINDREPLACE find;
	static char findbuf[256];
	static unsigned char *file;
	static HWND hTool, hClip, hStatus;
	static RECT rOld;
	CHARFORMAT2 chars;

	if (message == WM_FINDMSGSTRING)
	{
		FINDREPLACE *fr = (FINDREPLACE *)lParam;

		if (fr->Flags & FR_FINDNEXT)
		{
			HWND hRich = GetDlgItem(hDlg, IDC_TEXT);
			DWORD flags=0;
			FINDTEXTEX ft;
			CHARRANGE chrg;

			if (fr->Flags & FR_DOWN)
				flags |= FR_DOWN;
			if (fr->Flags & FR_MATCHCASE)
				flags |= FR_MATCHCASE;
			if (fr->Flags & FR_WHOLEWORD)
				flags |= FR_WHOLEWORD;
			ft.lpstrText = fr->lpstrFindWhat;
			SendMessage(hRich, EM_EXGETSEL, 0, (LPARAM)&chrg);
			if (flags & FR_DOWN)
			{
				ft.chrg.cpMin = chrg.cpMax;
				ft.chrg.cpMax = -1;
			}
			else
			{
				ft.chrg.cpMin = chrg.cpMin;
				ft.chrg.cpMax = -1;
			}
			if (SendMessage(hRich, EM_FINDTEXTEX, flags, (LPARAM)&ft) == -1)
				MessageBox(NULL, "Unreal has finished searching the document",
					"Find", MB_ICONINFORMATION|MB_OK);
			else
			{
				SendMessage(hRich, EM_EXSETSEL, 0, (LPARAM)&(ft.chrgText));
				SendMessage(hRich, EM_SCROLLCARET, 0, 0);
				SetFocus(hRich);
			}
		}
		return TRUE;
	}
	switch (message) 
	{
		case WM_INITDIALOG: 
		{
			int fd,len;
			unsigned char *buffer = '\0', *string = '\0';
			EDITSTREAM edit;
			StreamIO *stream = malloc(sizeof(StreamIO));
			unsigned char szText[256];
			struct stat sb;
			HWND hWnd = GetDlgItem(hDlg, IDC_TEXT), hTip;
			file = (unsigned char *)lParam;
			if (file)
				wsprintf(szText, "UnrealIRCd Editor - %s", file);
			else 
				strcpy(szText, "UnrealIRCd Editor - New File");
			SetWindowText(hDlg, szText);
			lpfnOldWndProc = (FARPROC)SetWindowLong(hWnd, GWL_WNDPROC, (DWORD)RESubClassFunc);
			hTool = DrawToolbar(hInst, hDlg);
			hStatus = DrawStatusbar(hInst, hDlg, IDC_STATUS);
			SendMessage(hWnd, EM_SETEVENTMASK, 0, (LPARAM)ENM_SELCHANGE);
			chars.cbSize = sizeof(CHARFORMAT2);
			chars.dwMask = CFM_FACE;
			strcpy(chars.szFaceName,"Fixedsys");
			SendMessage(hWnd, EM_SETCHARFORMAT, (WPARAM)SCF_ALL, (LPARAM)&chars);
			if ((fd = open(file, _O_RDONLY|_O_BINARY)) != -1) 
			{
				fstat(fd,&sb);
				/* Only allocate the amount we need */
				buffer = malloc(sb.st_size+1);
				buffer[0] = 0;
				len = read(fd, buffer, sb.st_size);
				buffer[len] = 0;
				len = CountRTFSize(buffer)+1;
				string = malloc(len);
				bzero(string,len);
				IRCToRTF(buffer,string);
				RTFBuf = string;
				len--;
				stream->size = &len;
				stream->buffer = &RTFBuf;
				edit.dwCookie = (UINT)stream;
				edit.pfnCallback = SplitIt;
				SendMessage(hWnd, EM_EXLIMITTEXT, 0, (LPARAM)0x7FFFFFFF);
				SendMessage(hWnd, EM_STREAMIN, (WPARAM)SF_RTF|SFF_PLAINRTF, (LPARAM)&edit);
				SendMessage(hWnd, EM_SETMODIFY, (WPARAM)FALSE, 0);
				SendMessage(hWnd, EM_EMPTYUNDOBUFFER, 0, 0);
				close(fd);
				RTFBuf = NULL;
				free(buffer);
				free(string);
				free(stream);
				hClip = SetClipboardViewer(hDlg);
				if (SendMessage(hWnd, EM_CANPASTE, 0, 0)) 
					SendMessage(hTool, TB_ENABLEBUTTON, (WPARAM)IDM_PASTE, (LPARAM)MAKELONG(TRUE,0));
				else
					SendMessage(hTool, TB_ENABLEBUTTON, (WPARAM)IDM_PASTE, (LPARAM)MAKELONG(FALSE,0));
				SendMessage(hTool, TB_ENABLEBUTTON, (WPARAM)IDM_UNDO, (LPARAM)MAKELONG(FALSE,0));
				wsprintf(szText, "Line: 1");
				SetWindowText(hStatus, szText);
			}
			return TRUE;
		}
		case WM_WINDOWPOSCHANGING:
		{
			GetClientRect(hDlg, &rOld);
			return FALSE;
		}
		case WM_SIZE:
		{
			DWORD new_width, new_height;
			HWND hRich;
			RECT rOldRich;
			DWORD old_width, old_height;
			DWORD old_rich_width, old_rich_height;
			if (hDlg == hFind)
				return FALSE;
			new_width =  LOWORD(lParam);
			new_height = HIWORD(lParam);
			hRich  = GetDlgItem(hDlg, IDC_TEXT);
			SendMessage(hStatus, WM_SIZE, 0, 0);
			SendMessage(hTool, TB_AUTOSIZE, 0, 0);
			old_width = rOld.right-rOld.left;
			old_height = rOld.bottom-rOld.top;
			new_width = new_width - old_width;
			new_height = new_height - old_height;
			GetWindowRect(hRich, &rOldRich);
			old_rich_width = rOldRich.right-rOldRich.left;
			old_rich_height = rOldRich.bottom-rOldRich.top;
			SetWindowPos(hRich, NULL, 0, 0, old_rich_width+new_width, 
				old_rich_height+new_height,
				SWP_NOMOVE|SWP_NOREPOSITION|SWP_NOZORDER);
			bzero(&rOld, sizeof(RECT));
			return TRUE;
		} 

		case WM_NOTIFY:
			switch (((NMHDR *)lParam)->code) 
			{
				case EN_SELCHANGE: 
				{
					HWND hWnd = GetDlgItem(hDlg, IDC_TEXT);
					DWORD start, end, currline;
					static DWORD prevline = 0;
					unsigned char buffer[512];
					chars.cbSize = sizeof(CHARFORMAT2);
					SendMessage(hWnd, EM_GETCHARFORMAT, (WPARAM)SCF_SELECTION, (LPARAM)&chars);
					if (chars.dwMask & CFM_BOLD && chars.dwEffects & CFE_BOLD)
						SendMessage(hTool, TB_CHECKBUTTON, (WPARAM)IDC_BOLD, (LPARAM)MAKELONG(TRUE,0));
					else
						SendMessage(hTool, TB_CHECKBUTTON, (WPARAM)IDC_BOLD, (LPARAM)MAKELONG(FALSE,0));
					if (chars.dwMask & CFM_UNDERLINE && chars.dwEffects & CFE_UNDERLINE)
						SendMessage(hTool, TB_CHECKBUTTON, (WPARAM)IDC_UNDERLINE, (LPARAM)MAKELONG(TRUE,0));
					else
						SendMessage(hTool, TB_CHECKBUTTON, (WPARAM)IDC_UNDERLINE, (LPARAM)MAKELONG(FALSE,0));
					SendMessage(hWnd, EM_GETSEL,(WPARAM)&start, (LPARAM)&end);
					if (start == end) 
					{
						SendMessage(hTool, TB_ENABLEBUTTON, (WPARAM)IDM_COPY, (LPARAM)MAKELONG(FALSE,0));
						SendMessage(hTool, TB_ENABLEBUTTON, (WPARAM)IDM_CUT, (LPARAM)MAKELONG(FALSE,0));
					}
					else 
					{
						SendMessage(hTool, TB_ENABLEBUTTON, (WPARAM)IDM_COPY, (LPARAM)MAKELONG(TRUE,0));
						SendMessage(hTool, TB_ENABLEBUTTON, (WPARAM)IDM_CUT, (LPARAM)MAKELONG(TRUE,0));
					}
					if (SendMessage(hWnd, EM_CANUNDO, 0, 0)) 
						SendMessage(hTool, TB_ENABLEBUTTON, (WPARAM)IDM_UNDO, (LPARAM)MAKELONG(TRUE,0));
					else
						SendMessage(hTool, TB_ENABLEBUTTON, (WPARAM)IDM_UNDO, (LPARAM)MAKELONG(FALSE,0));
					if (SendMessage(hWnd, EM_CANREDO, 0, 0)) 
						SendMessage(hTool, TB_ENABLEBUTTON, (WPARAM)IDM_REDO, (LPARAM)MAKELONG(TRUE,0));
					else
						SendMessage(hTool, TB_ENABLEBUTTON, (WPARAM)IDM_REDO, (LPARAM)MAKELONG(FALSE,0));
					currline = SendMessage(hWnd, EM_LINEFROMCHAR, (WPARAM)-1, 0);
					currline++;
					if (currline != prevline) 
					{
						wsprintf(buffer, "Line: %d", currline);
						SetWindowText(hStatus, buffer);
						prevline = currline;
					}
				return TRUE;
			}
			case TTN_GETDISPINFO: 
			{
				LPTOOLTIPTEXT lpttt = (LPTOOLTIPTEXT) lParam;
				lpttt->hinst = NULL;
				switch (lpttt->hdr.idFrom) 
				{
					case IDM_NEW:
						strcpy(lpttt->szText, "New");
						break;
					case IDM_SAVE:
						strcpy(lpttt->szText, "Save");
						break;
					case IDM_CUT:
						strcpy(lpttt->szText, "Cut");
						break;
					case IDM_COPY:
						strcpy(lpttt->szText, "Copy");
						break;
					case IDM_PASTE:
						strcpy(lpttt->szText, "Paste");
						break;
					case IDM_UNDO:
						strcpy(lpttt->szText, "Undo");
						break;
					case IDM_REDO:
						strcpy(lpttt->szText, "Redo");
						break;
					case IDC_BOLD:
						strcpy(lpttt->szText, "Bold");
						break;
					case IDC_UNDERLINE:
						strcpy(lpttt->szText, "Underline");
						break;
					case IDC_COLOR:
						strcpy(lpttt->szText, "Text Color");
						break;
					case IDC_BGCOLOR:
						strcpy(lpttt->szText, "Background Color");
						break;
					case IDC_GOTO:
						strcpy(lpttt->szText, "Goto");
						break;
					case IDC_FIND:
						strcpy(lpttt->szText, "Find");
						break;
				}
				return TRUE;
			}
			case NM_DBLCLK:
				DialogBox(hInst, "GOTO", hDlg, (DLGPROC)GotoDLG);
				return (TRUE);
		}
				
				return (TRUE);
		case WM_COMMAND:
			if (LOWORD(wParam) == IDC_BOLD) 
			{
				hWnd = GetDlgItem(hDlg, IDC_TEXT);
				if (SendMessage(hTool, TB_ISBUTTONCHECKED, (WPARAM)IDC_BOLD, (LPARAM)0) != 0) 
				{
					chars.cbSize = sizeof(CHARFORMAT2);
					chars.dwMask = CFM_BOLD;
					chars.dwEffects = CFE_BOLD;
					SendMessage(hWnd, EM_SETCHARFORMAT, (WPARAM)SCF_SELECTION, (LPARAM)&chars);
					SendMessage(hWnd, EM_HIDESELECTION, 0, 0);
					SetFocus(hWnd);
				}
				else 
				{
					chars.cbSize = sizeof(CHARFORMAT2);
					chars.dwMask = CFM_BOLD;
					chars.dwEffects = 0;
					SendMessage(hWnd, EM_SETCHARFORMAT, (WPARAM)SCF_SELECTION, (LPARAM)&chars);
					SendMessage(hWnd, EM_HIDESELECTION, 0, 0);
					SetFocus(hWnd);
				}
				return TRUE;
			}
			else if (LOWORD(wParam) == IDC_UNDERLINE) 
			{
				hWnd = GetDlgItem(hDlg, IDC_TEXT);
				if (SendMessage(hTool, TB_ISBUTTONCHECKED, (WPARAM)IDC_UNDERLINE, (LPARAM)0) != 0) 
				{
					chars.cbSize = sizeof(CHARFORMAT2);
					chars.dwMask = CFM_UNDERLINETYPE;
					chars.bUnderlineType = CFU_UNDERLINE;
					SendMessage(hWnd, EM_SETCHARFORMAT, (WPARAM)SCF_SELECTION, (LPARAM)&chars);
					SendMessage(hWnd, EM_HIDESELECTION, 0, 0);
					SetFocus(hWnd);
				}
				else 
				{
					chars.cbSize = sizeof(CHARFORMAT2);
					chars.dwMask = CFM_UNDERLINETYPE;
					chars.bUnderlineType = CFU_UNDERLINENONE;
					SendMessage(hWnd, EM_SETCHARFORMAT, (WPARAM)SCF_SELECTION, (LPARAM)&chars);
					SendMessage(hWnd, EM_HIDESELECTION, 0, 0);
					SetFocus(hWnd);
				}
				return TRUE;
			}
			if (LOWORD(wParam) == IDC_COLOR) 
			{
				DialogBoxParam(hInst, "Color", hDlg, (DLGPROC)ColorDLG, (LPARAM)WM_USER+10);
				return 0;
			}
			if (LOWORD(wParam) == IDC_BGCOLOR)
			{
				DialogBoxParam(hInst, "Color", hDlg, (DLGPROC)ColorDLG, (LPARAM)WM_USER+11);
				return 0;
			}
			if (LOWORD(wParam) == IDC_GOTO)
			{
				DialogBox(hInst, "GOTO", hDlg, (DLGPROC)GotoDLG);
				return 0;
			}
			if (LOWORD(wParam) == IDC_FIND)
			{
				static FINDREPLACE fr;
				bzero(&fr, sizeof(FINDREPLACE));
				fr.lStructSize = sizeof(FINDREPLACE);
				fr.hwndOwner = hDlg;
				fr.lpstrFindWhat = findbuf;
				fr.wFindWhatLen = 255;
				hFind = FindText(&fr);
				return 0;
			}
				
			hWnd = GetDlgItem(hDlg, IDC_TEXT);
			if (LOWORD(wParam) == IDM_COPY) 
			{
				SendMessage(hWnd, WM_COPY, 0, 0);
				return 0;
			}
			if (LOWORD(wParam) == IDM_SELECTALL) 
			{
				SendMessage(hWnd, EM_SETSEL, 0, -1);
				return 0;
			}
			if (LOWORD(wParam) == IDM_PASTE) 
			{
				SendMessage(hWnd, WM_PASTE, 0, 0);
				return 0;
			}
			if (LOWORD(wParam) == IDM_CUT) 
			{
				SendMessage(hWnd, WM_CUT, 0, 0);
				return 0;
			}
			if (LOWORD(wParam) == IDM_UNDO) 
			{
				SendMessage(hWnd, EM_UNDO, 0, 0);
				return 0;
			}
			if (LOWORD(wParam) == IDM_REDO) 
			{
				SendMessage(hWnd, EM_REDO, 0, 0);
				return 0;
			}
			if (LOWORD(wParam) == IDM_DELETE) 
			{
				SendMessage(hWnd, WM_CLEAR, 0, 0);
				return 0;
			}
			if (LOWORD(wParam) == IDM_SAVE) 
			{
				int fd;
				EDITSTREAM edit;
				OPENFILENAME lpopen;
				if (!file) 
				{
					unsigned char path[MAX_PATH];
					path[0] = '\0';
					bzero(&lpopen, sizeof(OPENFILENAME));
					lpopen.lStructSize = sizeof(OPENFILENAME);
					lpopen.hwndOwner = hDlg;
					lpopen.lpstrFilter = NULL;
					lpopen.lpstrCustomFilter = NULL;
					lpopen.nFilterIndex = 0;
					lpopen.lpstrFile = path;
					lpopen.nMaxFile = MAX_PATH;
					lpopen.lpstrFileTitle = NULL;
					lpopen.lpstrInitialDir = DPATH;
					lpopen.lpstrTitle = NULL;
					lpopen.Flags = (OFN_ENABLESIZING|OFN_NONETWORKBUTTON|
							OFN_OVERWRITEPROMPT);
					if (GetSaveFileName(&lpopen))
						file = path;
					else
						break;
				}
				fd = open(file, _O_TRUNC|_O_CREAT|_O_WRONLY|_O_BINARY,_S_IWRITE);
				edit.dwCookie = 0;
				edit.pfnCallback = BufferIt;
				SendMessage(GetDlgItem(hDlg, IDC_TEXT), EM_STREAMOUT, (WPARAM)SF_RTF|SFF_PLAINRTF, (LPARAM)&edit);
				RTFToIRC(fd, RTFBuf, strlen(RTFBuf));
				free(RTFBuf);
				RTFBuf = NULL;
				SendMessage(GetDlgItem(hDlg, IDC_TEXT), EM_SETMODIFY, (WPARAM)FALSE, 0);
	
				return 0;
			}
			if (LOWORD(wParam) == IDM_NEW) 
			{
				unsigned char text[1024];
				BOOL newfile = FALSE;
				int ans;
				if (SendMessage(GetDlgItem(hDlg, IDC_TEXT), EM_GETMODIFY, 0, 0) != 0) 
				{
					sprintf(text, "The text in the %s file has changed.\r\n\r\nDo you want to save the changes?", file ? file : "new");
					ans = MessageBox(hDlg, text, "UnrealIRCd", MB_YESNOCANCEL|MB_ICONWARNING);
					if (ans == IDNO)
						newfile = TRUE;
					if (ans == IDCANCEL)
						return TRUE;
					if (ans == IDYES) 
					{
						SendMessage(hDlg, WM_COMMAND, MAKEWPARAM(IDM_SAVE,0), 0);
						newfile = TRUE;
					}
				}
				else
					newfile = TRUE;
				if (newfile == TRUE) 
				{
					unsigned char szText[256];
					file = NULL;
					strcpy(szText, "UnrealIRCd Editor - New File");
					SetWindowText(hDlg, szText);
					SetWindowText(GetDlgItem(hDlg, IDC_TEXT), NULL);
				}
				break;
			}
			break;
		case WM_USER+10: 
		{
			HWND hWnd = GetDlgItem(hDlg, IDC_TEXT);
			EndDialog((HWND)lParam, TRUE);
			chars.cbSize = sizeof(CHARFORMAT2);
			chars.dwMask = CFM_COLOR;
			chars.crTextColor = (COLORREF)wParam;
			SendMessage(hWnd, EM_SETCHARFORMAT, (WPARAM)SCF_SELECTION, (LPARAM)&chars);
			SendMessage(hWnd, EM_HIDESELECTION, 0, 0);
			SetFocus(hWnd);
			break;
		}
		case WM_USER+11: 
		{
			HWND hWnd = GetDlgItem(hDlg, IDC_TEXT);
			EndDialog((HWND)lParam, TRUE);
			chars.cbSize = sizeof(CHARFORMAT2);
			chars.dwMask = CFM_BACKCOLOR;
			chars.crBackColor = (COLORREF)wParam;
			SendMessage(hWnd, EM_SETCHARFORMAT, (WPARAM)SCF_SELECTION, (LPARAM)&chars);
			SendMessage(hWnd, EM_HIDESELECTION, 0, 0);
			SetFocus(hWnd);
			break;
		}
		case WM_CHANGECBCHAIN:
			if ((HWND)wParam == hClip)
				hClip = (HWND)lParam;
			else
				SendMessage(hClip, WM_CHANGECBCHAIN, wParam, lParam);
			break;
		case WM_DRAWCLIPBOARD:
			if (SendMessage(GetDlgItem(hDlg, IDC_TEXT), EM_CANPASTE, 0, 0)) 
				SendMessage(hTool, TB_ENABLEBUTTON, (WPARAM)IDM_PASTE, (LPARAM)MAKELONG(TRUE,0));
			else
				SendMessage(hTool, TB_ENABLEBUTTON, (WPARAM)IDM_PASTE, (LPARAM)MAKELONG(FALSE,0));
			SendMessage(hClip, WM_DRAWCLIPBOARD, wParam, lParam);
			break;
		case WM_CLOSE: 
		{
			unsigned char text[256];
			int ans;
			if (SendMessage(GetDlgItem(hDlg, IDC_TEXT), EM_GETMODIFY, 0, 0) != 0) 
			{
				sprintf(text, "The text in the %s file has changed.\r\n\r\nDo you want to save the changes?", file ? file : "new");
				ans = MessageBox(hDlg, text, "UnrealIRCd", MB_YESNOCANCEL|MB_ICONWARNING);
				if (ans == IDNO)
					EndDialog(hDlg, TRUE);
				if (ans == IDCANCEL)
					return TRUE;
				if (ans == IDYES) 
				{
					SendMessage(hDlg, WM_COMMAND, MAKEWPARAM(IDM_SAVE,0), 0);
					EndDialog(hDlg, TRUE);
				}
			}
			else
				EndDialog(hDlg, TRUE);
			break;
		}
		case WM_DESTROY:
			ChangeClipboardChain(hDlg, hClip);
			break;
	}

	return FALSE;
}
// subclass for dialog item
LRESULT CALLBACK InternalEmulatorInputDialogProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR dwRefData) {
	auto d = (DialogData *)dwRefData;
	switch (uMsg) {
	case WM_PAINT: {
		HDC				hdc;
		PAINTSTRUCT		ps;
		HANDLE			hOldFont;
		TCHAR			szText[200];
		RECT			rect;
		SIZE			sz;
		int				x, y;

		// Get a device context for this window
		hdc = BeginPaint(hWnd, &ps);

		auto hFont = CreateFont(14, 0, 0, 0, FW_DONTCARE, FALSE, FALSE, FALSE, DEFAULT_CHARSET, OUT_OUTLINE_PRECIS,
			CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, VARIABLE_PITCH, TEXT("Arial"));
		SelectObject(hdc, hFont);

		// Set the text colours
		SetTextColor(hdc, d->fgColor);
		SetBkColor(hdc, d->bgColor);

		// Find the text to draw
		GetWindowText(hWnd, szText, sizeof(szText));

		// Work out where to draw
		GetClientRect(hWnd, &rect);

		// Find out how big the text will be
		GetTextExtentPoint32(hdc, szText, lstrlen(szText), &sz);

		// Center the text
		x = (rect.right - sz.cx) / 2;
		y = (rect.bottom - sz.cy) / 2;

		// Draw the text
		ExtTextOut(hdc, x, y, ETO_OPAQUE, &rect, szText, lstrlen(szText), 0);

		DeleteObject(hFont);

		EndPaint(hWnd, &ps);

		break;
	}
	case WM_KEYDOWN: {
		if (LOWORD(wParam) == VK_DELETE) {
			d->setting.type = InternalEmulatorInputType::KEY;
			d->setting.value = 0;

			d->fgColor = RGB(255, 0, 0);
			d->bgColor = RGB(0, 255, 0);

			auto s = GetButtonText(d);
			SetWindowText(hWnd, s.c_str());
		}
		else if (IsValidKey(LOWORD(wParam))) {
			//d->fgColor = GetSysColor(COLOR_WINDOWTEXT);
			//d->bgColor = GetSysColor(COLOR_WINDOW);

			d->setting.type = InternalEmulatorInputType::KEY;
			d->setting.value = lParam;

			d->fgColor = RGB(255, 0, 0);
			d->bgColor = RGB(0, 255, 0);

			auto s = GetButtonText(d);
			SetWindowText(hWnd, s.c_str());
		}
		else {
			d->fgColor = RGB(0, 255, 0);
			d->bgColor = RGB(255, 0, 0);
		}
		InvalidateRect(GetParent(hWnd), NULL, false);

		break;
	}
	case WM_TIMER: {
		if (hWnd == GetFocus()) {
			if (JoystickPoll(GetParent(hWnd), d)) {
				//d->fgColor = GetSysColor(COLOR_WINDOWTEXT);
				//d->bgColor = GetSysColor(COLOR_WINDOW);

				auto s = GetButtonText(d);
				SetWindowText(hWnd, s.c_str());
				InvalidateRect(GetParent(hWnd), NULL, false);
			}
		}
		SetTimer(hWnd, 747, 125, NULL);
		break;
	}
	case WM_CHAR: {
		break;
	}
	case WM_SETFOCUS: {
		if (!d->timerActive) {
			SetTimer(hWnd, 777, 125, NULL);
			d->timerActive = true;
		}
		d->fgColor = RGB(255, 0, 0);
		d->bgColor = RGB(0, 255, 0);
		InvalidateRect(GetParent(hWnd), NULL, false);
		break;
	}
	case WM_KILLFOCUS: {
		d->fgColor = GetSysColor(COLOR_WINDOWTEXT);
		d->bgColor = GetSysColor(COLOR_WINDOW);
		InvalidateRect(GetParent(hWnd), NULL, false);
		break;
	}
	default:
		return DefSubclassProc(hWnd, uMsg, wParam, lParam);
	}
	return 0;
}
Ejemplo n.º 4
0
bool CACEdit::HandleKey(UINT nChar, bool m_bFromChild)
{
	if (nChar == VK_ESCAPE ||nChar == VK_RETURN)
	{
		m_Liste.ShowWindow(false);
		return true;
	}

	if (nChar == VK_DOWN || nChar == VK_UP 
		|| nChar == VK_PRIOR || nChar == VK_NEXT
		|| nChar == VK_HOME || nChar == VK_END) 
	{
		/*
		** Vers. 1.1
		** NEW: _MODE_CURSOR_O_LIST_
		*/
		if(!m_Liste.IsWindowVisible() && (m_iMode & _MODE_CURSOR_O_LIST_))
		{
			GetWindowText(m_EditText);
			if(m_EditText.IsEmpty())
			{
				m_Liste.CopyList();
				return true;
			}	
		}

		if(m_Liste.IsWindowVisible())
		{
			int pos;


			if(m_iMode & _MODE_STANDARD_ 
				|| m_iMode & _MODE_FILESYSTEM_
				|| m_iMode & _MODE_FS_START_DIR_)
			{
				m_CursorMode = true;

				if(!m_bFromChild)
					m_EditText = m_Liste.GetNextString(nChar);
				else
					m_EditText = m_Liste.GetString();

				if(m_iMode & _MODE_FILESYSTEM_)
				{
					if (m_EditText.Right(1) == _T('\\'))
						m_EditText = m_EditText.Mid(0,m_EditText.GetLength()-1);
				}

				m_Liste.SelectItem(-1);
				SetWindowText(m_EditText);
				pos = m_EditText.GetLength();

				if(m_iType == _COMBOBOX_)
				{
					m_pEdit->SetSel(pos,pos,true);
					m_pEdit->SetModify(true);
				}

				if(m_iType == _EDIT_)
				{
					((CEdit*)this)->SetSel(pos,pos,true);
					((CEdit*)this)->SetModify(true);
				}

				GetParent()->SendMessage(ENAC_UPDATE, WM_KEYDOWN, GetDlgCtrlID());
				m_CursorMode = false;
				return true;
			}

			if(m_iMode & _MODE_SEPARATION_)
			{
				CString m_Text,m_Left,m_Right;
				int left,right,pos=0,len;

				m_CursorMode = true;

				GetWindowText(m_EditText);

				if(m_iType == _EDIT_)
					pos = LOWORD(((CEdit*)this)->CharFromPos(GetCaretPos()));

				if(m_iType == _COMBOBOX_)
					pos = m_pEdit->CharFromPos(m_pEdit->GetCaretPos());

				left  = FindSepLeftPos(pos-1,true);
				right = FindSepRightPos(pos);

				m_Text = m_EditText.Left(left);

				if(!m_bFromChild)
					m_Text += m_Liste.GetNextString(nChar);
				else
					m_Text += m_Liste.GetString();

				m_Liste.SelectItem(-1);
				m_Text += m_EditText.Mid(right);
				len = m_Liste.GetString().GetLength();

				m_Text += this->m_SeparationStr;

				SetWindowText(m_Text);
				GetParent()->SendMessage(ENAC_UPDATE, WM_KEYDOWN, GetDlgCtrlID());

				right = FindSepLeftPos2(pos-1);
				left -= right;
				len += right;

				left+=m_SeparationStr.GetLength();

				if(m_iType == _EDIT_)
				{
					((CEdit*)this)->SetModify(true);
					((CEdit*)this)->SetSel(left+len,left+len,false);
				}

				if(m_iType == _COMBOBOX_)
				{
					m_pEdit->SetModify(true);
					m_pEdit->SetSel(left,left+len,true);
				}

				m_CursorMode = false;
				return true;
			}
		}
	}
	return false;
}
Ejemplo n.º 5
0
CRBATTLE_API int crbatTest(void)
{
	D3DTLVERTEX ver[4];

	ver[0].sx = 50.0f;ver[0].sy = 50.0f;ver[0].sz = 0.0f;
	ver[0].tu = 0.0f;ver[0].tv = 0.0f;

	ver[1].sx = 110.0f;ver[1].sy = 50.0f;ver[1].sz = 0.0f;
	ver[1].tu = 1.0f;ver[1].tv = 0.0f;

	ver[2].sx = 50.0f;ver[2].sy = 410.0f;ver[2].sz = 0.0f;
	ver[2].tu = 0.0f;ver[2].tv = 1.0f;

	ver[3].sx = 110.0f;ver[3].sy = 410.0f;ver[3].sz = 0.0f;
	ver[3].tu = 1.0f;ver[3].tv = 1.0f;
	for(int a = 0;a < 4;a ++){
		ver[a].dcColor = RGBA_MAKE(255,255,255 / (a + 1),255);
		ver[a].dvRHW = RGBA_MAKE(255,0,0,0);
	}

//	int x,y;
	float sx = 6,sy = -5,sz = 3;
	eiD3DMatrix matWorld,matProjection;
	float AddWorld = 0.0f,Angle = ANGLE(90),rotate;
	eistr s[100];


	int debug_time = GetTickCount(),frame;

	ei->Get();

	pViewport->SetRect(32,32,256 + 32,256 + 32);
	pViewport->SetRect(32,32,640 - 64,256);
//	pViewport->SetRect(0,0,640,480);
	pViewport->Set();
	eid3d->SetAmbientLight(RGBA_MAKE(255,255,255,255));

	frame = 0;

	crbaseClearScreen();
	crbatShowStatus();
//	crbatSetViewMode(BATTLE_VIEWMODE_DOUBLE);
//	crbatSetViewMode(BATTLE_VIEWMODE_HALF);
	crbatSetCamera(
		1,
		-5.0f,4.0f,-5.0f,
		15.0f,0.0f,15.0f,
		0.0f);

	while(!ei->Input[0].Button[0] && !ei->Escape){
		ei->Get();

		if(ei->Input[0].Button[1]){
			sz += (float)(1.0 * AddWorld);
		}
		if(ei->Input[0].Button[2]){
			sz -= (float)(1.0 * AddWorld);
		}

		if(ei->Input[0].Left){
			Angle += (float)(0.5f * AddWorld);
		} else if(ei->Input[0].Right){
			Angle -= (float)(0.5f * AddWorld);
		}
		if(Angle > PI * 2.0f)
			Angle = 0.0f;
		if(Angle < 0.0f)
			Angle = PI * 2.0f;
		rotate = 0.0f;

		if(ei->Input[0].Up){
			sx += (float)(cos(Angle) * 1.0f * AddWorld);
			sy += (float)(sin(Angle) * 1.0f * AddWorld);
		} else if(ei->Input[0].Down){
			sx -= (float)(cos(Angle) * 1.0f * AddWorld);
			sy -= (float)(sin(Angle) * 1.0f * AddWorld);
		}

		crbatSetCamera(
			0,
			sx,sy,sz,
			(float)(sx + (cos(Angle) * 10.0f)),
			(float)(sy + (sin(Angle) * 10.0f)),
			(float)0.0f,
			rotate);
		crbatSetCamera(
			1,
			sx,sy,sz,
			(float)(sx + (cos(Angle) * 10.0f)),
			(float)(sy + (sin(Angle) * 10.0f)),
			(float)0.0f,
			rotate);

		et->Reset();
//---デバッグ計測用--------------------
		if(GetTickCount() - debug_time >= 1000){
			debug_time= GetTickCount();
			sprintf(s,"%d",frame);
			SetWindowText(ew->hwnd,s);
			frame = 0;
		}
		frame ++;
//		sprintf(s,"%f",BattleView[0].Angle);
//		SetWindowText(ew->hwnd,s);
//-------------------------------------
		crbatClearDrawingList();
		crbatAddDrawingListAll();
/*		crbatAddDrawingList(&pBtChara[0]);
		crbatAddDrawingList(&pBtChara[1]);
		crbatAddDrawingList(&pBtChara[2]);
		crbatAddDrawingList(&pBtChara[5]);
		crbatAddDrawingList(&pBtChara[6]);*/
		crbatDrawScene();

//		{
//			RECT rect = {32,32,640 - 32,256 + 32};
//			ew->lpCell[1]->SetClipingRect(&rect);
//			crbatPut3DCell(&BattleCharaCell[0],128.0f,0.0f,128.0f,0.50f);
//			crbatPut3DCell(&BattleCharaCell[20],68.0f,0.0f,198.0f,0.50f);
//			crbatPut3DCell(&BattleCharaCell[40],228.0f,0.0f,32.0f,0.50f);
//			SetRect(&rect,0,0,640,480);
//			ew->lpCell[1]->SetClipingRect(&rect);
//		}
		//---フリップ
//		ew->Flip();
		ew->Refresh();
		if(!eiGetFullScreen()){
//			et->Wait(1);
		}

		//---進める時間
		AddWorld = (float)et->Get() / 100.0f;

	}

	return 1;
}
Ejemplo n.º 6
0
	// реакция окна ввода даты на сообщение WM_COMMAND
	LRESULT CALLBACK tagMAINWINDOW::STW_WM_COMMAND_reaction(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
	{
		int wmId    = LOWORD(wParam);
		int wmEvent = HIWORD(wParam);
		switch (wmId)
		{
////////////
		case STW_Ok_ID:
			CloseWindow(hWnd);
			if(stwy)	SetWindowText(this->StYearNum,	lpchy);
			if(stwm)	SetWindowText(this->StMonthNum,	lpchm);
			if(stwd)	SetWindowText(this->StDayNum,	lpchd);
			if(stwh)	SetWindowText(this->StHourNum,	lpchh);
			SetNewDate = true;
			ZeroMemory(KeyFocusSTW,sizeof(KeyFocusSTW));
			break;
		case STW_Cn_ID:
			pary = parm = pard = parh = 0;
			CloseWindow(hWnd);
			ZeroMemory(KeyFocusSTW,sizeof(KeyFocusSTW));
			break;
////////////
		case STW_Y_ID:
			switch(wmEvent)
			{
			case EN_SETFOCUS:
				GetWindowText((HWND)lParam, lpchy, 20);
				for(lpchiter = lpchy;	*lpchiter > 47 && *lpchiter < 58 ;	lpchiter ++);
				*lpchiter = L'\0';
				SetWindowText ((HWND)lParam, lpchy);
				KeyFocusSTW[0] = true;
				break;
			case EN_KILLFOCUS:
				GetWindowText((HWND)lParam, lpchy, 20);
				for(lpchiter = lpchy;	*lpchiter > 47 && *lpchiter < 58 ;	lpchiter ++);
				*lpchiter = L'\0';
				pary = _wtoi(lpchy);
				stwy = true;
				swprintf_s(lpch, L"%d год", pary);
				SetWindowText((HWND)lParam, lpch);
				KeyFocusSTW[0] = false;
				break;
			case EN_CHANGE:
				break;
			default:
				return DefWindowProc(hWnd, message, wParam, lParam);
			}
			break;
		case STW_M_ID:
			switch(wmEvent)
			{
			case EN_SETFOCUS:
				GetWindowText((HWND)lParam,lpchm,20);
				for(lpchiter=lpchm;	*lpchiter>47 && *lpchiter<58 ;	lpchiter++);
				*lpchiter=L'\0';
				SetWindowText((HWND)lParam,lpchm);
				KeyFocusSTW[1] = true;
				break;
			case EN_KILLFOCUS:
				GetWindowText((HWND)lParam,lpchm,20);
				for(lpchiter=lpchm;	*lpchiter>47 && *lpchiter<58 ;	lpchiter++);
				*lpchiter=L'\0';
				parm = _wtoi(lpchm);
				stwm = true;
				swprintf_s(lpch,L"%d мес",parm);
				SetWindowText((HWND)lParam,lpch);
				KeyFocusSTW[1] = false;
				break;
			case EN_CHANGE:
				GetWindowText((HWND)lParam,lpchm,20);
				for(lpchiter=lpchm;	*lpchiter>47 && *lpchiter<58 ;	lpchiter++);
				*lpchiter=L'\0';
				parm = _wtoi(lpchm);
				if(parm>12)	SetWindowText((HWND)lParam,L"12");
				if(parm<1)	SetWindowText((HWND)lParam,L"01");
				break;
			default:
				return DefWindowProc(hWnd, message, wParam, lParam);
			}
			break;
		case STW_D_ID:
			switch(wmEvent)
			{
			case EN_SETFOCUS:
				GetWindowText((HWND)lParam,lpchd,20);
				for(lpchiter=lpchd;	*lpchiter>47 && *lpchiter<58 ;	lpchiter++);
				*lpchiter=L'\0';
				SetWindowText((HWND)lParam,lpchd);
				KeyFocusSTW[2] = true;
				break;
			case EN_KILLFOCUS:
				GetWindowText((HWND)lParam,lpchd,20);
				for(lpchiter=lpchd;	*lpchiter>47 && *lpchiter<58 ;	lpchiter++);
				*lpchiter=L'\0';
				pard= _wtoi(lpchd);
				stwd = true;
				swprintf_s(lpch,L"%d день",pard);
				SetWindowText((HWND)lParam,lpch);
				KeyFocusSTW[2] = false;
				break;
			case EN_CHANGE:
				GetWindowText((HWND)lParam,lpchd,20);
				for(lpchiter=lpchd;	*lpchiter>47 && *lpchiter<58 ;	lpchiter++);
				*lpchiter=L'\0';
				pard = _wtoi(lpchd);
				if(pard>31)SetWindowText((HWND)lParam,L"31");
				if(pard<1)SetWindowText((HWND)lParam,L"01");
				break;
			default:
				return DefWindowProc(hWnd, message, wParam, lParam);
			}
			break;
		case STW_H_ID:
			switch(wmEvent)
			{
			case EN_SETFOCUS:
				GetWindowText((HWND)lParam,lpchh,20);
				for(lpchiter=lpchh;	*lpchiter>47 && *lpchiter<58;	lpchiter++);
				*lpchiter=L'\0';
				SetWindowText((HWND)lParam,lpchh);
				KeyFocusSTW[3] = true;
				break;
			case EN_KILLFOCUS:
				GetWindowText((HWND)lParam,lpchh,20);
				for(lpchiter=lpchh;	*lpchiter>47 && *lpchiter<58 ;	lpchiter++);
				*lpchiter=L'\0';
				parh = _wtoi(lpchh);
				stwh = true;
				swprintf_s(lpch,L"%d час",parh);
				SetWindowText((HWND)lParam,lpch);
				KeyFocusSTW[3] = false;
				break;
			case EN_CHANGE:
				GetWindowText((HWND)lParam,lpchd,20);
				for(lpchiter=lpchd;	*lpchiter>47 && *lpchiter<58 ;	lpchiter++);
				*lpchiter=L'\0';
				pard = _wtoi(lpchd);
				if(pard>23)SetWindowText((HWND)lParam,L"23");
				if(pard<0)SetWindowText((HWND)lParam,L"00");
				break;
			default:
				return DefWindowProc(hWnd, message, wParam, lParam);
			}
			break;
///////////
		default:
			return DefWindowProc(hWnd, message, wParam, lParam);
		}
		return 0;
	}
Ejemplo n.º 7
0
/* This function handles the WM_INITDIALOG message.
 */
BOOL FASTCALL ChangeDir_OnInitDialog( HWND hwnd, HWND hwndFocus, LPARAM lParam )
{
#ifndef WIN32
   HINSTANCE hinstNetDriver;
#endif
   LPCHGDIR lpChgDir;
   int iDrive;

   /* Set the current directory value
    */
   lpChgDir = (LPCHGDIR)lParam;
   if( *lpChgDir->szPath )
      {
      Edit_SetText( GetDlgItem( hwnd, IDD_EDIT ), lpChgDir->szPath );
      lstrcpy( szCurDir, lpChgDir->szPath );
      if( szCurDir[ 1 ] == ':' )
         iDrive = ( toupper( *szCurDir ) - 'A' ) + 1;
      else
         iDrive = _getdrive();
      }
   else
      {
      Amdir_GetCurrentDirectory( szCurDir, _MAX_PATH );
      iDrive = _getdrive();
      }

   /* Show the Network button if we're running WorkGroups
    * or a similiar networking O/S.
    */
#ifdef WIN32
   ShowWindow( GetDlgItem( hwnd, IDD_NETWORK ), SW_SHOW );
#else
   hinstNetDriver = (HINSTANCE)WNetGetCaps( 0xFFFF );
   if( hinstNetDriver )
      {
      LPWNETSERVERBROWSEDIALOG lpDialogAPI;

      lpDialogAPI = (LPWNETSERVERBROWSEDIALOG)GetProcAddress( hinstNetDriver, (LPSTR)ORD_WNETSERVERBROWSEDIALOG);
      if( lpDialogAPI != NULL )
         ShowWindow( GetDlgItem( hwnd, IDD_NETWORK ), SW_SHOW );
      }
#endif

   /* Set window title
    */
   if( *lpChgDir->szTitle )
      SetWindowText( hwnd, lpChgDir->szTitle );

   /* Set the prompt title
    */
   if( *lpChgDir->szPrompt )
      SetWindowText( GetDlgItem( hwnd, IDD_PROMPT ), lpChgDir->szPrompt );

   /* Initialise the drive and directory lists
    */
   DriveListInitialize( GetDlgItem( hwnd, IDD_DRIVELIST ), GetDlgItem( hwnd, IDD_TEMPLIST ), iDrive );
   DirectoryListInitialize( GetDlgItem( hwnd, IDD_DIRECTORYLIST ), GetDlgItem( hwnd, IDD_TEMPLIST), szCurDir );
   AnsiLower( szCurDir );

   /* Remember the current drive and directory
    */
   Amdir_GetCurrentDirectory( szDefDir, _MAX_PATH );
   iCurDrive = _getdrive();
   if( iDrive != iCurDrive )
      _chdrive( iDrive );
   if( strcmp( szDefDir, szCurDir ) != 0 )
      _chdir( szCurDir );

   /* Disable OK if directory blank
    */
   EnableControl( hwnd, IDOK, Edit_GetTextLength( GetDlgItem( hwnd, IDD_EDIT ) ) > 0 );

   /* Remember pointer to directory
    */
   SetWindowLong( hwnd, DWL_USER, lParam );
   return( TRUE );
}
Ejemplo n.º 8
0
BOOL CALLBACK ExpandVolProgressDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
	static EXPAND_VOL_THREAD_PARAMS *pProgressDlgParam;
	static BOOL bVolTransformStarted = FALSE;
	static BOOL showRandPool = TRUE;

	WORD lw = LOWORD (wParam);

	switch (msg)
	{
	case WM_INITDIALOG:
		{
			char szOldHostSize[512], szNewHostSize[512];

			pProgressDlgParam = (EXPAND_VOL_THREAD_PARAMS*)lParam;
			bVolTransformStarted = FALSE;
			showRandPool = TRUE;

			hCurPage = hwndDlg;
			nPbar = IDC_PROGRESS_BAR;

			GetSpaceString(szOldHostSize,sizeof(szOldHostSize),pProgressDlgParam->oldSize,pProgressDlgParam->bIsDevice);
			GetSpaceString(szNewHostSize,sizeof(szNewHostSize),pProgressDlgParam->newSize,pProgressDlgParam->bIsDevice);

			SetWindowText (GetDlgItem (hwndDlg, IDC_EXPAND_VOLUME_OLDSIZE), szOldHostSize);
			SetWindowText (GetDlgItem (hwndDlg, IDC_EXPAND_VOLUME_NEWSIZE), szNewHostSize);
			SetWindowText (GetDlgItem (hwndDlg, IDC_EXPAND_VOLUME_NAME), pProgressDlgParam->szVolumeName);
			SetWindowText (GetDlgItem (hwndDlg, IDC_EXPAND_FILE_SYSTEM), szFileSystemStr[pProgressDlgParam->FileSystem]);
			SetWindowText (GetDlgItem (hwndDlg, IDC_EXPAND_VOLUME_INITSPACE), pProgressDlgParam->bInitFreeSpace?"Yes":"No");

			SendMessage (GetDlgItem (hwndDlg, IDC_BOX_STATUS), WM_SETFONT, (WPARAM) hBoldFont, (LPARAM) TRUE);

			SendMessage (GetDlgItem (hwndDlg, IDC_RANDOM_BYTES), WM_SETFONT, (WPARAM) hFixedDigitFont, (LPARAM) TRUE);

			// set status text
			if ( !pProgressDlgParam->bInitFreeSpace && pProgressDlgParam->bIsLegacy )
			{
				showRandPool = FALSE;
				EnableWindow (GetDlgItem (hwndDlg, IDC_DISPLAY_POOL_CONTENTS), FALSE);
				EnableWindow (GetDlgItem (hwndDlg, IDC_RANDOM_BYTES), FALSE);
				SetDlgItemText(hwndDlg, IDC_BOX_STATUS, "Click 'Continue' to expand the volume.");
			}
			else
			{
				SetDlgItemText(hwndDlg, IDC_BOX_STATUS, "IMPORTANT: Move your mouse as randomly as possible within this window. The longer you move it, the better. This significantly increases the cryptographic strength of the encryption keys. Then click 'Continue' to expand the volume.");
			}

			SendMessage (GetDlgItem (hwndDlg, IDC_DISPLAY_POOL_CONTENTS), BM_SETCHECK, showRandPool ? BST_CHECKED : BST_UNCHECKED, 0);
			SetTimer (hwndDlg, TIMER_ID_RANDVIEW, TIMER_INTERVAL_RANDVIEW, NULL);
		}
		return 0;
	case TC_APPMSG_VOL_TRANSFORM_THREAD_ENDED:
		{
			int nStatus = (int)lParam;

			NormalCursor ();
			if (nStatus != 0)
			{
				if ( nStatus != ERR_USER_ABORT )
					AddProgressDlgStatus (hwndDlg, "Error: volume expansion failed.");
				else
					AddProgressDlgStatus (hwndDlg, "Error: operation aborted by user.");
			}
			else
			{
				AddProgressDlgStatus (hwndDlg, "Finished. Volume successfully expanded.");
			}

			SetWindowText (GetDlgItem (hwndDlg, IDOK), "Exit");
			EnableWindow (GetDlgItem (hwndDlg, IDOK), TRUE);
			EnableWindow (GetDlgItem (hwndDlg, IDCANCEL), FALSE);
		}
		return 1;

	case WM_TIMER:

		switch (wParam)
		{
		case TIMER_ID_RANDVIEW:
			{
				unsigned char tmp[16] = {0};
				char szRndPool[64] = {0};

				if (!showRandPool)
					return 1;

				RandpeekBytes (hwndDlg, tmp, sizeof (tmp));

				StringCbPrintfA (szRndPool, sizeof(szRndPool), "%08X%08X%08X%08X", 
					*((DWORD*) (tmp + 12)), *((DWORD*) (tmp + 8)), *((DWORD*) (tmp + 4)), *((DWORD*) (tmp)));

				SetWindowText (GetDlgItem (hwndDlg, IDC_RANDOM_BYTES), szRndPool);

				burn (tmp, sizeof(tmp));
				burn (szRndPool, sizeof(szRndPool));
			}
			return 1;
		}
		return 0;

	case WM_COMMAND:
		if (lw == IDC_DISPLAY_POOL_CONTENTS)
		{
			showRandPool = IsButtonChecked (GetDlgItem (hwndDlg, IDC_DISPLAY_POOL_CONTENTS));
			return 1;
		}
		if (lw == IDCANCEL)
		{
			if (bVolTransformStarted)
			{
				if (MessageBoxW (hwndDlg, L"Warning: Volume expansion is in progress!\n\nStopping now may result in a damaged volume.\n\nDo you really want to cancel?", lpszTitle, YES_NO|MB_ICONQUESTION|MB_DEFBUTTON2) == IDNO)
					return 1;

				// tell the volume transform thread to terminate
				bVolTransformThreadCancel = TRUE;
			}
			EndDialog (hwndDlg, lw);
			return 1;
		}

		if (lw == IDOK)
		{
			if (bVolTransformStarted)
			{
				// TransformThreadFunction finished -> OK button is now exit
				EndDialog (hwndDlg, lw);
			}
			else
			{
				showRandPool = FALSE;
				KillTimer (hwndDlg, TIMER_ID_RANDVIEW);
				EnableWindow (GetDlgItem (hwndDlg, IDC_DISPLAY_POOL_CONTENTS), FALSE);
				EnableWindow (GetDlgItem (hwndDlg, IDOK), FALSE);
				SetProgressDlgStatus (hwndDlg, "Starting volume expansion ...\r\n");
				bVolTransformStarted = TRUE;
				pProgressDlgParam->hwndDlg = hwndDlg;
				if ( _beginthread (volTransformThreadFunction, 0, pProgressDlgParam) == -1L )
				{
					handleError (hwndDlg, ERR_OS_ERROR, SRC_POS);
					EndDialog (hwndDlg, lw);
				}
				WaitCursor();
			}
			return 1;
		}

		return 0;
	}

	return 0;
}
Ejemplo n.º 9
0
static void InitChangeRegisterDialog(HWND hwnd,LPARAM lparam)
{
    RegModifyData   *data;
    char            *name;
    unsigned        len;
    mad_radix       radix;
    mad_type_info   mti;
    mad_type_info   cmp;
    char            s[255];
    RECT            p_rect;
    RECT            c_rect;
    HWND            field;
    int             i;
    unsigned        max_len;
    HDC             dc;
    TEXTMETRIC      tm;
    HWND            cancel;

    SetWindowLong( hwnd, DWL_USER, (LONG)lparam);
    data = (RegModifyData *)lparam;
    len = MADRegFullName( data->curr_info, ".", NULL, 0 );
    if( len > 0 ) {
        name = alloca( ( len + 1 ) * sizeof( char ) );
        MADRegFullName( data->curr_info, ".", name, len );
        SetWindowText( hwnd, name );
    } else {
        SetWindowText( hwnd, "" );
    }

    if( data->num_possible == 1 ) {
        field = GetDlgItem( hwnd, REG_EDIT_FIELD );
    } else {
        field = GetDlgItem( hwnd, CH_REG_COMBO_LIST );
    }
    SetMonoFont( field );
    GetChildPos( hwnd, field, &c_rect);
    dc = GetDC( field );
    GetTextMetrics( dc, &tm );
    MADTypeInfo( data->th, &mti );
    radix = MADTypePreferredRadix( data->th );

    if( data->num_possible == 1 ) {
        if( data->maxv == 0 ) {
            len = 255;
        } else {
            len = data->maxv;
        }
        MADTypeToString( radix, &mti, data->curr_value, s, &len );
        if( data->maxv == 0 ) {
            max_len = strlen( s );
        } else {
            max_len = data->maxv;
        }
        SetDlgItemText(hwnd,REG_EDIT_FIELD,s);
    } else {
        MADTypeInfo( data->curr_info->type, &cmp );
        max_len = 0;
        for( i = 0; i < data->num_possible; i++ ) {
            if( data->m_list[i].name == MAD_MSTR_NIL ) {
                len = sizeof( s );
                MADTypeToString( radix, &mti, data->m_list[i].data, s, &len );
            } else {
                MADCli( String )( data->m_list[i].name, s, sizeof( s ) );
            }
            if( max_len < strlen( s ) )
                max_len = strlen( s );
            SendDlgItemMessage( hwnd, CH_REG_COMBO_LIST, CB_ADDSTRING, 0, (LPARAM)s );
            if( memcmp( data->curr_value, data->m_list[i].data, BITS2BYTES( cmp.b.bits ) ) == 0 ) {
                SendDlgItemMessage( hwnd, CH_REG_COMBO_LIST, CB_SETCURSEL, (WPARAM)i, 0 );
            }
        }
        c_rect.bottom += SendMessage( field, CB_GETITEMHEIGHT, 0, 0 ) * (i + 1);
    }
    max_len *= tm.tmMaxCharWidth;
    if( max_len > c_rect.right ) {
        max_len -= max_len%2;
        GetWindowRect( hwnd, &p_rect );
        p_rect.right -= p_rect.left;
        p_rect.bottom -= p_rect.top;
        p_rect.left -= ( max_len - c_rect.right )/2;
        p_rect.right += ( max_len - c_rect.right );
        MoveWindow( hwnd, p_rect.left, p_rect.top, p_rect.right, p_rect.bottom, FALSE );
        cancel = GetDlgItem( hwnd, IDCANCEL );
        GetChildPos( hwnd, cancel, &p_rect );
        p_rect.left += ( max_len - c_rect.right );
        MoveWindow( cancel, p_rect.left, p_rect.top, p_rect.right, p_rect.bottom, FALSE );
        c_rect.right = max_len;
    }
    ReleaseDC( field, dc );
    MoveWindow( field, c_rect.left, c_rect.top, c_rect.right, c_rect.bottom, FALSE );
}
Ejemplo n.º 10
0
/*
 * InitStatDialog
 */
static void InitStatDialog( HWND hwnd )
{
    int                 i;
    char                buff[256];
    ExceptDlgInfo       *info;
    syminfo             si;
    CreateRegListData   data;
    StatData            *statdata;
    RECT                c_rect;
    HWND                combo;

    info = StatGetExceptDlgInfo( hwnd );
    StatHdl = hwnd;
    statdata = MemAlloc( sizeof( StatData ) );

    /*
     * fill in source information
     */
    GetCurrAddr( &( statdata->curr_addr ), info->regs );
    if( FindWatSymbol( &( statdata->curr_addr ), &si, TRUE ) == FOUND ) {
        RCsprintf( buff, STR_SRC_INFO_FMT, si.linenum, si.filename );
        StatShowSymbols = TRUE;
        CheckDlgButton( hwnd, STAT_SYMBOLS, StatShowSymbols );
    } else {
        RCsprintf( buff, STR_N_A );
        StatShowSymbols = FALSE;
        EnableWindow( GetDlgItem( hwnd, STAT_SYMBOLS ), FALSE );
    }
    SetDlgMonoFont( hwnd, STAT_SRC_INFO );
    SetDlgItemText( hwnd, STAT_SRC_INFO, buff );

#ifdef __NT__
    {
        ProcStats       procinfo;
        HWND            button;
        if( GetProcessInfo( info->procinfo->procid, &procinfo ) ) {
            RCsprintf( buff, STR_STATUS_4_PROC_X, info->procinfo->procid, procinfo.name );
            SetWindowText( hwnd, buff );
        }
        CopyRCString( STR_VIEW_MEM_HT_KEY, buff, sizeof( buff ) );
        SetDlgItemText( hwnd, STAT_SEG_MAP, buff );
        button = GetDlgItem( hwnd, STAT_STACK_TRACE );
        ShowWindow( button, SW_HIDE );
    }
#endif
    InstructionBackward( 2, &( statdata->curr_addr ) );
    for( i = STAT_DISASM_1;i <= STAT_DISASM_8; i++ ) {
        SetDlgCourierFont( hwnd, i );
    }
    DisplayAsmLines( hwnd, &( statdata->curr_addr ) );
    data.index = 0;
    data.parent = hwnd;
    data.max_len = 0;
    combo = GetDlgItem( hwnd, STAT_REGISTER_COMBO );
    MADRegSetWalk( MTK_ALL, CreateAllRegLists, &data );
    if( data.index == 1 ) {
        SendMessage( combo, CB_GETLBTEXT, (WPARAM)0, (LPARAM)buff );
        SetDlgItemText( hwnd, STAT_REGISTER_SET, buff );
        DestroyWindow( combo );
    } else {
        GetChildPos( hwnd, combo, &c_rect );
        SendMessage( combo, CB_SETCURSEL, (WPARAM)0, (LPARAM)0 );
        c_rect.right += data.max_len;
        c_rect.bottom += SendMessage( combo, CB_GETITEMHEIGHT, 0, 0 ) * ( data.index + 1);
        MoveWindow( combo, c_rect.left, c_rect.top, c_rect.right, c_rect.bottom, FALSE );
    }
    SetFocus( GetDlgItem( hwnd, IDOK ) );
    statdata->reg_set_index = 0;
    SetWindowLong(hwnd,DWL_USER,(LONG)statdata);
} /* InitStatDialog */
Ejemplo n.º 11
0
BOOL CALLBACK ExpandVolSizeDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
	static EXPAND_VOL_THREAD_PARAMS *pVolExpandParam;

	WORD lw = LOWORD (wParam);

	switch (msg)
	{
	case WM_INITDIALOG:
		{
			char szTemp[4096];

			pVolExpandParam = (EXPAND_VOL_THREAD_PARAMS*)lParam;

			EnableWindow (GetDlgItem (hwndDlg, IDC_SIZEBOX), !pVolExpandParam->bIsDevice);
			EnableWindow (GetDlgItem (hwndDlg, IDC_KB), !pVolExpandParam->bIsDevice);
			EnableWindow (GetDlgItem (hwndDlg, IDC_MB), !pVolExpandParam->bIsDevice);
			EnableWindow (GetDlgItem (hwndDlg, IDC_GB), !pVolExpandParam->bIsDevice);
			EnableWindow (GetDlgItem (hwndDlg, IDC_TB), !pVolExpandParam->bIsDevice);

			EnableWindow (GetDlgItem (hwndDlg, IDC_INIT_NEWSPACE),
				!(pVolExpandParam->bIsLegacy && pVolExpandParam->bIsDevice));
			SendDlgItemMessage (hwndDlg, IDC_INIT_NEWSPACE, BM_SETCHECK,
				pVolExpandParam->bInitFreeSpace ? BST_CHECKED : BST_UNCHECKED, 0);

			if (!pVolExpandParam->bIsDevice)
				SetCurrentVolSize(hwndDlg,pVolExpandParam->oldSize);

			SendMessage (GetDlgItem (hwndDlg, IDC_BOX_HELP), WM_SETFONT, (WPARAM) hBoldFont, (LPARAM) TRUE);

			GetSpaceString(szTemp,sizeof(szTemp),pVolExpandParam->oldSize,pVolExpandParam->bIsDevice);

			SetWindowText (GetDlgItem (hwndDlg, IDC_EXPAND_VOLUME_OLDSIZE), szTemp);
			SetWindowText (GetDlgItem (hwndDlg, IDC_EXPAND_VOLUME_NAME), pVolExpandParam->szVolumeName);
			SetWindowText (GetDlgItem (hwndDlg, IDC_EXPAND_FILE_SYSTEM), szFileSystemStr[pVolExpandParam->FileSystem]);

			if (pVolExpandParam->bIsDevice)
			{
				GetSpaceString(szTemp,sizeof(szTemp),pVolExpandParam->newSize,TRUE);
			}
			else
			{
				char szHostFreeStr[256];

				SetWindowText (GetDlgItem (hwndDlg, IDT_NEW_SIZE), "");
				GetSpaceString(szHostFreeStr,sizeof(szHostFreeStr),pVolExpandParam->hostSizeFree,FALSE);
				StringCbPrintfA (szTemp,sizeof(szTemp),"%s available on host drive", szHostFreeStr);
			}

			SetWindowText (GetDlgItem (hwndDlg, IDC_EXPAND_VOLUME_NEWSIZE), szTemp);

			// set help text
			if (pVolExpandParam->bIsDevice)
			{
				StringCbPrintfA (szTemp,sizeof(szTemp),"This is a device-based VeraCrypt volume.\n\nThe new volume size will be choosen automatically as the size of the host device.");
				if (pVolExpandParam->bIsLegacy)
					StringCbCatA(szTemp,sizeof(szTemp)," Note: filling the new space with random data is not supported for legacy volumes.");
			}
			else
			{
				StringCbPrintfA (szTemp, sizeof(szTemp),"Please specify the new size of the VeraCrypt volume (must be at least %I64u KB larger than the current size).",TC_MINVAL_FS_EXPAND/1024);
			}
			SetWindowText (GetDlgItem (hwndDlg, IDC_BOX_HELP), szTemp);

		}
		return 0;


	case WM_COMMAND:
		if (lw == IDCANCEL)
		{
			EndDialog (hwndDlg, lw);
			return 1;
		}

		if (lw == IDOK)
		{
			char szTemp[4096];

			pVolExpandParam->bInitFreeSpace = IsButtonChecked (GetDlgItem (hwndDlg, IDC_INIT_NEWSPACE));
			if (!pVolExpandParam->bIsDevice) // for devices new size is set by calling function
			{				
				GetWindowText (GetDlgItem (hwndDlg, IDC_SIZEBOX), szTemp, sizeof (szTemp));
				pVolExpandParam->newSize = _atoi64(szTemp) * GetSizeBoxMultiplier(hwndDlg);
			}

			EndDialog (hwndDlg, lw);
			return 1;
		}

		return 0;
	}

	return 0;
}
/*
 * Sets the title text for the main window.
 */
void Explorerplusplus::HandleMainWindowText(void)
{
	TCHAR	szTitle[512];
	TCHAR	szFolderDisplayName[MAX_PATH];
	TCHAR	szOwner[512];

	/* Don't show full paths for virtual folders (as only the folders
	GUID will be shown). */
	if(m_bShowFullTitlePath && !m_pActiveShellBrowser->InVirtualFolder())
	{
		GetDisplayName(m_CurrentDirectory,szFolderDisplayName,SHGDN_FORPARSING);
	}
	else
	{
		GetDisplayName(m_CurrentDirectory,szFolderDisplayName,SHGDN_NORMAL);
	}

	StringCchPrintf(szTitle,SIZEOF_ARRAY(szTitle),
	_T("%s - Explorer++"),szFolderDisplayName);

	if(m_bShowUserNameInTitleBar || m_bShowPrivilegeLevelInTitleBar)
		StringCchCat(szTitle,SIZEOF_ARRAY(szTitle),_T(" ["));

	if(m_bShowUserNameInTitleBar)
	{
		GetProcessOwner(szOwner,SIZEOF_ARRAY(szOwner));

		StringCchCat(szTitle,SIZEOF_ARRAY(szTitle),szOwner);
	}

	if(m_bShowPrivilegeLevelInTitleBar)
	{
		TCHAR szPrivilegeAddition[64];
		TCHAR szPrivilege[64];

		if(CheckGroupMembership(GROUP_ADMINISTRATORS))
		{
			LoadString(m_hLanguageModule,IDS_PRIVILEGE_LEVEL_ADMINISTRATORS,szPrivilege,SIZEOF_ARRAY(szPrivilege));
		}
		else if(CheckGroupMembership(GROUP_POWERUSERS))
		{
			LoadString(m_hLanguageModule,IDS_PRIVILEGE_LEVEL_POWER_USERS,szPrivilege,SIZEOF_ARRAY(szPrivilege));
		}
		else if(CheckGroupMembership(GROUP_USERS))
		{
			LoadString(m_hLanguageModule,IDS_PRIVILEGE_LEVEL_USERS,szPrivilege,SIZEOF_ARRAY(szPrivilege));
		}
		else if(CheckGroupMembership(GROUP_USERSRESTRICTED))
		{
			LoadString(m_hLanguageModule,IDS_PRIVILEGE_LEVEL_USERS_RESTRICTED,szPrivilege,SIZEOF_ARRAY(szPrivilege));
		}

		if(m_bShowUserNameInTitleBar)
			StringCchPrintf(szPrivilegeAddition,SIZEOF_ARRAY(szPrivilegeAddition),
			_T(" - %s"),szPrivilege);
		else
			StringCchPrintf(szPrivilegeAddition,SIZEOF_ARRAY(szPrivilegeAddition),
			_T("%s"),szPrivilege);

		StringCchCat(szTitle,SIZEOF_ARRAY(szTitle),szPrivilegeAddition);
	}

	if(m_bShowUserNameInTitleBar || m_bShowPrivilegeLevelInTitleBar)
		StringCchCat(szTitle,SIZEOF_ARRAY(szTitle),_T("]"));

	SetWindowText(m_hContainer,szTitle);
}
Ejemplo n.º 13
0
BOOL CALLBACK OptionsProc(HWND hdlg,UINT msg,WPARAM wparam,LPARAM lparam)
	{	
	switch(msg){
		case WM_INITDIALOG:{
			DWORD style;
			g_opHdlg=hdlg;
			bOptionsInit=TRUE;
			TranslateDialogDefault(hdlg); 
			if(g_iButtonsCount!=DBGetContactSettingByte(NULL, PLGNAME,"ButtonsCount", 0))
				{
				LOGFONT logFont;
				HFONT hFont;
				bNeedRestart=TRUE;
				EnableWindow(GetDlgItem(hdlg,IDC_BUTTONSLIST),FALSE);
				EnableWindow(GetDlgItem(hdlg,IDC_BLISTADD),FALSE);
				EnableWindow(GetDlgItem(hdlg,IDC_BLISTREMOVE),FALSE);
				EnableWindow(GetDlgItem(hdlg,IDC_MENUTREE),FALSE);
				EnableWindow(GetDlgItem(hdlg,IDC_MTREEADD),FALSE);
				EnableWindow(GetDlgItem(hdlg,IDC_MTREEREMOVE),FALSE);
				EnableWindow(GetDlgItem(hdlg,IDC_MENUVALUE),FALSE);
				EnableWindow(GetDlgItem(hdlg,IDC_RCLICKVALUE),FALSE);
				EnableWindow(GetDlgItem(hdlg,IDC_BUTTONNAME),FALSE);
				EnableWindow(GetDlgItem(hdlg,IDC_INQMENU),FALSE);
				EnableWindow(GetDlgItem(hdlg,IDC_ISSERVNAME),FALSE);
				EnableWindow(GetDlgItem(hdlg,IDC_MENUNAME),FALSE);	
				ShowWindow(GetDlgItem(hdlg,IDC_WARNING),SW_SHOW);

				hFont = (HFONT)SendMessage(GetDlgItem(hdlg, IDC_WARNING), WM_GETFONT, 0, 0);
				GetObject(hFont, sizeof logFont, &logFont);
				logFont.lfWeight = FW_BOLD;
				hFont = CreateFontIndirect(&logFont);
				SendMessage(GetDlgItem(hdlg, IDC_WARNING), WM_SETFONT, (WPARAM)hFont, 0);
				break;
				}
			
			g_iOPButtonsCount=g_iButtonsCount;

			hButtonsList=GetDlgItem(hdlg,IDC_BUTTONSLIST);
			hMenuTree=GetDlgItem(hdlg,IDC_MENUTREE);

			style = GetWindowLong(hButtonsList,GWL_STYLE);
			style |=TVS_NOHSCROLL;
			SetWindowLong(hButtonsList,GWL_STYLE, style);

			style = GetWindowLong(hMenuTree,GWL_STYLE);
			style |=TVS_NOHSCROLL;			
			SetWindowLong(hMenuTree,GWL_STYLE, style);
			BuildButtonsList(hButtonsList);
			
			if(!TreeView_GetCount(hButtonsList)) EnableWindow(GetDlgItem(hdlg,IDC_RCLICKVALUE),FALSE);

			oldBNameProc = (WNDPROC) SetWindowLong(GetDlgItem(hdlg,IDC_BUTTONNAME), GWL_WNDPROC, (LONG) EditSubclassProc);
			oldMNameProc = (WNDPROC) SetWindowLong(GetDlgItem(hdlg,IDC_MENUNAME)  , GWL_WNDPROC, (LONG) EditSubclassProc);

			
			EnableWindow(GetDlgItem(hdlg,IDC_MENUVALUE),FALSE);
			EnableWindow(GetDlgItem(hdlg,IDC_INQMENU),FALSE);
			EnableWindow(GetDlgItem(hdlg,IDC_ISSERVNAME),FALSE);
			CheckDlgButton(hdlg,IDC_RAUTOSEND,(g_bRClickAuto=DBGetContactSettingByte(NULL,PLGNAME,"RClickAuto",0)));
			CheckDlgButton(hdlg,IDC_LAUTOSEND,(g_bLClickAuto=DBGetContactSettingByte(NULL,PLGNAME,"LClickAuto",0)));
			CheckDlgButton(hdlg,IDC_ENABLEQUICKMENU,(g_bQuickMenu=DBGetContactSettingByte(NULL, PLGNAME,"QuickMenu", 1)));
		
			bOptionsInit=FALSE;
			}break;

		case WM_LBUTTONUP:
			if(drag) {
				TVHITTESTINFO hti; 
				HTREEITEM htiAfter=NULL;
				ButtonData* bd=NULL;
				TVITEM tvi;
				RECT rc;
				BYTE height;
				BOOLEAN bAsChild = FALSE;

				TreeView_SetInsertMark(hMenuTree, NULL, 0 );
				ReleaseCapture();
				SetCursor( LoadCursor( NULL, IDC_ARROW ) );

				hti.pt.x = ( SHORT )LOWORD( lparam );
				hti.pt.y = ( SHORT )HIWORD( lparam );
				ClientToScreen(hdlg,&hti.pt);
				ScreenToClient(hMenuTree,&hti.pt);
				TreeView_HitTest( hMenuTree, &hti );

				if(TreeView_GetParent(hMenuTree,hti.hItem)&&TreeView_GetChild(hMenuTree,hDragItem))
					break;

				if(TreeView_GetChild(hMenuTree,hti.hItem)&&TreeView_GetChild(hMenuTree,hDragItem))
					break;


					if( hti.flags & TVHT_ABOVE ) {
						htiAfter = TVI_FIRST;
						}
					else
						if( hti.flags & ( TVHT_NOWHERE|TVHT_BELOW ) ) {
							htiAfter = TVI_LAST;
							}
						else
							if( hti.flags & ( TVHT_ONITEM|TVHT_ONITEMRIGHT ) ) {
								// check where over the item, the pointer is
								if( !TreeView_GetItemRect( hMenuTree, hti.hItem, &rc, FALSE ) ) {
									drag=0;
									break;
									}
								height = ( BYTE )( rc.bottom - rc.top );

								if( hti.pt.y - ( height / 3 ) < rc.top ) {
									HTREEITEM hItem = hti.hItem;

									if( !( hti.hItem = TreeView_GetPrevSibling( hMenuTree, hItem ) ) ) {
										if( !( hti.hItem = TreeView_GetParent(hMenuTree, hItem ) ))
											htiAfter = TVI_FIRST;
										else
											bAsChild = TRUE;
										}
									}
								else 
									if( hti.pt.y + ( height / 3 ) <= rc.bottom ) {
										bAsChild = TRUE;
										}
								}	


							if(TreeView_GetChild(hMenuTree,hDragItem)&&bAsChild)
								break;


							if(hti.hItem){
 									tvi.hItem=hti.hItem;
 									tvi.mask=TVIF_PARAM |TVIF_HANDLE;
 									TreeView_GetItem(hMenuTree,&tvi);
									if((bd=(ButtonData*)tvi.lParam)&&(bd->fEntryOpType&QMF_EX_SEPARATOR))
										bAsChild = FALSE;
							 }

							if(TreeView_GetParent(hMenuTree,hti.hItem))
 								bAsChild = FALSE;


							MoveItem( hDragItem, htiAfter?htiAfter:hti.hItem, bAsChild );
							SendMessage(GetParent(hdlg),PSM_CHANGED,0,0);
							drag=0;

				}
			break; 

		///////////////////////////////////
		//From UserInfoEx by DeathAxe
		//
		case WM_MOUSEMOVE:
			{
			if (!drag) break;
				{
				TVHITTESTINFO hti;

				hti.pt.x=(short)LOWORD(lparam);
				hti.pt.y=(short)HIWORD(lparam);
				ClientToScreen(hdlg,&hti.pt);
				ScreenToClient(hMenuTree,&hti.pt);
				TreeView_HitTest(hMenuTree,&hti);
				if( hti.flags & ( TVHT_ONITEM|TVHT_ONITEMRIGHT ) ) {
					RECT rc;
					BYTE height;

					if( TreeView_GetItemRect(hMenuTree, hti.hItem, &rc, FALSE ) ) {
						height = ( BYTE )( rc.bottom - rc.top );

						if( hti.pt.y - ( height / 3 ) < rc.top ) {
							SetCursor( LoadCursor( NULL, IDC_ARROW ) );
							TreeView_SetInsertMark( hMenuTree, hti.hItem, 0 );
							}
						else
							if( hti.pt.y + ( height / 3 ) > rc.bottom ) {
								SetCursor( LoadCursor( NULL, IDC_ARROW ) );
								TreeView_SetInsertMark( hMenuTree, hti.hItem, 1 );
								}
							else {
								TreeView_SetInsertMark( hMenuTree, NULL, 0 );
								SetCursor( LoadCursor( GetModuleHandle(NULL), MAKEINTRESOURCE( 183 ) ) );
								}
						}
					}
				else {
					if( hti.flags & TVHT_ABOVE ) SendMessage( hMenuTree, WM_VSCROLL, MAKEWPARAM( SB_LINEUP, 0 ), 0 );
					if( hti.flags & TVHT_BELOW ) SendMessage( hMenuTree, WM_VSCROLL, MAKEWPARAM( SB_LINEDOWN, 0 ), 0 );
					TreeView_SetInsertMark( hMenuTree, NULL, 0 );
					}
				}
			}break;
			/////////////
		case WM_DESTROY:
			if (g_varhelpDlg)
				DestroyWindow(g_varhelpDlg);
			g_varhelpDlg=NULL;
			break;

		case WM_NOTIFY:{
			switch(((LPNMHDR)lparam)->idFrom)	{
		case 0:{
			if (((LPNMHDR)lparam)->code == PSN_APPLY ) {
				if(!bNeedRestart){
				SetMenuEntryProperties(hdlg);
				SaveMenuTree(hdlg); 
				}
				DBWriteContactSettingByte(NULL,PLGNAME,"RClickAuto",(BYTE)(g_bRClickAuto=IsDlgButtonChecked(hdlg,IDC_RAUTOSEND)));
				DBWriteContactSettingByte(NULL,PLGNAME,"LClickAuto",(BYTE)(g_bLClickAuto=IsDlgButtonChecked(hdlg,IDC_LAUTOSEND)));
				DBWriteContactSettingByte(NULL,PLGNAME,"QuickMenu",(BYTE)(g_bQuickMenu=IsDlgButtonChecked(hdlg,IDC_ENABLEQUICKMENU)));
				return 1;
				}
			else if (((LPNMHDR)lparam)->code == PSN_RESET ) {
					if(!bNeedRestart)
						RestoreModuleData(hdlg);
				return 1;
				}
			}
			break; 

		case IDC_MENUTREE:
			switch (((LPNMHDR)lparam)->code){

		case TVN_KEYDOWN:{
			TV_KEYDOWN* pTVKeyDown = (TV_KEYDOWN*) ((LPNMHDR)lparam);
			if ( pTVKeyDown->wVKey == VK_F2 )
				TreeView_EditLabel(hMenuTree,TreeView_GetSelection(hMenuTree));
			else if ( pTVKeyDown->wVKey == VK_DELETE )
					SendMessage(hdlg,WM_COMMAND,IDC_MTREEREMOVE,0);
			}break;

		case TVN_BEGINLABELEDITA:
		case TVN_BEGINLABELEDITW:
			hwndEdit=TreeView_GetEditControl(hMenuTree);
			oldEditProc = (WNDPROC) SetWindowLong(hwndEdit, GWL_WNDPROC, (LONG) LabelEditSubclassProc);
			break;

		case TVN_ENDLABELEDITA:
		case TVN_ENDLABELEDITW:
			{
			TVITEM tvi;
			ButtonData* bd=NULL;
			TCHAR strbuf[256];
			TCHAR szLabel[256];

			SetWindowLong(hwndEdit, GWL_WNDPROC, (LONG) oldEditProc);

			tvi.pszText = strbuf;
			tvi.cchTextMax = sizeof(strbuf);
			tvi.mask=TVIF_TEXT |TVIF_HANDLE|TVIF_PARAM;
			tvi.hItem=TreeView_GetSelection(hMenuTree);
			TreeView_GetItem(hMenuTree,&tvi);

			GetWindowText(hwndEdit, szLabel, sizeof(szLabel));
			hwndEdit=NULL;
			if(!_tcslen(szLabel)) break;
			if (bd = (ButtonData*)tvi.lParam){
				if(!_tcscmp(szLabel,_T("---"))){
					if(TreeView_GetChild(hMenuTree,tvi.hItem))
						break;
					else{
						bd->fEntryOpType=QMF_EX_SEPARATOR;
						EnableWindow(GetDlgItem(hdlg,IDC_MENUVALUE),FALSE);
						EnableWindow(GetDlgItem(hdlg,IDC_ISSERVNAME),FALSE);
						SetWindowText(GetDlgItem(hdlg,IDC_MENUVALUE),_T(""));
						}
					}
				else {
					bd->fEntryOpType&=~QMF_EX_SEPARATOR;
						EnableWindow(GetDlgItem(hdlg,IDC_MENUVALUE),TRUE);
						EnableWindow(GetDlgItem(hdlg,IDC_ISSERVNAME),TRUE);
						SetWindowText(GetDlgItem(hdlg,IDC_MENUVALUE),bd->pszOpValue/*?bd->pszOpValue:bd->pszValue*/);
					}

				bd->pszOpName=mir_tstrdup(szLabel);
				
				tvi.pszText=szLabel;
				TreeView_SetItem(hMenuTree, &tvi);
				SendMessage(GetParent(hdlg),PSM_CHANGED,0,0);
				}
			}break;

		case NM_KILLFOCUS:
			TreeView_EndEditLabelNow(hButtonsList, 1);
			break;

		case TVN_BEGINDRAGA:
		case TVN_BEGINDRAGW:
			SetCapture(hdlg);
			drag=1;
			hDragItem=((LPNMTREEVIEW)lparam)->itemNew.hItem;
			TreeView_SelectItem(hMenuTree,hDragItem);
			break;

		case TVN_SELCHANGINGA:
		case TVN_SELCHANGINGW:
			{
			TVITEM tvi;
			HTREEITEM hti;
			ButtonData* bd;

			hti=TreeView_GetSelection(hMenuTree);

			if (hti==NULL)
				break;

			tvi.hItem=hti;
			tvi.mask=TVIF_HANDLE|TVIF_PARAM;
			TreeView_GetItem(hMenuTree,&tvi);

			if (tvi.lParam == 0)
				break;

			bd = ( ButtonData* )tvi.lParam;
			if (bd) {
				TCHAR szValue[256];
				GetWindowText(GetDlgItem(hdlg,IDC_MENUVALUE), szValue, sizeof(szValue));
				if(_tcslen(szValue))
					{
					if(bd->pszOpValue&&(bd->pszOpValue!=bd->pszValue))
						mir_free(bd->pszOpValue);
					bd->pszOpValue=mir_tstrdup(szValue);
					}
				bd->bOpInQMenu=IsDlgButtonChecked(hdlg,IDC_INQMENU);
				bd->bIsOpServName=IsDlgButtonChecked(hdlg,IDC_ISSERVNAME);
				}
			}break;
		case TVN_SELCHANGEDA:
		case TVN_SELCHANGEDW:
			{
			TVITEM tvi;
			HTREEITEM hti;
			ButtonData* bd=NULL;

			hti=TreeView_GetSelection(hMenuTree);

			if (hti==NULL)
				break;

			tvi.mask=TVIF_HANDLE|TVIF_PARAM;

			tvi.hItem=hti;
			TreeView_GetItem(hMenuTree,&tvi);


			bd = ( ButtonData* )tvi.lParam;
			if (bd) {
				if(!TreeView_GetChild(hMenuTree, tvi.hItem)&&!(bd->fEntryOpType&QMF_EX_SEPARATOR))
					{
					EnableWindow(GetDlgItem(hdlg,IDC_MENUVALUE),TRUE);
					EnableWindow(GetDlgItem(hdlg,IDC_ISSERVNAME),TRUE);
					EnableWindow(GetDlgItem(hdlg,IDC_INQMENU),TRUE);
					SetWindowText(GetDlgItem(hdlg,IDC_MENUVALUE),bd->pszOpValue/*?bd->pszOpValue:bd->pszValue*/);
					}
				else
					{
					EnableWindow(GetDlgItem(hdlg,IDC_MENUVALUE),FALSE);
					EnableWindow(GetDlgItem(hdlg,IDC_ISSERVNAME),FALSE);
					if(!(bd->fEntryOpType&QMF_EX_SEPARATOR))
						EnableWindow(GetDlgItem(hdlg,IDC_INQMENU),FALSE);
					SetWindowText(GetDlgItem(hdlg,IDC_MENUVALUE),_T(""));
					}
				CheckDlgButton(hdlg,IDC_INQMENU,bd->bOpInQMenu);
				CheckDlgButton(hdlg,IDC_ISSERVNAME,bd->bIsOpServName);
				}
			}
		}break;

		case IDC_BUTTONSLIST:
			switch (((LPNMHDR)lparam)->code) {

		case TVN_KEYDOWN:{
			TV_KEYDOWN* pTVKeyDown = (TV_KEYDOWN*) ((LPNMHDR)lparam);
			if ( pTVKeyDown->wVKey == VK_F2 )
				TreeView_EditLabel(hButtonsList,TreeView_GetSelection(hButtonsList));
			else if ( pTVKeyDown->wVKey == VK_DELETE )
				SendMessage(hdlg,WM_COMMAND,IDC_BLISTREMOVE,0);
			}break;

		case TVN_BEGINLABELEDITA:
		case TVN_BEGINLABELEDITW:
			hwndEdit=TreeView_GetEditControl(hButtonsList);
			oldEditProc = (WNDPROC) SetWindowLong(hwndEdit, GWL_WNDPROC, (LONG) LabelEditSubclassProc);
			break;

		case TVN_ENDLABELEDITA:
		case TVN_ENDLABELEDITW:{
			TVITEM tvi;
			TCHAR strbuf[128];
			TCHAR szLabel[128];

			SetWindowLong(hwndEdit, GWL_WNDPROC, (LONG) oldEditProc);

			tvi.pszText = strbuf;
			tvi.cchTextMax = sizeof(strbuf);
			tvi.mask=TVIF_TEXT |TVIF_HANDLE|TVIF_PARAM;
			tvi.hItem=TreeView_GetSelection(hButtonsList);
			TreeView_GetItem(hButtonsList,&tvi);

			GetWindowText(hwndEdit, szLabel, sizeof(szLabel));
			hwndEdit=NULL;
			if(!_tcslen(szLabel)) break;

			tvi.pszText=szLabel;
			((ListData*)tvi.lParam)->dwOPFlags|=QMF_RENAMED;	

			TreeView_SetItem(hButtonsList, &tvi);
			SendMessage(GetParent(hdlg),PSM_CHANGED,0,0);
			}break;

		case TVN_SELCHANGINGA:
		case TVN_SELCHANGINGW:
			SetMenuEntryProperties(hdlg);
			break;

		case TVN_SELCHANGEDA:
		case TVN_SELCHANGEDW:{
			TVITEM tvi;
			HTREEITEM hti;

			hti=TreeView_GetSelection(hButtonsList);

			if(hti==NULL||!TreeView_GetCount(hButtonsList)){
				EnableWindow(GetDlgItem(hdlg,IDC_MENUVALUE),FALSE);
				EnableWindow(GetDlgItem(hdlg,IDC_ISSERVNAME),FALSE);
				EnableWindow(GetDlgItem(hdlg,IDC_INQMENU),FALSE);
				EnableWindow(GetDlgItem(hdlg,IDC_ISSERVNAME2),FALSE);
				SetWindowText(GetDlgItem(hdlg,IDC_MENUVALUE),_T(""));
				break;
				}
			
			tvi.mask=TVIF_HANDLE|TVIF_PARAM;
			tvi.hItem=hti;
			TreeView_GetItem(hButtonsList,&tvi);

			if(tvi.lParam==0) break;

			BuildMenuTree(hMenuTree,(SortedList *)((ListData*)tvi.lParam)->sl);

			SetWindowText(GetDlgItem(hdlg,IDC_MENUVALUE),_T(""));
			EnableWindow(GetDlgItem(hdlg,IDC_RCLICKVALUE),TRUE);
			EnableWindow(GetDlgItem(hdlg,IDC_ISSERVNAME2),TRUE);
			CheckDlgButton(hdlg,IDC_ISSERVNAME2,((ListData*)tvi.lParam)->bIsOpServName);

			if(((ListData*)tvi.lParam)->ptszOPQValue) 
				SetWindowText(GetDlgItem(hdlg,IDC_RCLICKVALUE),((ListData*)tvi.lParam)->ptszOPQValue);
			else
				SetWindowText(GetDlgItem(hdlg,IDC_RCLICKVALUE),_T(""));

			}break;
				}break;
				}
			}break;

		case WM_COMMAND:{
		switch(LOWORD(wparam)){
		case IDC_VARHELP:{
			if(!g_varhelpDlg)
				g_varhelpDlg=CreateDialog(hinstance,MAKEINTRESOURCE(IDD_HELPDIALOG), 0, HelpDlgProc);
			else
				//ShowWindow(g_varhelpDlg,SW_SHOWDEFAULT);
				SetWindowPos(g_varhelpDlg,0,0,0,0,0,SWP_SHOWWINDOW|SWP_NOMOVE|SWP_NOSIZE);
			}break;
		case IDC_BLISTADD:{
			TVINSERTSTRUCT tvis;
			ListData* ld=NULL;
			TCHAR namebuff[MAX_PATH]={'\0'};
			int count=TreeView_GetCount(hButtonsList);
			if (count>10) break;
			if(g_iOPButtonsCount==99){
				MessageBox(NULL,_T("Congratulation!\n\
								   You have clicked this button 100 times!\n\
								   There was access violation at this point...\n\
								   And now function for freeing resources must be called...\n\
								   But no! there's only break :D"),_T("You win!"),MB_OK);
				break;
				}

			ld=mir_alloc(sizeof(ListData));
			ButtonsList[g_iOPButtonsCount++]=ld;

			ld->sl=li.List_Create(0,1);
			ld->dwOPFlags=QMF_NEW;
			ld->bIsOpServName=0;
			ld->ptszButtonName=NULL;
			ld->ptszOPQValue=NULL;
			ld->ptszQValue=NULL;
			tvis.hParent = NULL;
			tvis.hInsertAfter = TVI_LAST;
			
			GetWindowText(GetDlgItem(hdlg,IDC_BUTTONNAME),namebuff,MAX_PATH);

			tvis.item.mask=TVIF_PARAM|TVIF_TEXT;
			tvis.item.pszText=(_tcslen(namebuff))?namebuff:TranslateT("New Button");
			tvis.item.lParam=(LPARAM)ld;
			TreeView_SelectItem(hButtonsList,TreeView_InsertItem(hButtonsList,&tvis));

			}break;

		case IDC_BLISTREMOVE:{ 
			TVITEM tvi;
			ListData* ld;

			if(!(tvi.hItem=TreeView_GetSelection(hButtonsList)))
				break;

			tvi.mask=TVIF_HANDLE|TVIF_PARAM;
			TreeView_GetItem(hButtonsList,&tvi);

			ld= (ListData*)tvi.lParam;

			ld->dwOPFlags|=QMF_DELETNEEDED;	

			TreeView_DeleteItem(hButtonsList,tvi.hItem);
			if(!TreeView_GetCount(hButtonsList))
				{
				TreeView_DeleteAllItems(hMenuTree);
				EnableWindow(GetDlgItem(hdlg,IDC_MENUVALUE),FALSE);
				EnableWindow(GetDlgItem(hdlg,IDC_RCLICKVALUE),FALSE);
				EnableWindow(GetDlgItem(hdlg,IDC_ISSERVNAME),FALSE);
				EnableWindow(GetDlgItem(hdlg,IDC_INQMENU),FALSE);
				EnableWindow(GetDlgItem(hdlg,IDC_ISSERVNAME2),FALSE);
				SetWindowText(GetDlgItem(hdlg,IDC_MENUVALUE),_T(""));
				SetWindowText(GetDlgItem(hdlg,IDC_RCLICKVALUE),_T(""));
				}
			}break;

		case IDC_MTREEADD:{ 
			TVINSERTSTRUCT tvis;
			TVITEM tvi;
			ButtonData *bd=NULL;
			SortedList *sl=NULL;
			TCHAR namebuff[MAX_PATH]={'\0'};
			
			if(!TreeView_GetCount(hButtonsList)) break;
			if(!(tvi.hItem=TreeView_GetSelection(hButtonsList))) break;
			
			bd=mir_alloc(sizeof(ButtonData));
			memset(bd,0,sizeof(ButtonData));

			GetWindowText(GetDlgItem(hdlg,IDC_MENUNAME),namebuff,MAX_PATH);

			bd->dwOPPos=TreeView_GetCount(hMenuTree)-1;
			bd->pszOpName=_tcslen(namebuff)?mir_tstrdup(namebuff):mir_tstrdup(TranslateT("New Menu Entry"));
			bd->pszOpValue=mir_tstrdup(bd->pszOpName);
			bd->fEntryOpType=!_tcscmp(namebuff,_T("---"))?QMF_EX_SEPARATOR:0;
			bd->dwOPFlags=QMF_NEW;
			bd->pszName=NULL;
			bd->pszValue=NULL;


			tvi.mask=TVIF_HANDLE|TVIF_PARAM;
			
			TreeView_GetItem(hButtonsList,&tvi);

			sl=((ListData*)tvi.lParam)->sl;

			li.List_InsertPtr(sl,bd);

			tvis.hParent = NULL;
			tvis.hInsertAfter = TVI_LAST;
			tvis.item.mask=TVIF_PARAM|TVIF_TEXT;
			tvis.item.pszText=bd->pszOpName;
			tvis.item.lParam=(LPARAM)bd;
			TreeView_SelectItem(hMenuTree,TreeView_InsertItem(hMenuTree,&tvis));
			}break;

		case IDC_MTREEREMOVE:{
			TVITEM tvi;
			TVINSERTSTRUCT tvis;
			HTREEITEM hti=NULL;
			ButtonData *bd=NULL;
			tvi.mask=TVIF_HANDLE|TVIF_PARAM;
			if(!(tvi.hItem=TreeView_GetSelection(hMenuTree)))
				break;
			TreeView_GetItem(hMenuTree,&tvi);
			hti=tvi.hItem;

			bd= (ButtonData*)tvi.lParam;
			bd->dwOPFlags|=QMF_DELETNEEDED;			

			if(tvi.hItem=TreeView_GetChild(hMenuTree,tvi.hItem)){
				TCHAR strbuf[128];
				while(tvi.hItem){
					tvis.hInsertAfter=hti;
					tvi.pszText = strbuf;
					tvi.cchTextMax = sizeof(strbuf);
					tvi.mask=TVIF_HANDLE|TVIF_PARAM|TVIF_TEXT;

					TreeView_GetItem(hMenuTree,&tvi); 
					tvis.hParent=NULL;
					tvis.item=tvi;
					TreeView_InsertItem(hMenuTree,&tvis);
					tvi.hItem=TreeView_GetNextSibling(hMenuTree,tvi.hItem);
					}
				}

			TreeView_DeleteItem(hMenuTree,hti);
			if(!TreeView_GetCount(hMenuTree)){
				EnableWindow(GetDlgItem(hdlg,IDC_MENUVALUE),FALSE);
				EnableWindow(GetDlgItem(hdlg,IDC_ISSERVNAME),FALSE);
				EnableWindow(GetDlgItem(hdlg,IDC_INQMENU),FALSE);
				SetWindowText(GetDlgItem(hdlg,IDC_MENUVALUE),_T(""));
				}

			}break;

				}
			}break;

		case WM_NCDESTROY: 
			if(oldBNameProc) SetWindowLong(GetDlgItem(hdlg,IDC_BUTTONNAME), GWL_WNDPROC, (LONG) oldBNameProc);
			if(oldMNameProc) SetWindowLong(GetDlgItem(hdlg,IDC_MENUNAME)  , GWL_WNDPROC, (LONG) oldMNameProc);
			break; 

		case WM_CLOSE:
			EndDialog(hdlg,0);
			return 0;
		}
Ejemplo n.º 14
0
void wxStaticText::DoSetLabel(const wxString& str)
{
    SetWindowText(GetHwnd(), str.c_str());
}
Ejemplo n.º 15
0
HRESULT InitScene()
{
	HRESULT hr;
	D3DDISPLAYMODE mode;

	if( FAILED(hr = direct3d->GetAdapterDisplayMode(0, &mode)) )
	{
		MYERROR("Could not get adapter mode");
		return hr;
	}
	
	if( FAILED(hr = direct3d->CheckDeviceFormat( 0, D3DDEVTYPE_HAL, mode.Format, D3DUSAGE_RENDERTARGET, D3DRTYPE_TEXTURE, D3DFMT_A16B16G16R16F)) )
	{
		MYERROR("No floating point rendertarget support");
		return hr;
	}
	
	// más depth/stencil-el még müködhet
	if( FAILED(hr = direct3d->CheckDepthStencilMatch( 0, D3DDEVTYPE_HAL, mode.Format, D3DFMT_A16B16G16R16F, D3DFMT_D24S8)) )
	{
		MYERROR("D3DFMT_A16B16G16R16F does not support D3DFMT_D24S8");
		return hr;
	}

	D3DVERTEXELEMENT9 elem[] =
	{
		{ 0, 0, D3DDECLTYPE_FLOAT4, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITIONT, 0 },
		{ 0, 16, D3DDECLTYPE_FLOAT2, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 0 },
		D3DDECL_END()
	};
	
	SetWindowText(hwnd, TITLE);

	MYVALID(D3DXLoadMeshFromX("../media/meshes/skullocc3.X", D3DXMESH_MANAGED, device, NULL, NULL, NULL, NULL, &mesh1));
	MYVALID(D3DXLoadMeshFromX("../media/meshes//knot.X", D3DXMESH_MANAGED, device, NULL, NULL, NULL, NULL, &mesh2));
	MYVALID(D3DXLoadMeshFromX("../media/meshes//teapot.X", D3DXMESH_MANAGED, device, NULL, NULL, NULL, NULL, &mesh3));
	MYVALID(D3DXLoadMeshFromX("../media/meshes/sky.X", D3DXMESH_MANAGED, device, NULL, NULL, NULL, NULL, &skymesh));

	mesh = mesh1;

	//MYVALID(D3DXCreateCubeTextureFromFile(device, "../media/textures/altar.dds", &skytexture));
	//MYVALID(D3DXCreateCubeTextureFromFile(device, "../media/textures/altar_rough.dds", &roughspecular));
	MYVALID(D3DXCreateCubeTextureFromFile(device, "../media/textures/grace.dds", &skytexture));
	MYVALID(D3DXCreateCubeTextureFromFile(device, "../media/textures/grace_rough.dds", &roughspecular));
	//MYVALID(D3DXCreateCubeTextureFromFile(device, "../media/textures/beach.dds", &skytexture));
	//MYVALID(D3DXCreateCubeTextureFromFile(device, "../media/textures/beach_rough.dds", &roughspecular));
	//MYVALID(D3DXCreateCubeTextureFromFile(device, "../media/textures/stpeters.dds", &skytexture));
	//MYVALID(D3DXCreateCubeTextureFromFile(device, "../media/textures/stpeters_rough.dds", &roughspecular));

	MYVALID(D3DXCreateTextureFromFile(device, "../media/textures/gold.jpg", &texture));
	MYVALID(D3DXCreateTextureFromFile(device, "../media/textures/fresnel.png", &fresneltexture));

	// downsample & blur textures
	for( int i = 0; i < 5; ++i )
	{
		MYVALID(device->CreateTexture(screenwidth / (2 << i), screenheight / (2 << i), 1, D3DUSAGE_RENDERTARGET,
			D3DFMT_A16B16G16R16F, D3DPOOL_DEFAULT, &dstargets[i], NULL));

		MYVALID(device->CreateTexture(screenwidth / (2 << i), screenheight / (2 << i), 1, D3DUSAGE_RENDERTARGET,
			D3DFMT_A16B16G16R16F, D3DPOOL_DEFAULT, &blurtargets[i], NULL));

		MYVALID(blurtargets[i]->GetSurfaceLevel(0, &blursurfaces[i]));
		MYVALID(dstargets[i]->GetSurfaceLevel(0, &dssurfaces[i]));
	}

	// star textures (8x 1 MB @ 1080p)
	for( int i = 0; i < 4; ++i )
	{
		for( int j = 0; j < 2; ++j )
		{
			MYVALID(device->CreateTexture(screenwidth / 4, screenheight / 4, 1, D3DUSAGE_RENDERTARGET,
				D3DFMT_A16B16G16R16F, D3DPOOL_DEFAULT, &startargets[i][j], NULL));

			MYVALID(startargets[i][j]->GetSurfaceLevel(0, &starsurfaces[i][j]));
		}
	}

	// lens flare textures (2x 4 MB @ 1080p)
	for( int i = 0; i < 2; ++i )
	{
		MYVALID(device->CreateTexture(screenwidth / 2, screenheight / 2, 1, D3DUSAGE_RENDERTARGET,
			D3DFMT_A16B16G16R16F, D3DPOOL_DEFAULT, &ghosttargets[i], NULL));

		MYVALID(ghosttargets[i]->GetSurfaceLevel(0, &ghostsurfaces[i]));
	}

	// luminance textures
	for( int i = 0; i < 4; ++i )
	{
		UINT j = 256 / (4 << (2 * i));

		MYVALID(device->CreateTexture(j, j, 1, D3DUSAGE_RENDERTARGET,
			D3DFMT_R16F, D3DPOOL_DEFAULT, &avglumtargets[i], NULL));

		MYVALID(avglumtargets[i]->GetSurfaceLevel(0, &avglumsurfaces[i]));
	}

	// adapted luminance textures
	MYVALID(device->CreateTexture(1, 1, 1, D3DUSAGE_RENDERTARGET, D3DFMT_R16F, D3DPOOL_DEFAULT, &avglumtargets[4], NULL));
	MYVALID(device->CreateTexture(1, 1, 1, D3DUSAGE_RENDERTARGET, D3DFMT_R16F, D3DPOOL_DEFAULT, &avglumtargets[5], NULL));

	MYVALID(avglumtargets[4]->GetSurfaceLevel(0, &avglumsurfaces[4]));
	MYVALID(avglumtargets[5]->GetSurfaceLevel(0, &avglumsurfaces[5]));

	// afterimage textures (2x 4 MB @ 1080p)
	MYVALID(device->CreateTexture(screenwidth / 2, screenheight / 2, 1, D3DUSAGE_RENDERTARGET,
		D3DFMT_A16B16G16R16F, D3DPOOL_DEFAULT, &afterimages[0], NULL));

	MYVALID(device->CreateTexture(screenwidth / 2, screenheight / 2, 1, D3DUSAGE_RENDERTARGET,
		D3DFMT_A16B16G16R16F, D3DPOOL_DEFAULT, &afterimages[1], NULL));

	MYVALID(afterimages[0]->GetSurfaceLevel(0, &aftersurfaces[0]));
	MYVALID(afterimages[1]->GetSurfaceLevel(0, &aftersurfaces[1]));

	// other
	MYVALID(device->CreateTexture(512, 512, 1, 0, D3DFMT_A8R8G8B8, D3DPOOL_MANAGED, &text, NULL));
	MYVALID(device->CreateTexture(screenwidth, screenheight, 1, D3DUSAGE_RENDERTARGET, D3DFMT_A16B16G16R16F, D3DPOOL_DEFAULT, &scenetarget, NULL));
	MYVALID(device->CreateVertexDeclaration(elem, &vertexdecl));

	// other
	MYVALID(scenetarget->GetSurfaceLevel(0, &scenesurface));

	MYVALID(DXCreateEffect("../media/shaders/hdreffects.fx", device, &hdreffect));
	MYVALID(DXCreateEffect("../media/shaders/hdrfresnel.fx", device, &fresnel));
	MYVALID(DXCreateEffect("../media/shaders/sky.fx", device, &skyeffect));

	device->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);
	device->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
	device->SetSamplerState(0, D3DSAMP_MIPFILTER, D3DTEXF_NONE);
	device->SetSamplerState(0, D3DSAMP_ADDRESSU, D3DTADDRESS_WRAP);
	device->SetSamplerState(0, D3DSAMP_ADDRESSV, D3DTADDRESS_WRAP);

	device->SetSamplerState(1, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);
	device->SetSamplerState(1, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
	device->SetSamplerState(1, D3DSAMP_MIPFILTER, D3DTEXF_NONE);
	device->SetSamplerState(1, D3DSAMP_ADDRESSU, D3DTADDRESS_BORDER);
	device->SetSamplerState(1, D3DSAMP_ADDRESSV, D3DTADDRESS_BORDER);

	device->SetSamplerState(2, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);
	device->SetSamplerState(2, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
	device->SetSamplerState(2, D3DSAMP_MIPFILTER, D3DTEXF_NONE);
	device->SetSamplerState(2, D3DSAMP_ADDRESSU, D3DTADDRESS_BORDER);
	device->SetSamplerState(2, D3DSAMP_ADDRESSV, D3DTADDRESS_BORDER);

	device->SetSamplerState(3, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);
	device->SetSamplerState(3, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
	device->SetSamplerState(3, D3DSAMP_MIPFILTER, D3DTEXF_NONE);

	device->SetSamplerState(4, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);
	device->SetSamplerState(4, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
	device->SetSamplerState(4, D3DSAMP_MIPFILTER, D3DTEXF_NONE);

	device->SetSamplerState(5, D3DSAMP_MINFILTER, D3DTEXF_POINT);
	device->SetSamplerState(5, D3DSAMP_MAGFILTER, D3DTEXF_POINT);
	device->SetSamplerState(5, D3DSAMP_MIPFILTER, D3DTEXF_NONE);

	DXRenderText(HELP_TEXT, text, 512, 512);

	// setup camera
	D3DXMatrixPerspectiveFovLH(&proj, D3DX_PI / 3, (float)screenwidth / (float)screenheight, 1, 50);
	D3DXMatrixIdentity(&world);

	cameraangle				= D3DXVECTOR2(0.6f, 0.1f);
	objectangle				= D3DXVECTOR2(0, 0);
	exposurevelocity		= 0;
	destexposurevelocity	= 0;
	exposure				= 0.05f;
	targetluminance			= 0.03f;

	UpdateText();

	return S_OK;
}
Ejemplo n.º 16
0
INT_PTR SettingsAdvanced::ProcMessage(UINT message, WPARAM wParam, LPARAM lParam)
{
    switch(message)
    {
        case WM_INITDIALOG:
            {
                LocalizeWindow(hwnd);

                //--------------------------------------------

                HWND hwndToolTip = CreateWindowEx(NULL, TOOLTIPS_CLASS, NULL, WS_POPUP|TTS_NOPREFIX|TTS_ALWAYSTIP,
                    CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
                    hwnd, NULL, hinstMain, NULL);

                TOOLINFO ti;
                zero(&ti, sizeof(ti));
                ti.cbSize = sizeof(ti);
                ti.uFlags = TTF_SUBCLASS|TTF_IDISHWND;
                ti.hwnd = hwnd;

                SendMessage(hwndToolTip, TTM_SETMAXTIPWIDTH, 0, 500);
                SendMessage(hwndToolTip, TTM_SETDELAYTIME, TTDT_AUTOPOP, 14000);

                //------------------------------------

                UINT sceneBufferingTime = GlobalConfig->GetInt(TEXT("General"), TEXT("SceneBufferingTime"), 400);
                SendMessage(GetDlgItem(hwnd, IDC_SCENEBUFFERTIME), UDM_SETRANGE32, 60, 20000);
                SendMessage(GetDlgItem(hwnd, IDC_SCENEBUFFERTIME), UDM_SETPOS32, 0, sceneBufferingTime);

                //------------------------------------

                bool bUseMTOptimizations = AppConfig->GetInt(TEXT("General"), TEXT("UseMultithreadedOptimizations"), TRUE) != 0;
                SendMessage(GetDlgItem(hwnd, IDC_USEMULTITHREADEDOPTIMIZATIONS), BM_SETCHECK, bUseMTOptimizations ? BST_CHECKED : BST_UNCHECKED, 0);

                HWND hwndTemp = GetDlgItem(hwnd, IDC_PRIORITY);
                SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)Str("Settings.Advanced.Priority.High"));
                SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)Str("Settings.Advanced.Priority.AboveNormal"));
                SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)Str("Settings.Advanced.Priority.Normal"));
                SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)Str("Settings.Advanced.Priority.Idle"));

                CTSTR pStr = AppConfig->GetStringPtr(TEXT("General"), TEXT("Priority"), TEXT("Normal"));
                if (scmpi(pStr, TEXT("Idle")) == 0)
                    SendMessage(hwndTemp, CB_SETCURSEL, 3, 0);
                else if (scmpi(pStr, TEXT("Above Normal")) == 0)
                    SendMessage(hwndTemp, CB_SETCURSEL, 1, 0);
                else if (scmpi(pStr, TEXT("High")) == 0)
                    SendMessage(hwndTemp, CB_SETCURSEL, 0, 0);
                else //Normal
                    SendMessage(hwndTemp, CB_SETCURSEL, 2, 0);

                //------------------------------------

                bool bDisablePreviewEncoding = GlobalConfig->GetInt(TEXT("General"), TEXT("DisablePreviewEncoding"), false) != 0;
                SendMessage(GetDlgItem(hwnd, IDC_DISABLEPREVIEWENCODING), BM_SETCHECK, bDisablePreviewEncoding ? BST_CHECKED : BST_UNCHECKED, 0);

                //------------------------------------

                bool bAllowOtherHotkeyModifiers = GlobalConfig->GetInt(TEXT("General"), TEXT("AllowOtherHotkeyModifiers"), true) != 0;
                SendMessage(GetDlgItem(hwnd, IDC_ALLOWOTHERHOTKEYMODIFIERS), BM_SETCHECK, bAllowOtherHotkeyModifiers ? BST_CHECKED : BST_UNCHECKED, 0);

                //--------------------------------------------

                hwndTemp = GetDlgItem(hwnd, IDC_PRESET);
                static const CTSTR preset_names[7] = {TEXT("ultrafast"), TEXT("superfast"), TEXT("veryfast"), TEXT("faster"), TEXT("fast"), TEXT("medium"), TEXT("slow")};
                for(int i=0; i<7; i++)
                    SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)preset_names[i]);

                LoadSettingComboString(hwndTemp, TEXT("Video Encoding"), TEXT("Preset"), TEXT("veryfast"));

                ti.lpszText = (LPWSTR)Str("Settings.Advanced.VideoEncoderCPUTradeoffTooltip");
                ti.uId = (UINT_PTR)hwndTemp;
                SendMessage(hwndToolTip, TTM_ADDTOOL, 0, (LPARAM)&ti);

                //------------------------------------

                bool bUseCFR = AppConfig->GetInt(TEXT("Video Encoding"), TEXT("UseCFR"), 0) != 0;
                SendMessage(GetDlgItem(hwnd, IDC_USECFR), BM_SETCHECK, bUseCFR ? BST_CHECKED : BST_UNCHECKED, 0);

                //------------------------------------

                bool bUseCustomX264Settings = AppConfig->GetInt(TEXT("Video Encoding"), TEXT("UseCustomSettings")) != 0;
                String strX264Settings = AppConfig->GetString(TEXT("Video Encoding"), TEXT("CustomSettings"));

                SendMessage(GetDlgItem(hwnd, IDC_USEVIDEOENCODERSETTINGS), BM_SETCHECK, bUseCustomX264Settings ? BST_CHECKED : BST_UNCHECKED, 0);
                SetWindowText(GetDlgItem(hwnd, IDC_VIDEOENCODERSETTINGS), strX264Settings);

                ti.lpszText = (LPWSTR)Str("Settings.Advanced.VideoEncoderSettingsTooltip");
                ti.uId = (UINT_PTR)GetDlgItem(hwnd, IDC_VIDEOENCODERSETTINGS);
                SendMessage(hwndToolTip, TTM_ADDTOOL, 0, (LPARAM)&ti);

                ti.uId = (UINT_PTR)GetDlgItem(hwnd, IDC_USEVIDEOENCODERSETTINGS);
                SendMessage(hwndToolTip, TTM_ADDTOOL, 0, (LPARAM)&ti);

                EnableWindow(GetDlgItem(hwnd, IDC_VIDEOENCODERSETTINGS), bUseCustomX264Settings);

                //--------------------------------------------

                bool bUnlockFPS = AppConfig->GetInt(TEXT("Video"), TEXT("UnlockFPS")) != 0;
                SendMessage(GetDlgItem(hwnd, IDC_UNLOCKHIGHFPS), BM_SETCHECK, bUnlockFPS ? BST_CHECKED : BST_UNCHECKED, 0);

                //------------------------------------

                bool bHasQSV = CheckQSVHardwareSupport(false);
                EnableWindow(GetDlgItem(hwnd, IDC_USEQSV), bHasQSV);

                bool bUseQSV = AppConfig->GetInt(TEXT("Video Encoding"), TEXT("UseQSV")) != 0;
                SendMessage(GetDlgItem(hwnd, IDC_USEQSV), BM_SETCHECK, bUseQSV ? BST_CHECKED : BST_UNCHECKED, 0);

                bool bQSVUseVideoEncoderSettings = AppConfig->GetInt(TEXT("Video Encoding"), TEXT("QSVUseVideoEncoderSettings")) != 0;
                SendMessage(GetDlgItem(hwnd, IDC_QSVUSEVIDEOENCODERSETTINGS), BM_SETCHECK, bQSVUseVideoEncoderSettings ? BST_CHECKED : BST_UNCHECKED, 0);
                
                ti.lpszText = (LPWSTR)Str("Settings.Advanced.QSVUseVideoEncoderSettingsTooltip");
                ti.uId = (UINT_PTR)GetDlgItem(hwnd, IDC_QSVUSEVIDEOENCODERSETTINGS);
                SendMessage(hwndToolTip, TTM_ADDTOOL, 0, (LPARAM)&ti);

                EnableWindow(GetDlgItem(hwnd, IDC_QSVUSEVIDEOENCODERSETTINGS), bHasQSV && bUseQSV);

                //------------------------------------

                bool bSyncToVideoTime = AppConfig->GetInt(TEXT("Audio"), TEXT("SyncToVideoTime")) != 0;
                SendMessage(GetDlgItem(hwnd, IDC_SYNCTOVIDEOTIME), BM_SETCHECK, bSyncToVideoTime ? BST_CHECKED : BST_UNCHECKED, 0);

                //------------------------------------

                bool bUseMicQPC = GlobalConfig->GetInt(TEXT("Audio"), TEXT("UseMicQPC")) != 0;
                SendMessage(GetDlgItem(hwnd, IDC_USEMICQPC), BM_SETCHECK, bUseMicQPC ? BST_CHECKED : BST_UNCHECKED, 0);

                //------------------------------------

                int bufferTime = GlobalConfig->GetInt(TEXT("General"), TEXT("SceneBufferingTime"), 400);

                int globalAudioTimeAdjust = GlobalConfig->GetInt(TEXT("Audio"), TEXT("GlobalAudioTimeAdjust"));
                SendMessage(GetDlgItem(hwnd, IDC_AUDIOTIMEADJUST), UDM_SETRANGE32, -bufferTime, 1000);
                SendMessage(GetDlgItem(hwnd, IDC_AUDIOTIMEADJUST), UDM_SETPOS32, 0, globalAudioTimeAdjust);

                //------------------------------------

                int lowLatencyFactor = AppConfig->GetInt(TEXT("Publish"), TEXT("LatencyFactor"), 20);
                SetDlgItemInt(hwnd, IDC_LATENCYTUNE, lowLatencyFactor, TRUE);

                int bLowLatencyAutoMethod = AppConfig->GetInt(TEXT("Publish"), TEXT("LowLatencyMethod"), 0);
                SendMessage(GetDlgItem(hwnd, IDC_LATENCYMETHOD), BM_SETCHECK, bLowLatencyAutoMethod ? BST_CHECKED : BST_UNCHECKED, 0);

                //------------------------------------

                MIB_IPADDRTABLE tempTable;
                DWORD dwSize = 0;
                if (GetIpAddrTable (&tempTable, &dwSize, TRUE) == ERROR_INSUFFICIENT_BUFFER)
                {
                    PMIB_IPADDRTABLE ipTable;

                    ipTable = (PMIB_IPADDRTABLE)Allocate(dwSize);

                    if (GetIpAddrTable (ipTable, &dwSize, TRUE) == NO_ERROR)
                    {
                        DWORD i;

                        hwndTemp = GetDlgItem(hwnd, IDC_BINDIP);
                        SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)TEXT("Default"));

                        for (i=0; i < ipTable->dwNumEntries; i++)
                        {
                            String strAddress;
                            DWORD strLength = 32;

                            // don't allow binding to localhost
                            if ((ipTable->table[i].dwAddr & 0xFF) == 127)
                                continue;

                            strAddress.SetLength(strLength);

                            SOCKADDR_IN IP;

                            IP.sin_addr.S_un.S_addr = ipTable->table[i].dwAddr;
                            IP.sin_family = AF_INET;
                            IP.sin_port = 0;
                            zero(&IP.sin_zero, sizeof(IP.sin_zero));

                            WSAAddressToString ((LPSOCKADDR)&IP, sizeof(IP), NULL, strAddress.Array(), &strLength);
                            SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)strAddress.Array());
                        }

                        LoadSettingComboString(hwndTemp, TEXT("Publish"), TEXT("BindToIP"), TEXT("Default"));
                    }

                    Free(ipTable);
                }

                //need this as some of the dialog item sets above trigger the notifications
                ShowWindow(GetDlgItem(hwnd, IDC_INFO), SW_HIDE);
                SetChangedSettings(false);
                return TRUE;
            }

        case WM_COMMAND:
            switch(LOWORD(wParam))
            {
                case IDC_USEVIDEOENCODERSETTINGS:
                    if(HIWORD(wParam) == BN_CLICKED)
                    {
                        BOOL bUseVideoEncoderSettings = SendMessage((HWND)lParam, BM_GETCHECK, 0, 0) == BST_CHECKED;
                        EnableWindow(GetDlgItem(hwnd, IDC_VIDEOENCODERSETTINGS), bUseVideoEncoderSettings);

                        ShowWindow(GetDlgItem(hwnd, IDC_INFO), SW_SHOW);
                        SetChangedSettings(true);
                    }
                    break;

                case IDC_SCENEBUFFERTIME_EDIT:
                case IDC_AUDIOTIMEADJUST_EDIT:
                case IDC_VIDEOENCODERSETTINGS:
                case IDC_LATENCYTUNE:
                    if(HIWORD(wParam) == EN_CHANGE)
                    {
                        ShowWindow(GetDlgItem(hwnd, IDC_INFO), SW_SHOW);
                        SetChangedSettings(true);
                    }
                    break;

                /*case IDC_TIMER1:
                case IDC_TIMER2:
                case IDC_TIMER3:
                case IDC_DISABLED3DCOMPATIBILITY:
                    if(HIWORD(wParam) == BN_CLICKED)
                    {
                        ShowWindow(GetDlgItem(hwnd, IDC_INFO), SW_SHOW);
                        SetChangedSettings(true);
                    }
                    break;*/

                case IDC_USESENDBUFFER:
                    if(HIWORD(wParam) == BN_CLICKED)
                    {
                        BOOL bUseSendBuffer = SendMessage((HWND)lParam, BM_GETCHECK, 0, 0) == BST_CHECKED;
                        EnableWindow(GetDlgItem(hwnd, IDC_SENDBUFFERSIZE), bUseSendBuffer);

                        ShowWindow(GetDlgItem(hwnd, IDC_INFO), SW_SHOW);
                        SetChangedSettings(true);
                    }
                    break;

                case IDC_PRESET:
                    if(HIWORD(wParam) == CBN_SELCHANGE)
                    {
                        HWND hwndTemp = (HWND)lParam;

                        String strNewPreset = GetCBText(hwndTemp);
                        if (scmp(strNewPreset.Array(), AppConfig->GetString(TEXT("Video Encoding"), TEXT("Preset"), TEXT("veryfast"))))
                        {
                            static BOOL bHasWarned = FALSE;
                            if (!bHasWarned && MessageBox(hwnd, Str("Settings.Advanced.PresetWarning"), NULL, MB_ICONEXCLAMATION | MB_YESNO) == IDNO)
                            {
                                LoadSettingComboString(hwndTemp, TEXT("Video Encoding"), TEXT("Preset"), TEXT("veryfast"));
                            }
                            else
                            {
                                bHasWarned = TRUE;
                                ShowWindow(GetDlgItem(hwnd, IDC_INFO), SW_SHOW);
                                SetChangedSettings(true);
                            }
                        }
                    }
                    break;

                case IDC_SENDBUFFERSIZE:
                case IDC_PRIORITY:
                case IDC_BINDIP:
                    if(HIWORD(wParam) == CBN_SELCHANGE || HIWORD(wParam) == CBN_EDITCHANGE)
                    {
                        ShowWindow(GetDlgItem(hwnd, IDC_INFO), SW_SHOW);
                        SetChangedSettings(true);
                    }
                    break;

                case IDC_USEQSV:
                    if(HIWORD(wParam) == BN_CLICKED)
                    {
                        bool bUseQSV = SendMessage((HWND)lParam, BM_GETCHECK, 0, 0) == BST_CHECKED;
                        EnableWindow(GetDlgItem(hwnd, IDC_QSVUSEVIDEOENCODERSETTINGS), bUseQSV);
                    }
                case IDC_DISABLEPREVIEWENCODING:
                case IDC_ALLOWOTHERHOTKEYMODIFIERS:
                case IDC_USEMICQPC:
                case IDC_SYNCTOVIDEOTIME:
                case IDC_USECFR:
                case IDC_USEMULTITHREADEDOPTIMIZATIONS:
                case IDC_UNLOCKHIGHFPS:
                case IDC_LATENCYMETHOD:
                case IDC_QSVUSEVIDEOENCODERSETTINGS:
                    if(HIWORD(wParam) == BN_CLICKED)
                    {
                        ShowWindow(GetDlgItem(hwnd, IDC_INFO), SW_SHOW);
                        SetChangedSettings(true);
                    }
                    break;
            }

    }
    return FALSE;
}
Ejemplo n.º 17
0
LRESULT CLoginDlg::OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
	
	DoDataExchange();

	::ZeroMemory(&m_RegInfo, sizeof(m_RegInfo));
	
	// TODO: Add your message handler code here and/or call default
	HICON hIcon= ::LoadIcon(_Module.GetModuleInstance(), MAKEINTRESOURCE(IDR_MAINFRAME));
	SetIcon(hIcon, FALSE);
	DeleteObject(hIcon);
	
	SetTimer(1,100,NULL);

	CenterWindow();
	m_cfg.m_FileName = System::GetProcessPathName() +  L"\\PSDemo.ini";

	CString ISIP = m_cfg.Get(L"Config", L"ISIP",L"Auto");
	CString UserName = m_cfg.Get(L"Config", L"UserName", L"ps_test");
	CString Password = m_cfg.Get(L"Config", L"Password", L"123123");
	int   AppID		= m_cfg.Get(L"Config", L"AppID",1)
		, SubID		= m_cfg.Get(L"Config", L"SubID",1)
		, MajorVer	= m_cfg.Get(L"Config", L"MajorVer",1)
		, SubVer	= m_cfg.Get(L"Config", L"SubVer",1);
	
	CComboBox box = GetDlgItem(IDC_COMBO1);
	struct ISServer{ wchar_t * server; } Servers[] = {
		L"tcp://60.28.222.89:7788",
		L"tcp://60.28.222.89:7789",
		L"tcp://127.0.0.1:7788",
		L"auto",
		L"tcp://192.168.1.252:7788",
		L"tcp://192.168.1.13:7788",
		NULL,
	};
	for(u_int a=0; a<sizeof(Servers)/sizeof(ISServer); a++)
	{
		box.InsertString(0,Servers[a].server);
	}
	box.SetWindowText(ISIP);

	CMessageLoop* pLoop = _Module.GetMessageLoop();
	ATLASSERT(pLoop != NULL);
	pLoop->AddMessageFilter(this);
	pLoop->AddIdleHandler(this);


	box = GetDlgItem(IDC_APPID);
	for(int a=0; a<10; a++)
	{
		CString s;
		s.Format(L"%d", a);
		int nItem = box.InsertString(a, s);
		box.SetItemData(nItem, a);
	}
	box.SetCurSel(AppID);
	box = GetDlgItem(IDC_SUBID);
	for(int a=0; a<10; a++)
	{
		CString s;
		s.Format(L"%d", a);
		int nItem = box.InsertString(a, s);
		box.SetItemData(nItem, a);
	}
	box.SetCurSel(SubID);
	
	GetFramework()->SetUIClient(this);
	
	SetDlgItemText(IDC_USERNAME, UserName);
	SetDlgItemText(IDC_PASSWORD, Password);



	CString s;
	s.Format(L"PS - %s %s", _T(__DATE__), _T(__TIME__) );
	SetWindowText(s);

	m_mbtn.SubclassWindow(GetDlgItem(IDC_Game));
	m_mbtn.SpecailMenu(IDR_LOGINOPT);

	UIAddChildWindowContainer(m_hWnd);
//	logwin.Create(NULL,CWindow::rcDefault, L"LogWin");
	return TRUE;
}
Ejemplo n.º 18
0
void InitRunDlg(HWND hDlg, LPRUNDLG_DATA lprd)
{
    HWND hCB;
    int i;
#ifdef WINNT
    HANDLE hThread = NULL;
    DWORD dwDummy;
#endif

    if (lprd->lpszTitle)
        SetWindowText(hDlg, lprd->lpszTitle);

    if (lprd->lpszPrompt)
    {
        SetDlgItemText(hDlg, IDD_PROMPT, lprd->lpszPrompt);
    }

    if (lprd->hIcon)
    {
        Static_SetIcon(GetDlgItem(hDlg, IDD_ICON), lprd->hIcon);
    }

    if (lprd->dwFlags & RFD_NOBROWSE)
    {
        HWND hBrowse;

        hBrowse = GetDlgItem(hDlg, IDD_BROWSE);

        ExchangeWindowPos(hBrowse, GetDlgItem(hDlg, IDCANCEL));
        ExchangeWindowPos(hBrowse, GetDlgItem(hDlg, IDOK));

        ShowWindow(hBrowse, SW_HIDE);
    }

    if (lprd->dwFlags & RFD_NOSHOWOPEN)
    {
        ShowWindow(GetDlgItem(hDlg, IDD_RUNDLGOPENPROMPT), SW_HIDE);
    }

#ifdef SHOWSTATES
    /* Note that we need to fill this list first so that the SELCHANGE
     * message sent below will do the right thing.
     */
    hCB = GetDlgItem(hDlg, IDD_STATE);
    for (i = 0; i < ARRAYSIZE(pnStates); ++i)
    {
        if (SendMessage(hCB, CB_ADDSTRING, 0, (LPARAM)(LPTSTR)szStates[i]) < 0)
        {
            break;
        }
    }
    SendMessage(hCB, CB_SETCURSEL, 0, 0L);
#endif

    hCB = GetDlgItem(hDlg, IDD_COMMAND);
    SendMessage(hCB, CB_LIMITTEXT, MAX_PATH-1, 0L);

    OpenRunDlgMRU();

    if (g_hMRURunDlg)
    {
        int nMax;
        TCHAR szCommand[MAX_PATH];

        for (nMax=EnumMRUList(g_hMRURunDlg, -1, NULL, 0), i=0; i<nMax; ++i)
        {
            if (EnumMRUList(g_hMRURunDlg, i, szCommand, ARRAYSIZE(szCommand)) > 0)
            {
                PSTARTINFO pStartInfo;

                /* Parse the line into the STARTINFO struct
                 */
                pStartInfo = ParseIniLine(szCommand);

                /* The command to run goes in the combobox.
                 */
                if (SendMessage(hCB, CB_ADDSTRING, 0, (LPARAM)(LPTSTR)szCommand)
                        != i)
                {
                    if (pStartInfo)
                    {
                        LocalFree((HLOCAL)pStartInfo);
                    }
                }
                else
                {
                    SendMessage(hCB, CB_SETITEMDATA, i, (LPARAM)(LPSTARTINFO)pStartInfo);
                }
            }
        }
    }

    if (!(lprd->dwFlags & RFD_NODEFFILE))
    {
        SendMessage(hCB, CB_SETCURSEL, 0, 0L);
    }
    SendMessage(hDlg, WM_COMMAND, MAKEWPARAM(IDD_COMMAND, CBN_SELCHANGE), (LPARAM) hCB);

    SetWindowLong(hDlg, DWL_USER, (LONG)lprd);

    // Make sure the OK button is initialized properly
    EnableOKButton(hDlg, NULL);

#ifdef WINNT
    //
    // Create the thread that will take care of the
    // "Run in Separate Memory Space" checkbox in the background.
    //

    if (lprd->dwFlags & RFD_NOSEPMEMORY_BOX)
    {
        ShowWindow(GetDlgItem(hDlg, IDD_RUNINSEPARATE), SW_HIDE);
    }
    else
    {
        Assert( g_hCheckNow==NULL );
        g_hCheckNow = CreateEvent( NULL, TRUE, FALSE, NULL );
        if (g_hCheckNow) {

            g_bCheckRunInSep = TRUE;
            hThread = CreateThread( NULL,
                                    0,
                                    (LPTHREAD_START_ROUTINE)CheckRunInSeparateThread,
                                    (LPVOID)hDlg,
                                    0,
                                    &dwDummy
                                   );
        }

        if ((g_hCheckNow==NULL) || (!g_bCheckRunInSep) || (hThread==NULL)) {

            //
            // We've encountered a problem setting up, so make the user
            // choose.
            //

            CheckDlgButton( hDlg, IDD_RUNINSEPARATE, 1 );
            EnableWindow( GetDlgItem( hDlg, IDD_RUNINSEPARATE ), TRUE );
            g_bCheckRunInSep = FALSE;
        }

        //
        // These calls will just do nothing if either handle is NULL.
        //
        if (hThread)
            CloseHandle( hThread );
        if (g_hCheckNow)
            SetEvent( g_hCheckNow );
    }

#endif // WINNT


}
Ejemplo n.º 19
0
/**************************************************************************
...
**************************************************************************/
void
clear_output_window(void)
{
  SetWindowText(logoutput_win,"");
  output_window_append(ftc_client, _("Cleared output window."));
}
Ejemplo n.º 20
0
BOOL CALLBACK CpuDlgProc(HWND hW, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	char cpuspeedc[20];
	char features[256];
	char cfps[20];
	char cFrameskip[20];
	char cConsecutiveFrames[20];
	char cConsecutiveSkip[20];
	u32 newopts;

	switch(uMsg) {
		case WM_INITDIALOG:
            SetWindowText(hW, _("Cpu Config"));
			SetDlgItemText(hW, IDC_VENDORINPUT,cpuinfo.x86ID );
            SetDlgItemText(hW, IDC_FAMILYINPUT, cpuinfo.x86Fam);
			sprintf(cpuspeedc,"%d MHZ",cpuinfo.cpuspeed);
			SetDlgItemText(hW, IDC_CPUSPEEDINPUT, cpuspeedc);
			Static_SetText(GetDlgItem(hW, IDC_VENDORNAME), _("CPU Vendor"));
			Static_SetText(GetDlgItem(hW, IDC_FAMILYNAME), _("Family"));
			Static_SetText(GetDlgItem(hW, IDC_CPUSPEEDNAME), _("CPU Speed"));
			Static_SetText(GetDlgItem(hW, IDC_FEATURESNAME), _("Features"));
			Static_SetText(GetDlgItem(hW, IDC_CPU_EEREC), _("EERec -  EE/IOP recompiler (need MMX/SSE)"));
			Static_SetText(GetDlgItem(hW, IDC_CPU_VUGROUP), _("VU Recompilers - All options are set by default"));
			Static_SetText(GetDlgItem(hW, IDC_CPU_VU0REC), _("VU0rec - enable recompiler for VU0 unit"));
			Static_SetText(GetDlgItem(hW, IDC_CPU_VU1REC), _("VU1rec - enable recompiler for VU1 unit"));
			Static_SetText(GetDlgItem(hW, IDC_CPU_GSMULTI), _("Multi threaded GS mode (MTGS)\n(faster on dual core/HT procs, requires pcsx2 restart)"));
			Static_SetText(GetDlgItem(hW, IDC_FRAMELIMIT), _("Frame Limiting (F4 key switches the mode in-game!)"));
			Static_SetText(GetDlgItem(hW, IDC_CPU_FL_NORMAL), _("Normal - All frames are rendered as fast as possible."));
			Static_SetText(GetDlgItem(hW, IDC_CPU_FL_LIMIT), _("Limit - Force frames to normal speeds if too fast."));
			Static_SetText(GetDlgItem(hW, IDC_CPU_FL_SKIP), _("Frame Skip - In order to achieve normal speeds,\nsome frames are skipped (fast).\nFps displayed counts skipped frames too."));
			Static_SetText(GetDlgItem(hW, IDC_CPU_FL_SKIPVU), _("VU Skip - Same as 'Frame Skip', but tries to skip more.\nArtifacts might be present, but will be faster."));
			Static_SetText(GetDlgItem(hW, IDC_CUSTOM_FPS), _("Custom FPS Limit (0=auto):"));
			Static_SetText(GetDlgItem(hW, IDC_FRAMESKIP_LABEL1), _("Skip Frames when slower than:\n(See Note 1)"));
			Static_SetText(GetDlgItem(hW, IDC_FRAMESKIP_LABEL2), _("Consecutive Frames before skipping:\n(See Note 2)"));
			Static_SetText(GetDlgItem(hW, IDC_FRAMESKIP_LABEL3), _("*Note 1: Will only skip when slower than this fps number.\n (0 = Auto) ; (9999 = Forced-Frameskip regardless of speed.)\n (e.g. If set to 45, will only skip when slower than 45fps.)"));
			Static_SetText(GetDlgItem(hW, IDC_FRAMESKIP_LABEL4), _("*Note 2: Will render this number of consecutive frames before\n  skipping the next frame. (0=default)\n (e.g. If set to 2, will render 2 frames before skipping 1.)"));
			Static_SetText(GetDlgItem(hW, IDC_FRAMESKIP_LABEL5), _("Consecutive Frames to skip:\n(See Note 3)"));
			Static_SetText(GetDlgItem(hW, IDC_FRAMESKIP_LABEL6), _("*Note 3: Will skip this number of frames before\n  rendering the next sequence of frames. (0=default)\n (e.g. If set to 2, will skip 2 consecutive frames whenever its time\n  to skip.)"));

			Button_SetText(GetDlgItem(hW, IDOK), _("OK"));
			Button_SetText(GetDlgItem(hW, IDCANCEL), _("Cancel"));

			//features[0]=':';
			//strcat(features,"");
			strcpy(features,"");
            if(cpucaps.hasMultimediaExtensions) strcat(features,"MMX");
            if(cpucaps.hasStreamingSIMDExtensions) strcat(features,",SSE");
            if(cpucaps.hasStreamingSIMD2Extensions) strcat(features,",SSE2");
			if(cpucaps.hasStreamingSIMD3Extensions) strcat(features,",SSE3");
			if(cpucaps.hasSupplementalStreamingSIMD3Extensions) strcat(features,",SSSE3");
			if(cpucaps.hasStreamingSIMD4Extensions) strcat(features,",SSE4.1");
//            if(cpucaps.has3DNOWInstructionExtensions) strcat(features,",3DNOW");
//            if(cpucaps.has3DNOWInstructionExtensionsExt)strcat(features,",3DNOW+");
//			if(cpucaps.hasAMD64BitArchitecture) strcat(features,",x86-64");
            SetDlgItemText(hW, IDC_FEATURESINPUT, features);

			CheckDlgButton(hW, IDC_CPU_EEREC, !!(Config.Options&PCSX2_EEREC));
			CheckDlgButton(hW, IDC_CPU_VU0REC, !!(Config.Options&PCSX2_VU0REC));
			CheckDlgButton(hW, IDC_CPU_VU1REC, !!(Config.Options&PCSX2_VU1REC));

			EnableDlgItem( hW, IDC_CPU_EEREC, !g_Session.ForceDisableEErec );
			EnableDlgItem( hW, IDC_CPU_VU0REC, !g_Session.ForceDisableVU0rec );
			EnableDlgItem( hW, IDC_CPU_VU1REC, !g_Session.ForceDisableVU1rec );

			CheckDlgButton(hW, IDC_CPU_GSMULTI, !!CHECK_MULTIGS);

			CheckRadioButton(hW,IDC_CPU_FL_NORMAL, IDC_CPU_FL_NORMAL+3, IDC_CPU_FL_NORMAL+(CHECK_FRAMELIMIT>>10));
			
			sprintf(cfps,"%d",Config.CustomFps);
			SetDlgItemText(hW, IDC_CUSTOMFPS, cfps);

			sprintf(cFrameskip,"%d",Config.CustomFrameSkip);
			SetDlgItemText(hW, IDC_CUSTOM_FRAMESKIP, cFrameskip);
			
			sprintf(cConsecutiveFrames,"%d",Config.CustomConsecutiveFrames);
			SetDlgItemText(hW, IDC_CUSTOM_CONSECUTIVE_FRAMES, cConsecutiveFrames);

			sprintf(cConsecutiveSkip,"%d",Config.CustomConsecutiveSkip);
			SetDlgItemText(hW, IDC_CUSTOM_CONSECUTIVE_SKIP, cConsecutiveSkip);

			//EnableWindow( GetDlgItem( hW, IDC_CPU_GSMULTI ), !g_GameInProgress );

			return TRUE;

		case WM_COMMAND:
			switch(LOWORD(wParam))
			{
				case IDCANCEL:
					EndDialog(hW, FALSE);
				return FALSE;

				case IDOK:
					newopts = 0;

					if( SendDlgItemMessage(hW,IDC_CPU_EEREC,BM_GETCHECK,0,0) ) newopts |= PCSX2_EEREC;

					if( SendDlgItemMessage(hW,IDC_CPU_VU0REC,BM_GETCHECK,0,0) ) newopts |= PCSX2_VU0REC;
					if( SendDlgItemMessage(hW,IDC_CPU_VU1REC,BM_GETCHECK,0,0) ) newopts |= PCSX2_VU1REC;

					if( SendDlgItemMessage(hW,IDC_CPU_GSMULTI,BM_GETCHECK,0,0) ) newopts |= PCSX2_GSMULTITHREAD;

					if( SendDlgItemMessage(hW,IDC_CPU_FL_NORMAL,BM_GETCHECK,0,0) ) newopts |= PCSX2_FRAMELIMIT_NORMAL;
					else if( SendDlgItemMessage(hW,IDC_CPU_FL_LIMIT,BM_GETCHECK,0,0) ) newopts |= PCSX2_FRAMELIMIT_LIMIT;
					else if( SendDlgItemMessage(hW,IDC_CPU_FL_SKIP,BM_GETCHECK,0,0) ) newopts |= PCSX2_FRAMELIMIT_SKIP;
					else if( SendDlgItemMessage(hW,IDC_CPU_FL_SKIPVU,BM_GETCHECK,0,0) ) newopts |= PCSX2_FRAMELIMIT_VUSKIP;

					GetDlgItemText(hW, IDC_CUSTOMFPS, cfps, 20);
					Config.CustomFps = atoi(cfps);

					GetDlgItemText(hW, IDC_CUSTOM_FRAMESKIP, cFrameskip, 20);
					Config.CustomFrameSkip = atoi(cFrameskip);

					GetDlgItemText(hW, IDC_CUSTOM_CONSECUTIVE_FRAMES, cConsecutiveFrames, 20);
					Config.CustomConsecutiveFrames = atoi(cConsecutiveFrames);

					GetDlgItemText(hW, IDC_CUSTOM_CONSECUTIVE_SKIP, cConsecutiveSkip, 20);
					Config.CustomConsecutiveSkip = atoi(cConsecutiveSkip);

					EndDialog(hW, TRUE);

					if( Config.Options != newopts )
					{
						SysRestorableReset();

						if( (Config.Options&PCSX2_GSMULTITHREAD) ^ (newopts&PCSX2_GSMULTITHREAD) )
						{
							// Need the MTGS setting to take effect, so close out the plugins:
							PluginsResetGS();
							if( CHECK_MULTIGS )
								Console::Notice( "MTGS mode disabled.\n\tEnjoy the fruits of single-threaded simpicity." );
							else
								Console::Notice( "MTGS mode enabled.\n\tWelcome to multi-threaded awesomeness." );
						}
						Config.Options = newopts;
					}
					else if( Cpu != NULL )
						UpdateVSyncRate();

					SaveConfig();

				return FALSE;
			}
		return TRUE;
	}
	return FALSE;
}
Ejemplo n.º 21
0
HRESULT InitScene()
{
	HRESULT hr;
	D3DCAPS9 caps;

	SetWindowText(hwnd, TITLE);

	device->GetDeviceCaps(&caps);

	if( caps.VertexShaderVersion < D3DVS_VERSION(2, 0) || caps.PixelShaderVersion < D3DPS_VERSION(2, 0) )
	{
		MYERROR("This demo requires Shader Model 2.0 capable video card");
		return E_FAIL;
	}

	palm = new DXObject(device);
	sandplane = new DXObject(device);
	waterplane = new DXObject(device);

	if( !palm->Load("../media/meshes/palm.qm") )
	{
		MYERROR("Could not load palm");
		return E_FAIL;
	}

	if( !sandplane->CreatePlane(50, 50, 10, 10) )
	{
		MYERROR("Could not create sand plane");
		return E_FAIL;
	}

	if( !waterplane->CreatePlane(50, 50, 5, 5) )
	{
		MYERROR("Could not create water plane");
		return E_FAIL;
	}

	waterplane->GenerateTangentFrame();

	MYVALID(D3DXLoadMeshFromXA("../media/meshes/sky.X", D3DXMESH_MANAGED, device, NULL, NULL, NULL, NULL, &skymesh));
	MYVALID(D3DXCreateCubeTextureFromFileA(device, "../media/textures/sky7.dds", &skytex));

	MYVALID(D3DXCreateTextureFromFileA(device, "../media/textures/bark.jpg", &bark));
	MYVALID(D3DXCreateTextureFromFileA(device, "../media/textures/leaf.jpg", &leaves));
	MYVALID(D3DXCreateTextureFromFileA(device, "../media/textures/sand.jpg", &sand));
	MYVALID(D3DXCreateTextureFromFileA(device, "../media/textures/wave2.png", &waves));

	MYVALID(DXCreateEffect("../media/shaders/ambient.fx", device, &ambient));
	MYVALID(DXCreateEffect("../media/shaders/blinnphong.fx", device, &specular));
	MYVALID(DXCreateEffect("../media/shaders/water.fx", device, &water));
	MYVALID(DXCreateEffect("../media/shaders/simplebloom.fx", device, &bloom));
	MYVALID(DXCreateEffect("../media/shaders/godray.fx", device, &godray));
	MYVALID(DXCreateEffect("../media/shaders/sky.fx", device, &skyeffect));

	MYVALID(device->CreateTexture(screenwidth, screenheight, 1, D3DUSAGE_RENDERTARGET, D3DFMT_A16B16G16R16F, D3DPOOL_DEFAULT, &refraction, NULL));
	MYVALID(device->CreateTexture(screenwidth, screenheight, 1, D3DUSAGE_RENDERTARGET, D3DFMT_A16B16G16R16F, D3DPOOL_DEFAULT, &reflection, NULL));
	MYVALID(device->CreateTexture(screenwidth, screenheight, 1, D3DUSAGE_RENDERTARGET, D3DFMT_A8, D3DPOOL_DEFAULT, &occluders, NULL));
	MYVALID(device->CreateTexture(screenwidth, screenheight, 1, D3DUSAGE_RENDERTARGET, D3DFMT_A8, D3DPOOL_DEFAULT, &blurtex, NULL));
	MYVALID(device->CreateTexture(screenwidth, screenheight, 1, D3DUSAGE_RENDERTARGET, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &sceneldr, NULL));

	MYVALID(device->CreateTexture(screenwidth / 2, screenheight / 2, 1, D3DUSAGE_RENDERTARGET, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &bloomtex1, NULL));
	MYVALID(device->CreateTexture(screenwidth / 2, screenheight / 2, 1, D3DUSAGE_RENDERTARGET, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &bloomtex2, NULL));

	refraction->GetSurfaceLevel(0, &refractsurf);
	reflection->GetSurfaceLevel(0, &reflectsurf);
	occluders->GetSurfaceLevel(0, &occludersurf);
	blurtex->GetSurfaceLevel(0, &blursurf);
	sceneldr->GetSurfaceLevel(0, &sceneldrsurf);
	bloomtex1->GetSurfaceLevel(0, &bloomsurf1);
	bloomtex2->GetSurfaceLevel(0, &bloomsurf2);

	D3DVERTEXELEMENT9 elem[] =
	{
		{ 0, 0, D3DDECLTYPE_FLOAT4, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITIONT, 0 },
		{ 0, 16, D3DDECLTYPE_FLOAT2, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 0 },
		D3DDECL_END()
	};

	MYVALID(device->CreateVertexDeclaration(elem, &quaddecl));

	cameraangle = D3DXVECTOR2(-1.13f * D3DX_PI, 0.55f);

	return S_OK;
}
Ejemplo n.º 22
0
void CButtonExtn::DrawButton(HWND hWnd, HDC hDC, RECT *pRect, BOOL fChecked, BOOL fHot, BOOL fFocus)
{
  // Code originally by Nikita Leontiev in answer to "Change checkBox text color Win32"
  // in MS's Forum: "Visual Studio Developer Center > Visual Studio vNext Forums > Visual C++ General"
  // Modified for MFC, Checkbox and Radio buttons by DK

  int nWidth = pRect -> right - pRect -> left;
  int nHeight = pRect -> bottom - pRect -> top;

  HDC hMemDC = CreateCompatibleDC(hDC);
  HBITMAP hBitmap = CreateCompatibleBitmap(hDC, nWidth, nHeight);
  SelectObject(hMemDC, hBitmap);

  RECT rFillRect = {0, 0, nWidth, nHeight};

  HTHEME hTheme = OpenThemeData(hWnd, L"BUTTON");
  int nStateID(0);

  if (m_type == BS_AUTOCHECKBOX) {
    nStateID = (fChecked) ? CBS_CHECKEDNORMAL : CBS_UNCHECKEDNORMAL;
    if (fHot)
      nStateID = (fChecked) ? CBS_CHECKEDHOT : CBS_UNCHECKEDHOT;
  } else {
    nStateID = (fChecked) ? RBS_CHECKEDNORMAL : RBS_UNCHECKEDNORMAL;
    if (fHot)
      nStateID = (fChecked) ? RBS_CHECKEDHOT : RBS_UNCHECKEDHOT;
  }

  //If bg color isn't set, try get backgroung color from current theme
  if (m_bUseBkgColour) {
    FillRect(hMemDC, &rFillRect, CreateSolidBrush(GetSysColor(m_icolour)));
  }
  else { 
    // Don't check IsThemeBackgroundPartiallyTransparent because it return false for BP_CHECKBOX
    DrawThemeParentBackground(hWnd, hMemDC, &rFillRect);
  }

  RECT rIconRect = {0, 0, 13, nHeight};
  DrawThemeBackground(hTheme, hMemDC, m_type == BS_AUTOCHECKBOX ? BP_CHECKBOX : BP_RADIOBUTTON,
                      nStateID, &rIconRect, NULL);
  CloseThemeData(hTheme);

  RECT rTextRect = {16, 0, nWidth - 16, nHeight};
  SetBkMode(hMemDC, TRANSPARENT);
  if (m_bUseTextColour)
    SetTextColor(hMemDC, m_crfText);

  SelectObject(hMemDC, (HFONT)GetStockObject(DEFAULT_GUI_FONT));

  if (m_caption.IsEmpty()) {
    GetWindowText(m_caption);
    SetWindowText(L"");
  }

  DrawText(hMemDC, m_caption, m_caption.GetLength(), &rTextRect, DT_SINGLELINE | DT_VCENTER);

  if (fFocus){
    DrawText(hMemDC, m_caption, m_caption.GetLength(), &rTextRect, DT_SINGLELINE | DT_VCENTER | DT_CALCRECT);
    rTextRect.left--;
    rTextRect.right++;
    DrawFocusRect(hMemDC, &rTextRect);
  }

  BitBlt(hDC, 0, 0, nWidth, nHeight, hMemDC, 0, 0, SRCCOPY);

  DeleteObject(hBitmap);
  DeleteDC(hMemDC);
}
Ejemplo n.º 23
0
//-----------------------------------------------------------------------------
// Name: Render()
// Desc: Called once per frame, the call is the entry point for rendering the 
//       world.
//-----------------------------------------------------------------------------
HRESULT CMyApplication::Render()
{
    TCHAR szMsg[MAX_PATH];
    TCHAR szMsgCurrent[MAX_PATH];

    // Update Player 1
    _stprintf( szMsg, TEXT("%0.2f"), m_UserInput[0].fAxisMoveUD );
    GetWindowText( GetDlgItem(m_hWnd,IDC_UD_AXIS_STATE_P1), szMsgCurrent, MAX_PATH );
    if( lstrcmp( szMsgCurrent, szMsg ) != 0 )
        SetWindowText( GetDlgItem(m_hWnd,IDC_UD_AXIS_STATE_P1), szMsg );
    _stprintf( szMsg, TEXT("%0.2f"), m_UserInput[0].fAxisRotateLR );
    GetWindowText( GetDlgItem(m_hWnd,IDC_LR_AXIS_STATE_P1), szMsgCurrent, MAX_PATH );
    if( lstrcmp( szMsgCurrent, szMsg ) != 0 )
        SetWindowText( GetDlgItem(m_hWnd,IDC_LR_AXIS_STATE_P1), szMsg );
    if( !m_UserInput[0].bButtonEnableShield && !m_UserInput[0].bButtonFireWeapons )
        _stprintf( szMsg, TEXT("None") );
    else
        _stprintf( szMsg, TEXT("%s%s"), m_UserInput[0].bButtonEnableShield ? TEXT("Shield ") : TEXT(""), 
                                      m_UserInput[0].bButtonFireWeapons ? TEXT("Fire ") : TEXT("") );
    GetWindowText( GetDlgItem(m_hWnd,IDC_BUTTON_STATE_P1), szMsgCurrent, MAX_PATH );
    if( lstrcmp( szMsgCurrent, szMsg ) != 0 )
        SetWindowText( GetDlgItem(m_hWnd,IDC_BUTTON_STATE_P1), szMsg );

    // Update Player 2
    _stprintf( szMsg, TEXT("%0.2f"), m_UserInput[1].fAxisMoveUD );
    GetWindowText( GetDlgItem(m_hWnd,IDC_UD_AXIS_STATE_P2), szMsgCurrent, MAX_PATH );
    if( lstrcmp( szMsgCurrent, szMsg ) != 0 )
        SetWindowText( GetDlgItem(m_hWnd,IDC_UD_AXIS_STATE_P2), szMsg );
    _stprintf( szMsg, TEXT("%0.2f"), m_UserInput[1].fAxisRotateLR );
    GetWindowText( GetDlgItem(m_hWnd,IDC_LR_AXIS_STATE_P2), szMsgCurrent, MAX_PATH );
    if( lstrcmp( szMsgCurrent, szMsg ) != 0 )
        SetWindowText( GetDlgItem(m_hWnd,IDC_LR_AXIS_STATE_P2), szMsg );
    if( !m_UserInput[1].bButtonEnableShield && !m_UserInput[1].bButtonFireWeapons )
        _stprintf( szMsg, TEXT("None") );
    else
        _stprintf( szMsg, TEXT("%s%s"), m_UserInput[1].bButtonEnableShield ? TEXT("Shield ") : TEXT(""), 
        m_UserInput[1].bButtonFireWeapons ? TEXT("Fire ") : TEXT("") );
    GetWindowText( GetDlgItem(m_hWnd,IDC_BUTTON_STATE_P2), szMsgCurrent, MAX_PATH );
    if( lstrcmp( szMsgCurrent, szMsg ) != 0 )
        SetWindowText( GetDlgItem(m_hWnd,IDC_BUTTON_STATE_P2), szMsg );
    
    // Update Player 3
    _stprintf( szMsg, TEXT("%0.2f"), m_UserInput[2].fAxisMoveUD );
    GetWindowText( GetDlgItem(m_hWnd,IDC_UD_AXIS_STATE_P3), szMsgCurrent, MAX_PATH );
    if( lstrcmp( szMsgCurrent, szMsg ) != 0 )
        SetWindowText( GetDlgItem(m_hWnd,IDC_UD_AXIS_STATE_P3), szMsg );
    _stprintf( szMsg, TEXT("%0.2f"), m_UserInput[2].fAxisRotateLR );
    GetWindowText( GetDlgItem(m_hWnd,IDC_LR_AXIS_STATE_P3), szMsgCurrent, MAX_PATH );
    if( lstrcmp( szMsgCurrent, szMsg ) != 0 )
        SetWindowText( GetDlgItem(m_hWnd,IDC_LR_AXIS_STATE_P3), szMsg );
    if( !m_UserInput[2].bButtonEnableShield && !m_UserInput[2].bButtonFireWeapons )
        _stprintf( szMsg, TEXT("None") );
    else
        _stprintf( szMsg, TEXT("%s%s"), m_UserInput[2].bButtonEnableShield ? TEXT("Shield ") : TEXT(""), 
        m_UserInput[2].bButtonFireWeapons ? TEXT("Fire ") : TEXT("") );
    GetWindowText( GetDlgItem(m_hWnd,IDC_BUTTON_STATE_P3), szMsgCurrent, MAX_PATH );
    if( lstrcmp( szMsgCurrent, szMsg ) != 0 )
        SetWindowText( GetDlgItem(m_hWnd,IDC_BUTTON_STATE_P3), szMsg );
    
    // Update Player 4
    _stprintf( szMsg, TEXT("%0.2f"), m_UserInput[3].fAxisMoveUD );
    GetWindowText( GetDlgItem(m_hWnd,IDC_UD_AXIS_STATE_P4), szMsgCurrent, MAX_PATH );
    if( lstrcmp( szMsgCurrent, szMsg ) != 0 )
        SetWindowText( GetDlgItem(m_hWnd,IDC_UD_AXIS_STATE_P4), szMsg );
    _stprintf( szMsg, TEXT("%0.2f"), m_UserInput[3].fAxisRotateLR );
    GetWindowText( GetDlgItem(m_hWnd,IDC_LR_AXIS_STATE_P4), szMsgCurrent, MAX_PATH );
    if( lstrcmp( szMsgCurrent, szMsg ) != 0 )
        SetWindowText( GetDlgItem(m_hWnd,IDC_LR_AXIS_STATE_P4), szMsg );
    if( !m_UserInput[3].bButtonEnableShield && !m_UserInput[3].bButtonFireWeapons )
        _stprintf( szMsg, TEXT("None") );
    else
        _stprintf( szMsg, TEXT("%s%s"), m_UserInput[3].bButtonEnableShield ? TEXT("Shield ") : TEXT(""), 
        m_UserInput[3].bButtonFireWeapons ? TEXT("Fire ") : TEXT("") );
    GetWindowText( GetDlgItem(m_hWnd,IDC_BUTTON_STATE_P4), szMsgCurrent, MAX_PATH );
    if( lstrcmp( szMsgCurrent, szMsg ) != 0 )
        SetWindowText( GetDlgItem(m_hWnd,IDC_BUTTON_STATE_P4), szMsg );      
    
    // Update world state
    _stprintf( szMsg, TEXT("%0.3f, %0.3f"), m_fWorldRotX, m_fWorldRotY );
    GetWindowText( GetDlgItem(m_hWnd,IDC_WORLD_STATE), szMsgCurrent, MAX_PATH );
    if( lstrcmp( szMsgCurrent, szMsg ) != 0 )
        SetWindowText( GetDlgItem(m_hWnd,IDC_WORLD_STATE), szMsg );

    return S_OK;
}
Ejemplo n.º 24
0
/*
	FileSave -- saves hotspot into file.  Uses GetSaveFileName to prompt
		user for filename if the MOVIEINFO doesn't have a filename, or
		if bGetFileName is set.
*/
BOOL FileSave(HWND hWnd, BOOL bGetFileName)
{
	int hotcount;
	HFILE hFile;
    PHOTSPOT pHotspot;
    static OPENFILENAME ofn;
    static OFSTRUCT of;
    char szFileTitle[MAXFILENAME] = "";
    char szFileName[MAXFILENAME] = "";
    char szFilterSpec [128] =                       /* file type filters */
             "Hotspot Files (*.HOT)\0*.HOT\0All Files (*.*)\0*.*\0";
    BOOL bGet = TRUE;

    if (pMovieInfo->szIniFileName)
        {
        if (lstrlen(pMovieInfo->szIniFileName))            
            {
            bGet = FALSE;            
            lstrcpy(szFileName, pMovieInfo->szIniFileName);
            }
        }
        
    if (bGetFileName)
        bGet = TRUE;
    if (bGet)
        {
        ofn.lStructSize       = sizeof(OPENFILENAME);
        ofn.hwndOwner     = hWnd;
        ofn.lpstrFilter   = szFilterSpec;
        ofn.lpstrCustomFilter = NULL;
        ofn.nMaxCustFilter    = 0;
        ofn.nFilterIndex      = 1;
        ofn.lpstrFile         = pMovieInfo->szIniFileName;
        ofn.nMaxFile          = MAXFILENAME;
        ofn.lpstrInitialDir   = NULL;
        ofn.lpstrFileTitle    = szFileTitle;
        ofn.nMaxFileTitle     = MAXFILENAME;
        ofn.lpstrTitle        = NULL;
        ofn.lpstrDefExt       = "HOT";
        ofn.Flags             = OFN_OVERWRITEPROMPT;
    
        if (!GetSaveFileName ((LPOPENFILENAME)&ofn))
            {
            DWORD dw;
            dw = CommDlgExtendedError();
            }
        }    
    hotcount = 0;
    pHotspot = pMovieInfo->pHotspotList;
    while (pHotspot)	// we'll save a hotspot count in the file to
    					// make life easy for the load routine.
        {
        hotcount++;
        pHotspot = pHotspot->pNext;
        }

    pHotspot = pMovieInfo->pHotspotList;
    
    if (bGet)
        {
        lstrcpy(pMovieInfo->szIniFileName, ofn.lpstrFile);
        lstrcpy(szFileName, ofn.lpstrFile);
        }

    hFile = _lcreat(szFileName,0);
    if (!hFile == HFILE_ERROR)
    {
    	MessageBox(GetFocus(),szFileName,"Can't write this file:",MB_OK);
    }
    
	_lwrite(hFile,"HH",2);
	_lwrite(hFile,&hotcount,sizeof(hotcount));
        
    while (pHotspot)
    {
        int x;
        	
        _lwrite(hFile,&pHotspot->rc.left,sizeof(pHotspot->rc.left));
        _lwrite(hFile,&pHotspot->rc.top,sizeof(pHotspot->rc.top));
        _lwrite(hFile,&pHotspot->rc.right,sizeof(pHotspot->rc.right));
        _lwrite(hFile,&pHotspot->rc.bottom,sizeof(pHotspot->rc.bottom));
        
    	x = pHotspot->pszHotspotID ? lstrlen(pHotspot->pszHotspotID) : 0;
    	_lwrite(hFile,&x,sizeof(x));
    	if (x && pHotspot->pszHotspotID) _lwrite(hFile,pHotspot->pszHotspotID,x);
        
		x = pHotspot->pszCommand ? lstrlen(pHotspot->pszCommand) : 0;
    	_lwrite(hFile,&x,sizeof(x));
    	if (x && pHotspot->pszCommand) _lwrite(hFile,pHotspot->pszCommand,x);

        _lwrite(hFile,&pHotspot->BeginFrame,sizeof(pHotspot->BeginFrame));
        _lwrite(hFile,&pHotspot->EndFrame,sizeof(pHotspot->EndFrame));
        _lwrite(hFile,&pHotspot->OnClick,sizeof(pHotspot->OnClick));
        _lwrite(hFile,&pHotspot->ToFrame,sizeof(pHotspot->ToFrame));
        pHotspot = pHotspot->pNext;            
    }
	_lclose(hFile);
    bModified = FALSE;           
    
    lstrcpy(szWindowTitle, szBaseWindowTitle);
    lstrcat(szWindowTitle, " - ");
    lstrcat(szWindowTitle, szFileTitle);
    SetWindowText(hWnd, szWindowTitle);
    
    return TRUE;
}                
Ejemplo n.º 25
0
__declspec(dllexport) void download (HWND   parent,
              int    string_size,
              char   *variables,
              stack_t **stacktop)
{
  char buf[1024];
  char url[1024];
  char filename[1024];
  static char proxy[1024];
  BOOL bSuccess=FALSE;
  int timeout_ms=30000;
  int getieproxy=1;
  int manualproxy=0;
  int translation_version;

  char *error=NULL;

  // translation version 2 & 1
  static char szDownloading[1024]; // "Downloading %s"
  static char szConnecting[1024];  // "Connecting ..."
  static char szSecond[1024];      // " (1 second remaining)" for v2
                                   // "second" for v1
  static char szMinute[1024];      // " (1 minute remaining)" for v2
                                   // "minute" for v1
  static char szHour[1024];        // " (1 hour remaining)" for v2
                                   // "hour" for v1
  static char szProgress[1024];    // "%skB (%d%%) of %skB at %u.%01ukB/s" for v2
                                   // "%dkB (%d%%) of %dkB at %d.%01dkB/s" for v1

  // translation version 2 only
  static char szSeconds[1024];     // " (%u seconds remaining)"
  static char szMinutes[1024];     // " (%u minutes remaining)"
  static char szHours[1024];       // " (%u hours remaining)"

  // translation version 1 only
  static char szPlural[1024];      // "s";
  static char szRemaining[1024];   // " (%d %s%s remaining)";

  EXDLL_INIT();

  popstring(url);
  if (!lstrcmpi(url, "/TRANSLATE2")) {
    popstring(szDownloading);
    popstring(szConnecting);
    popstring(szSecond);
    popstring(szMinute);
    popstring(szHour);
    popstring(szSeconds);
    popstring(szMinutes);
    popstring(szHours);
    popstring(szProgress);
    popstring(url);
    translation_version=2;
  } else if (!lstrcmpi(url, "/TRANSLATE")) {
    popstring(szDownloading);
    popstring(szConnecting);
    popstring(szSecond);
    popstring(szMinute);
    popstring(szHour);
    popstring(szPlural);
    popstring(szProgress);
    popstring(szRemaining);
    popstring(url);
    translation_version=1;
  } else {
    lstrcpy(szDownloading, "Downloading %s");
    lstrcpy(szConnecting, "Connecting ...");
    lstrcpy(szSecond, " (1 second remaining)");
    lstrcpy(szMinute, " (1 minute remaining)");
    lstrcpy(szHour, " (1 hour remaining)");
    lstrcpy(szSeconds, " (%u seconds remaining)");
    lstrcpy(szMinutes, " (%u minutes remaining)");
    lstrcpy(szHours, " (%u hours remaining)");
    lstrcpy(szProgress, "%skB (%d%%) of %skB at %u.%01ukB/s");
    translation_version=2;
  }
  lstrcpyn(buf, url, 10);
  if (!lstrcmpi(buf, "/TIMEOUT=")) {
    timeout_ms=my_atoi(url+9);
    popstring(url);
  }
  if (!lstrcmpi(url, "/PROXY")) {
    getieproxy=0;
    manualproxy=1;
    popstring(proxy);
    popstring(url);
  }
  if (!lstrcmpi(url, "/NOIEPROXY")) {
    getieproxy=0;
    popstring(url);
  }
  popstring(filename);

  HANDLE hFile = CreateFile(filename,GENERIC_WRITE,FILE_SHARE_READ,NULL,CREATE_ALWAYS,0,NULL);

  if (hFile == INVALID_HANDLE_VALUE)
  {
    wsprintf(buf, "Unable to open %s", filename);
    error = buf;
  }
  else
  {
    if (parent)
    {
      uMsgCreate = RegisterWindowMessage("nsisdl create");

      lpWndProcOld = (void *)SetWindowLong(parent,GWL_WNDPROC,(long)ParentWndProc);

      SendMessage(parent, uMsgCreate, TRUE, (LPARAM) parent);

      // set initial text
      char *p = filename;
      while (*p) p++;
      while (*p != '\\' && p != filename) p = CharPrev(filename, p);
      wsprintf(buf, szDownloading, p != filename ? p + 1 : p);
      SetDlgItemText(childwnd, 1006, buf);
      SetWindowText(g_hwndStatic, szConnecting);
    }
    {
      WSADATA wsaData;
      WSAStartup(MAKEWORD(1, 1), &wsaData);

      JNL_HTTPGet *get = 0;

      static char main_buf[8192];
      char *buf=main_buf;
      char *p=NULL;

      HKEY hKey;
      if (getieproxy && RegOpenKeyEx(HKEY_CURRENT_USER,"Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings",0,KEY_READ,&hKey) == ERROR_SUCCESS)
      {
        DWORD l = 4;
        DWORD t;
        DWORD v;
        if (RegQueryValueEx(hKey,"ProxyEnable",NULL,&t,(unsigned char *)&v,&l) == ERROR_SUCCESS && t == REG_DWORD && v)
        {
          l=8192;
          if (RegQueryValueEx(hKey,"ProxyServer",NULL,&t,(unsigned char *)buf,&l ) == ERROR_SUCCESS && t == REG_SZ)
          {
            p=strstr(buf,"http=");
            if (!p) p=buf;
            else {
              p+=5;
            }
            char *tp=strstr(p,";");
            if (tp) *tp=0;
            char *p2=strstr(p,"=");
            if (p2) p=0; // we found the wrong proxy
          }
        }
        buf[8192-1]=0;
        RegCloseKey(hKey);
      }
      if (manualproxy == 1) {
        p = proxy;
      }

      DWORD start_time=GetTickCount();
      get=new JNL_HTTPGet(JNL_CONNECTION_AUTODNS,16384,(p&&p[0])?p:NULL);
      int         st;
      int         has_printed_headers = 0;
      __int64     cl = 0;
      int         len;
      __int64     sofar = 0;
      DWORD last_recv_time=start_time;

      get->addheader ("User-Agent: NSISDL/1.2 (Mozilla)");
      get->addheader ("Accept: */*");

      get->connect (url);

      while (1) {
        if (g_cancelled)
            error = "cancel";

        if (error)
        {
          if (parent)
          {
            SendMessage(parent, uMsgCreate, FALSE, (LPARAM) parent);
            SetWindowLong(parent, GWL_WNDPROC, (long)lpWndProcOld);
          }
          break;
        }

        st = get->run ();

        if (st == -1) {
          lstrcpyn(url, get->geterrorstr(), sizeof(url));
          error = url;
        } else if (st == 1) {
          if (sofar < cl || get->get_status () != 2)
            error="download incomplete";
          else
          {
            bSuccess=TRUE;
            error = "success";
          }
        } else {

          if (get->get_status () == 0) {
            // progressFunc ("Connecting ...", 0);
            if (last_recv_time+timeout_ms < GetTickCount())
              error = "Timed out on connecting.";
            else
              Sleep(10); // don't busy-loop while connecting

          } else if (get->get_status () == 1) {

            progress_callback("Reading headers", 0);
            if (last_recv_time+timeout_ms < GetTickCount())
              error = "Timed out on getting headers.";
            else
              Sleep(10); // don't busy-loop while reading headers

          } else if (get->get_status () == 2) {

            if (! has_printed_headers) {
              has_printed_headers = 1;
              last_recv_time=GetTickCount();

              cl = get->content_length ();
              if (cl == 0)
                error = "Server did not specify content length.";
              else if (g_hwndProgressBar) {
                SendMessage(g_hwndProgressBar, PBM_SETRANGE, 0, MAKELPARAM(0, 30000));
                g_file_size = cl;
              }
            }

            int data_downloaded = 0;
            while ((len = get->bytes_available ()) > 0) {
              data_downloaded++;
              if (len > 8192)
                len = 8192;
              len = get->get_bytes (buf, len);
              if (len > 0) {
                last_recv_time=GetTickCount();
                DWORD dw;
                WriteFile(hFile,buf,len,&dw,NULL);
                sofar += len;
                int time_sofar=(GetTickCount()-start_time)/1000;
                int bps = (int)(sofar/(time_sofar?time_sofar:1));
                int remain = MulDiv64(time_sofar, cl, sofar) - time_sofar;

                if (translation_version == 2) {
                  char *rtext=remain==1?szSecond:szSeconds;;
                  if (remain >= 60)
                  {
                    remain/=60;
                    rtext=remain==1?szMinute:szMinutes;
                    if (remain >= 60)
                    {
                      remain/=60;
                      rtext=remain==1?szHour:szHours;
                    }
                  }

                  char sofar_str[128];
                  char cl_str[128];
                  myitoa64(sofar/1024, sofar_str);
                  myitoa64(cl/1024, cl_str);

                  wsprintf (buf,
                        szProgress, //%skB (%d%%) of %skB @ %u.%01ukB/s
                        sofar_str,
                        MulDiv64(100, sofar, cl),
                        cl_str,
                        bps/1024,((bps*10)/1024)%10
                        );
                  if (remain) wsprintf(buf+lstrlen(buf),rtext,
                        remain
                        );
                } else if (translation_version == 1) {
                  char *rtext=szSecond;
                  if (remain >= 60)
                  {
                    remain/=60;
                    rtext=szMinute;
                    if (remain >= 60)
                    {
                      remain/=60;
                      rtext=szHour;
                    }
                  }

                  wsprintf (buf,
                        szProgress, //%dkB (%d%%) of %dkB @ %d.%01dkB/s
                        int(sofar/1024),
                        MulDiv64(100, sofar, cl),
                        int(cl/1024),
                        bps/1024,((bps*10)/1024)%10
                        );
                  if (remain) wsprintf(buf+lstrlen(buf),szRemaining,
                        remain,
                        rtext,
                        remain==1?"":szPlural
                        );
                }
                progress_callback(buf, sofar);
              } else {
                if (sofar < cl)
                  error = "Server aborted.";
              }
            }
            if (GetTickCount() > last_recv_time+timeout_ms)
            {
              if (sofar != cl)
              {
                error = "Downloading timed out.";
              }
              else
              {
                // workaround for bug #1713562
                //   buggy servers that wait for the client to close the connection.
                //   another solution would be manually stopping when cl == sofar,
                //   but then buggy servers that return wrong content-length will fail.
                bSuccess = TRUE;
                error = "success";
              }
            }
            else if (!data_downloaded)
              Sleep(10);

          } else {
            error = "Bad response status.";
          }
        }

      }

      // Clean up the connection then release winsock
      if (get) delete get;
      WSACleanup();
    }

    CloseHandle(hFile);
  }

  if (g_cancelled || !bSuccess) {
    DeleteFile(filename);
  }

  pushstring(error);
}
Ejemplo n.º 26
0
/*
	FileOpen -- uses GetOpenFileName to prompt user for AVI and HOT
		filenames.  Uses fileOpenMovie to load the AVI file, and
		playMovie and setMovie and MCI_WHERE to get it into the window
		and on the first frame.  Uses InitHotspots() to load
		hotspot file.
*/
BOOL FileOpen(HWND hWnd)
{    
    static OPENFILENAME ofn;
    char szBuf[129];
    char szFileName[MAXFILENAME] = "";
    char szFileTitle[MAXFILENAME] = "";
    char szFilterSpec [128] =                       /* file type filters */
             "AVI Files (*.AVI)\0*.AVI\0All Files (*.*)\0*.*\0";
    char szFilterSpec2 [128] = 
            "Hotspot Files (*.HOT)\0*.HOT\0All Files (*.*)\0*.*\0";

    ofn.lStructSize       = sizeof(OPENFILENAME);
    ofn.hwndOwner         = hWnd;
    ofn.lpstrFilter       = szFilterSpec;
    ofn.lpstrCustomFilter = NULL;
    ofn.nMaxCustFilter    = 0;
    ofn.nFilterIndex      = 1;
    ofn.lpstrFile         = szFileName;
    ofn.nMaxFile          = MAXFILENAME;
    ofn.lpstrInitialDir   = NULL;
    ofn.lpstrFileTitle    = szFileTitle;
    ofn.nMaxFileTitle     = MAXFILENAME;
    ofn.lpstrTitle        = "Open AVI File";
    ofn.lpstrDefExt       = "AVI";
    ofn.Flags             = 0;
    
    if (!GetOpenFileName ((LPOPENFILENAME)&ofn))
            return FALSE;    
    
    if (pMovieInfo)                                     // get rid of old stuff if there is
        {
        fileCloseMovie(pMovieInfo, TRUE);
        DeleteHotspotList(pMovieInfo);
        FREE(pMovieInfo);
        }
            
    lstrcpy(szWindowTitle, szBaseWindowTitle);
                    lstrcat(szWindowTitle, " - ");
                    lstrcat(szWindowTitle, szFileTitle);
    
    SetWindowText(hWnd, szWindowTitle);                
    
    {	// added SetProp to accomodate new drawproc
    	HANDLE hglb;
    	
    	hglb = GlobalAlloc(GHND,(DWORD)(sizeof(MOVIEINFO)));
    	if (hglb)
    	{
    		pMovieInfo = (PMOVIEINFO) GlobalLock(hglb);
    	}
    	else
    	{
    		pMovieInfo = NULL;
    	}
    	//pMovieInfo = (PMOVIEINFO) ((hglb = GlobalAlloc(GHND, (DWORD)(sizeof(MOVIEINFO)))) ? GlobalLock(hglb) : NULL);

	    if (!pMovieInfo)
	        return (FALSE);

	    pMovieInfo->hwndParent = hWnd;
	    lstrcpy(pMovieInfo->szAVIFileName, ofn.lpstrFile);

	    fileOpenMovie(pMovieInfo, ofn.lpstrFile);    
   	    SetProp(hWnd, (LPSTR) szMovieInfo,hglb);    
	    SetProp(pMovieInfo->hwndMovie, (LPSTR) szMovieInfo, hglb);
{ char a[256];wsprintf(a,"wnd1 %X wnd2 %X\n",hWnd,pMovieInfo->hwndMovie); OutputDebugString(a);}
    }
    //playMovie(pMovieInfo, 0);		// screws up drawproc for some reason
	{
		MCI_DGV_SETVIDEO_PARMS	dgv;
		UINT					uDevice;
		dgv.dwValue = (DWORD) ICAVIDrawProc;
			//MakeProcInstance((FARPROC) ICAVIDrawProc,hInstApp);
		dgv.dwItem = MCI_AVI_SETVIDEO_DRAW_PROCEDURE;
		uDevice = pMovieInfo->wMCIDeviceID;
		if (uDevice)
		{
			DWORD dw;
								
			dw = mciSendCommand(uDevice,
			MCI_SETVIDEO,
			MCI_DGV_SETVIDEO_ITEM | MCI_DGV_SETVIDEO_VALUE,
			(DWORD) (MCI_DGV_SETVIDEO_PARMS FAR *)&dgv);
			OutputDebugString("set draw proc!\n");
			if (dw != 0)
			{
				MessageBox(GetFocus(),
					"The currently installed MCIAVI does not "
					"support the MCI_AVI_SETVIDEO_DRAW_PROCEDURE "
					"command during play.","MCI Problem",
					MB_OK | MB_ICONHAND);
			}
		}
		else
		{
			MessageBox(GetFocus(),"movie info has no device id",
				"real bummer",MB_OK);
		}
	}    
    setMovie(pMovieInfo, pMovieInfo->dwCurrentFrame, NULL);
    {
    RECT rcClient, rcWindow;      //rcMovieBounds, rc
    MCI_DGV_RECT_PARMS   mciRect;
    BOOL retcode = TRUE;
    
    /* if there is no movie yet then just get out of here */
    GetClientRect(hWnd, &rcClient);  /* get the parent windows rect */
    GetWindowRect(hWnd, &rcWindow);
    mciSendCommand(pMovieInfo->wMCIDeviceID, MCI_WHERE,
                  (DWORD)(MCI_DGV_WHERE_SOURCE),
                  (DWORD)(LPMCI_DGV_RECT_PARMS)&mciRect);
    
    }
    
    pMovieInfo->fPlaying = FALSE;

    bFileLoaded = TRUE;
    wsprintf(szBuf, "%ld of %ld", pMovieInfo->dwCurrentFrame,
                    pMovieInfo->dwMovieLength);
    SetDlgItemText(hwndDlg, ID_CURRENTFRAME, szBuf);
    
    // now try opening a HOT file
    
    memset(szFileName, 0, sizeof(szFileName));
    memset(szFileTitle, 0, sizeof(szFileTitle));
    memset(&ofn, 0, sizeof(OPENFILENAME));
    
    ofn.lStructSize       = sizeof(OPENFILENAME);
    ofn.hwndOwner         = hWnd;
    ofn.lpstrFilter       = szFilterSpec2;
    ofn.lpstrCustomFilter = NULL;
    ofn.nMaxCustFilter    = 0;
    ofn.nFilterIndex      = 1;
    ofn.lpstrFile         = szFileName;
    ofn.nMaxFile          = MAXFILENAME;
    ofn.lpstrInitialDir   = NULL;
    ofn.lpstrFileTitle    = szFileTitle;
    ofn.nMaxFileTitle     = MAXFILENAME;
    ofn.lpstrTitle        = "Open Hotspot File";
    ofn.lpstrDefExt       = "HOT";
    ofn.Flags             = 0;
    
    if (!GetOpenFileName ((LPOPENFILENAME)&ofn))
            return TRUE;
    
    lstrcpy(pMovieInfo->szIniFileName, ofn.lpstrFile);
    InitHotspots(pMovieInfo, ofn.lpstrFile);
    if (pMovieInfo->pHotspotList && pMovieInfo->hwndMovie)                    
        {
        HDC hDC;
        
        hDC = GetDC(pMovieInfo->hwndMovie);
        DrawRects(hDC, pMovieInfo);            
        ReleaseDC(pMovieInfo->hwndMovie, hDC);
        }
    return TRUE;
}
BOOL CALLBACK InternalEmulatorSettingsProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	switch (message)
	{
	case WM_INITDIALOG: {
		DialogData *d;
		std::string s;

		for (unsigned i = 0; i < 16; i++) {
			std::stringstream ss;
			ss << "JOY" << i;
			SendMessage(GetDlgItem(hWnd, IDC_IEJOYNUM), CB_ADDSTRING, 0, (LPARAM)ss.str().c_str());
		}
		s = "DISABLE";
		SendMessage(GetDlgItem(hWnd, IDC_IEJOYNUM), CB_ADDSTRING, 0, (LPARAM)s.c_str());
		SendMessage(GetDlgItem(hWnd, IDC_IEJOYNUM), CB_SETCURSEL, set.joyNum, 0);

		d = new DialogData;
		d->setting = set.emulatorButtons[unsigned(InternalEmulatorButtonType::UP)];
		SetWindowSubclass(GetDlgItem(hWnd, IDC_IEKEYUP), InternalEmulatorInputDialogProc, 0, DWORD_PTR(d));
		s = GetButtonText(d);
		SetWindowText(GetDlgItem(hWnd, IDC_IEKEYUP), s.c_str());

		d = new DialogData;
		d->setting = set.emulatorButtons[unsigned(InternalEmulatorButtonType::DOWN)];
		SetWindowSubclass(GetDlgItem(hWnd, IDC_IEKEYDOWN), InternalEmulatorInputDialogProc, 0, DWORD_PTR(d));
		s = GetButtonText(d);
		SetWindowText(GetDlgItem(hWnd, IDC_IEKEYDOWN), s.c_str());

		d = new DialogData;
		d->setting = set.emulatorButtons[unsigned(InternalEmulatorButtonType::LEFT)];
		SetWindowSubclass(GetDlgItem(hWnd, IDC_IEKEYLEFT), InternalEmulatorInputDialogProc, 0, DWORD_PTR(d));
		s = GetButtonText(d);
		SetWindowText(GetDlgItem(hWnd, IDC_IEKEYLEFT), s.c_str());

		d = new DialogData;
		d->setting = set.emulatorButtons[unsigned(InternalEmulatorButtonType::RIGHT)];
		SetWindowSubclass(GetDlgItem(hWnd, IDC_IEKEYRIGHT), InternalEmulatorInputDialogProc, 0, DWORD_PTR(d));
		s = GetButtonText(d);
		SetWindowText(GetDlgItem(hWnd, IDC_IEKEYRIGHT), s.c_str());

		d = new DialogData;
		d->setting = set.emulatorButtons[unsigned(InternalEmulatorButtonType::A)];
		SetWindowSubclass(GetDlgItem(hWnd, IDC_IEKEYA), InternalEmulatorInputDialogProc, 0, DWORD_PTR(d));
		s = GetButtonText(d);
		SetWindowText(GetDlgItem(hWnd, IDC_IEKEYA), s.c_str());

		d = new DialogData;
		d->setting = set.emulatorButtons[unsigned(InternalEmulatorButtonType::B)];
		SetWindowSubclass(GetDlgItem(hWnd, IDC_IEKEYB), InternalEmulatorInputDialogProc, 0, DWORD_PTR(d));
		s = GetButtonText(d);
		SetWindowText(GetDlgItem(hWnd, IDC_IEKEYB), s.c_str());

		d = new DialogData;
		d->setting = set.emulatorButtons[unsigned(InternalEmulatorButtonType::X)];
		SetWindowSubclass(GetDlgItem(hWnd, IDC_IEKEYX), InternalEmulatorInputDialogProc, 0, DWORD_PTR(d));
		s = GetButtonText(d);
		SetWindowText(GetDlgItem(hWnd, IDC_IEKEYX), s.c_str());

		d = new DialogData;
		d->setting = set.emulatorButtons[unsigned(InternalEmulatorButtonType::Y)];
		SetWindowSubclass(GetDlgItem(hWnd, IDC_IEKEYY), InternalEmulatorInputDialogProc, 0, DWORD_PTR(d));
		s = GetButtonText(d);
		SetWindowText(GetDlgItem(hWnd, IDC_IEKEYY), s.c_str());

		d = new DialogData;
		d->setting = set.emulatorButtons[unsigned(InternalEmulatorButtonType::L)];
		SetWindowSubclass(GetDlgItem(hWnd, IDC_IEKEYL), InternalEmulatorInputDialogProc, 0, DWORD_PTR(d));
		s = GetButtonText(d);
		SetWindowText(GetDlgItem(hWnd, IDC_IEKEYL), s.c_str());

		d = new DialogData;
		d->setting = set.emulatorButtons[unsigned(InternalEmulatorButtonType::R)];
		SetWindowSubclass(GetDlgItem(hWnd, IDC_IEKEYR), InternalEmulatorInputDialogProc, 0, DWORD_PTR(d));
		s = GetButtonText(d);
		SetWindowText(GetDlgItem(hWnd, IDC_IEKEYR), s.c_str());

		d = new DialogData;
		d->setting = set.emulatorButtons[unsigned(InternalEmulatorButtonType::SELECT)];
		SetWindowSubclass(GetDlgItem(hWnd, IDC_IEKEYSELECT), InternalEmulatorInputDialogProc, 0, DWORD_PTR(d));
		s = GetButtonText(d);
		SetWindowText(GetDlgItem(hWnd, IDC_IEKEYSELECT), s.c_str());

		d = new DialogData;
		d->setting = set.emulatorButtons[unsigned(InternalEmulatorButtonType::START)];
		SetWindowSubclass(GetDlgItem(hWnd, IDC_IEKEYSTART), InternalEmulatorInputDialogProc, 0, DWORD_PTR(d));
		s = GetButtonText(d);
		SetWindowText(GetDlgItem(hWnd, IDC_IEKEYSTART), s.c_str());

		d = new DialogData;
		d->setting = set.emulatorButtons[unsigned(InternalEmulatorButtonType::NEXTSTATE)];
		SetWindowSubclass(GetDlgItem(hWnd, IDC_IEKEYNEXTSTATE), InternalEmulatorInputDialogProc, 0, DWORD_PTR(d));
		s = GetButtonText(d);
		SetWindowText(GetDlgItem(hWnd, IDC_IEKEYNEXTSTATE), s.c_str());

		d = new DialogData;
		d->setting = set.emulatorButtons[unsigned(InternalEmulatorButtonType::PREVSTATE)];
		SetWindowSubclass(GetDlgItem(hWnd, IDC_IEKEYPREVSTATE), InternalEmulatorInputDialogProc, 0, DWORD_PTR(d));
		s = GetButtonText(d);
		SetWindowText(GetDlgItem(hWnd, IDC_IEKEYPREVSTATE), s.c_str());

		d = new DialogData;
		d->setting = set.emulatorButtons[unsigned(InternalEmulatorButtonType::SAVESTATE)];
		SetWindowSubclass(GetDlgItem(hWnd, IDC_IEKEYSAVESTATE), InternalEmulatorInputDialogProc, 0, DWORD_PTR(d));
		s = GetButtonText(d);
		SetWindowText(GetDlgItem(hWnd, IDC_IEKEYSAVESTATE), s.c_str());

		d = new DialogData;
		d->setting = set.emulatorButtons[unsigned(InternalEmulatorButtonType::LOADSTATE)];
		SetWindowSubclass(GetDlgItem(hWnd, IDC_IEKEYLOADSTATE), InternalEmulatorInputDialogProc, 0, DWORD_PTR(d));
		s = GetButtonText(d);
		SetWindowText(GetDlgItem(hWnd, IDC_IEKEYLOADSTATE), s.c_str());

		d = new DialogData;
		d->setting = set.emulatorButtons[unsigned(InternalEmulatorButtonType::FASTFORWARD)];
		SetWindowSubclass(GetDlgItem(hWnd, IDC_IEKEYFASTFORWARD), InternalEmulatorInputDialogProc, 0, DWORD_PTR(d));
		s = GetButtonText(d);
		SetWindowText(GetDlgItem(hWnd, IDC_IEKEYFASTFORWARD), s.c_str());

		SendMessage(GetDlgItem(hWnd, IDC_IEVOLUME), TBM_SETRANGEMIN, 0, DSBVOLUME_MIN + 10000);
		SendMessage(GetDlgItem(hWnd, IDC_IEVOLUME), TBM_SETRANGEMAX, 0, DSBVOLUME_MAX + 10000);
		SendMessage(GetDlgItem(hWnd, IDC_IEVOLUME), TBM_SETPOS, 1, set.volume + 10000);

		break;
	}
	case WM_COMMAND: {
		switch (LOWORD(wParam))
		{
		case IDC_IESAVE: {
			DialogData *d;
			GetWindowSubclass(GetDlgItem(hWnd, IDC_IEKEYUP), InternalEmulatorInputDialogProc, NULL, (DWORD_PTR *)(&d));
			set.emulatorButtons[unsigned(InternalEmulatorButtonType::UP)] = d->setting;
			GetWindowSubclass(GetDlgItem(hWnd, IDC_IEKEYDOWN), InternalEmulatorInputDialogProc, NULL, (DWORD_PTR *)(&d));
			set.emulatorButtons[unsigned(InternalEmulatorButtonType::DOWN)] = d->setting;
			GetWindowSubclass(GetDlgItem(hWnd, IDC_IEKEYLEFT), InternalEmulatorInputDialogProc, NULL, (DWORD_PTR *)(&d));
			set.emulatorButtons[unsigned(InternalEmulatorButtonType::LEFT)] = d->setting;
			GetWindowSubclass(GetDlgItem(hWnd, IDC_IEKEYRIGHT), InternalEmulatorInputDialogProc, NULL, (DWORD_PTR *)(&d));
			set.emulatorButtons[unsigned(InternalEmulatorButtonType::RIGHT)] = d->setting;
			GetWindowSubclass(GetDlgItem(hWnd, IDC_IEKEYA), InternalEmulatorInputDialogProc, NULL, (DWORD_PTR *)(&d));
			set.emulatorButtons[unsigned(InternalEmulatorButtonType::A)] = d->setting;
			GetWindowSubclass(GetDlgItem(hWnd, IDC_IEKEYB), InternalEmulatorInputDialogProc, NULL, (DWORD_PTR *)(&d));
			set.emulatorButtons[unsigned(InternalEmulatorButtonType::B)] = d->setting;
			GetWindowSubclass(GetDlgItem(hWnd, IDC_IEKEYX), InternalEmulatorInputDialogProc, NULL, (DWORD_PTR *)(&d));
			set.emulatorButtons[unsigned(InternalEmulatorButtonType::X)] = d->setting;
			GetWindowSubclass(GetDlgItem(hWnd, IDC_IEKEYY), InternalEmulatorInputDialogProc, NULL, (DWORD_PTR *)(&d));
			set.emulatorButtons[unsigned(InternalEmulatorButtonType::Y)] = d->setting;
			GetWindowSubclass(GetDlgItem(hWnd, IDC_IEKEYL), InternalEmulatorInputDialogProc, NULL, (DWORD_PTR *)(&d));
			set.emulatorButtons[unsigned(InternalEmulatorButtonType::L)] = d->setting;
			GetWindowSubclass(GetDlgItem(hWnd, IDC_IEKEYR), InternalEmulatorInputDialogProc, NULL, (DWORD_PTR *)(&d));
			set.emulatorButtons[unsigned(InternalEmulatorButtonType::R)] = d->setting;
			GetWindowSubclass(GetDlgItem(hWnd, IDC_IEKEYSELECT), InternalEmulatorInputDialogProc, NULL, (DWORD_PTR *)(&d));
			set.emulatorButtons[unsigned(InternalEmulatorButtonType::SELECT)] = d->setting;
			GetWindowSubclass(GetDlgItem(hWnd, IDC_IEKEYSTART), InternalEmulatorInputDialogProc, NULL, (DWORD_PTR *)(&d));
			set.emulatorButtons[unsigned(InternalEmulatorButtonType::START)] = d->setting;
			GetWindowSubclass(GetDlgItem(hWnd, IDC_IEKEYNEXTSTATE), InternalEmulatorInputDialogProc, NULL, (DWORD_PTR *)(&d));
			set.emulatorButtons[unsigned(InternalEmulatorButtonType::NEXTSTATE)] = d->setting;
			GetWindowSubclass(GetDlgItem(hWnd, IDC_IEKEYPREVSTATE), InternalEmulatorInputDialogProc, NULL, (DWORD_PTR *)(&d));
			set.emulatorButtons[unsigned(InternalEmulatorButtonType::PREVSTATE)] = d->setting;
			GetWindowSubclass(GetDlgItem(hWnd, IDC_IEKEYSAVESTATE), InternalEmulatorInputDialogProc, NULL, (DWORD_PTR *)(&d));
			set.emulatorButtons[unsigned(InternalEmulatorButtonType::SAVESTATE)] = d->setting;
			GetWindowSubclass(GetDlgItem(hWnd, IDC_IEKEYLOADSTATE), InternalEmulatorInputDialogProc, NULL, (DWORD_PTR *)(&d));
			set.emulatorButtons[unsigned(InternalEmulatorButtonType::LOADSTATE)] = d->setting;
			GetWindowSubclass(GetDlgItem(hWnd, IDC_IEKEYFASTFORWARD), InternalEmulatorInputDialogProc, NULL, (DWORD_PTR *)(&d));
			set.emulatorButtons[unsigned(InternalEmulatorButtonType::FASTFORWARD)] = d->setting;

			set.volume = SendMessage(GetDlgItem(hWnd, IDC_IEVOLUME), TBM_GETPOS, NULL, NULL) - 10000;
			set.joyNum = SendMessage(GetDlgItem(hWnd, IDC_IEJOYNUM), CB_GETCURSEL, 0, 0);

			DeleteState(hWnd);
			EndDialog(hWnd, 0);

			break;
		}
		case IDC_IECANCEL: {
			DeleteState(hWnd);
			EndDialog(hWnd, 0);
			break;
		}
		}
		break;
	}
	case WM_HSCROLL: {
		unsigned v = SendMessage(GetDlgItem(hWnd, IDC_IEVOLUME), TBM_GETPOS, NULL, NULL) - 10000;
		SetVolume(v);
		break;
	}
	case WM_CLOSE: {
		DeleteState(hWnd);
		EndDialog(hWnd, 0);
		break;
	}
	default:
		return FALSE;
	}
	return TRUE;
}
Ejemplo n.º 28
0
//////////////////////////////////////////////////////////////////////////
//
// Function:		CLabel::PreCreateWindow
//
// Description:		
//
// INPUTS:          
// 
// RETURNS:         
//
// NOTES:			
// 
// MODIFICATIONS:
//
// Name                     Date        Version Comments
// NT ALMOND				15092000    1.5     Origin
//////////////////////////////////////////////////////////////////////////
BOOL CLabel::PreCreateWindow(CREATESTRUCT& cs) 
{	
	SetWindowText("");
	return CStatic::PreCreateWindow(cs);
}
Ejemplo n.º 29
0
BOOL CSAPrefsDialog::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	long l = GetWindowLong(m_pageTree.m_hWnd, GWL_STYLE);
#if (_MSC_VER > 1100)
	l = l | TVS_TRACKSELECT ;
#else
	//#define TVS_TRACKSELECT         0x0200
	l = l | 0x0200;
#endif
	SetWindowLong(m_pageTree.m_hWnd, GWL_STYLE, l);
	
	// where will the dlgs live?
	m_boundingFrame.GetWindowRect(m_frameRect);
	ScreenToClient(m_frameRect);
	//   m_frameRect.DeflateRect(2,2);
	
	if (m_csTitle != _T(""))
		SetWindowText(m_csTitle);
	
	// set some styles for the pretty page indicator bar
	if (::IsWindow(m_captionBar.m_hWnd))
	{
		m_captionBar.m_textClr     = ::GetSysColor(COLOR_3DFACE);
		m_captionBar.m_fontWeight  = FW_BOLD;
		m_captionBar.m_fontSize    = 14;
		m_captionBar.m_csFontName  = _T("Verdana");
		m_captionBar.SetConstantText(m_csConstantText);
	}
	
	// fill the tree. we'll create the pages as we need them
	unsigned int i;
	for (i = 0; i <m_pages.size(); i++)
	{
		pageStruct *pPS = m_pages[i];
		ASSERT(pPS);
		ASSERT(pPS->pDlg);
		if (pPS)
		{
			TV_INSERTSTRUCT tvi;
			
			// find this node's parent...
			tvi.hParent = FindHTREEItemForDlg(pPS->pDlgParent);
			
			tvi.hInsertAfter = TVI_LAST;
			tvi.item.cchTextMax = 0;
			tvi.item.pszText = LPSTR_TEXTCALLBACK;
			tvi.item.lParam = (long)pPS;
			tvi.item.mask = TVIF_PARAM | TVIF_TEXT;
			
			HTREEITEM hTree = m_pageTree.InsertItem(&tvi);
			m_pageTree.Expand(tvi.hParent,TVE_EXPAND);
			
			// keep track of the dlg's we've added (for parent selection)
			if (hTree)
			{
				DWORD dwTree = (DWORD)hTree;
				m_dlgMap[pPS->pDlg]=dwTree;
			}
		}
	}

	for (i = 0; i < m_pages.size(); i++)
		// if we haven't already, Create the dialog
		if (!::IsWindow(m_pages[i]->pDlg->m_hWnd))
		{
			m_pages[i]->pDlg->Create(m_pages[i]->pDlg->GetID(), this);
		}
	
	// start with page 0
	if (m_pStartPage == NULL)
	{
		if (ShowPage(0))
		{
			m_iCurPage = 0;   
		}
	}
	else
	{
		// find start page
		for (i = 0; i < m_pages.size(); i++)
		{
			pageStruct *pPS = m_pages[i];
			ASSERT(pPS);
			if (pPS)
			{
				ASSERT(pPS->pDlg);
				if (pPS->pDlg == m_pStartPage)
				{
					ShowPage(i);
					m_iCurPage = i;
					break;
				}
			}
		}
	}
	
	return TRUE;  // return TRUE unless you set the focus to a control
	// EXCEPTION: OCX Property Pages should return FALSE
}
Ejemplo n.º 30
0
 virtual void init()
 {
  kDialog::init();

  ::set_font(this,font,"setup_buffers");

  set_tool_font(font);

  //SetClassLong(m_hWnd,GCL_STYLE,GetClassLong(m_hWnd,GCL_STYLE)|0x00020000); // CS_DROPSHADOW

  char tmp_str[256];

  unsigned int transp_color=0x0;
  unsigned int alpha=90;
  unsigned int cc_method=0;

  if(mf.get_profile("setup_buffers","background",tmp_str,sizeof(tmp_str)))
  {
   tmp_str[0]=0;
  }
  gui_set_background(this,&mf,tmp_str,transp_color,alpha,cc_method,_T("mixer/settings_dlg.jpg"));

  set_dragging(gui_get_show_content());

  SetWindowText(mf.get_profile("lang","setup_buffers.name"));
  
  if(!mf.get_profile("setup_buffers","cancel",tmp_str,sizeof(tmp_str)))
  {
   gui_create_button(this,&b_cancel,IDCANCEL,tmp_str,mf);
   b_cancel.show();
  }

  kRect r; r.left=r.top=r.bottom=r.right=0;

  // label
  if(!mf.get_profile("setup_buffers","label",tmp_str,sizeof(tmp_str)))
  {
   dword fg=0,bk=0;
   sscanf(tmp_str,"%d %d %d %d %x %x",&r.left,&r.top,&r.right,&r.bottom,&fg,&bk);
   label.create((char *)(LPCTSTR)mf.get_profile("setup_buffers","label.text"),r.left,r.top,r.right,r.bottom,this,fg,bk);
   label.show();
  }

  int value=-1;

  r.left=10; r.top=10; r.right=200; r.bottom=80;
  if(!mf.get_profile("setup_buffers","tank",tmp_str,sizeof(tmp_str)))
  {
   sscanf(tmp_str,"%d %d %d %d",&r.left,&r.top,&r.right,&r.bottom);
  }
  b_list[0].create(r,CBS_DROPDOWNLIST/* | CBS_AUTOHSCROLL | WS_VSCROLL*/,1000,this);
  add_tool((char *)(LPCTSTR)mf.get_profile("lang","setup_buffers.tanksize"),&b_list[0],1000);
  if(font.get_font())
   b_list[0].set_font(font);

  ikx_t->get_buffers(KX_TANKMEM_BUFFER,&value);
  b_list[0].add_string("2048 KB");
  b_list[0].add_string("1024 KB");
  b_list[0].add_string("512 KB");
  b_list[0].add_string("256 KB");
  b_list[0].add_string("128 KB");
  b_list[0].add_string("64 KB");
  b_list[0].add_string("32 KB");
  b_list[0].add_string("16 KB");
  b_list[0].add_string(mf.get_profile("lang","setup_buffers.none"));
  switch(value)
  {
    case 2048*1024: b_list[0].set_selection(0); break;
        case 1024*1024: b_list[0].set_selection(1); break;
        case 512*1024: b_list[0].set_selection(2); break;
        case 256*1024: b_list[0].set_selection(3); break;
        case 128*1024: b_list[0].set_selection(4); break;
        case 64*1024: b_list[0].set_selection(5); break;
        case 32*1024: b_list[0].set_selection(6); break;
        case 16*1024: b_list[0].set_selection(7); break;
        case 0: b_list[0].set_selection(8); break;
        default: b_list[0].set_selection(-1); break;
  }
  b_list[0].set_dropped_width(140);
  b_list[0].show();

  r.left=10; r.top=35; r.right=200; r.bottom=110;
  if(!mf.get_profile("setup_buffers","pb",tmp_str,sizeof(tmp_str)))
  {
   sscanf(tmp_str,"%d %d %d %d",&r.left,&r.top,&r.right,&r.bottom);
  }

  b_list[1].create(r, CBS_DROPDOWNLIST /*| CBS_AUTOHSCROLL | WS_VSCROLL*/,1001,this);
  add_tool((char *)(LPCTSTR)mf.get_profile("lang","setup_buffers.pb_size"),&b_list[1],1001);
  if(font.get_font())
   b_list[1].set_font(font);

  ikx_t->get_buffers(KX_PLAYBACK_BUFFER,&value);
  b_list[1].add_string("240 bytes (~0.25 ms)");
  b_list[1].add_string("504 bytes (~0.53 ms)");
  b_list[1].add_string("1008 bytes (~1.05 ms)");
  b_list[1].add_string("2040 bytes (~2.12 ms)");
  b_list[1].add_string("4080 bytes (~4.25 ms)");
  b_list[1].add_string("8184 bytes (~8.53 ms)");
  b_list[1].add_string("8352 bytes (~8.70 ms)");
  b_list[1].add_string("9600 bytes (~10.00 ms)");
  b_list[1].add_string("16368 bytes (~17.05 ms)");

  switch(value)
  {
    case 240: b_list[1].set_selection(0); break;
    case 504: b_list[1].set_selection(1); break;
        case 1008: b_list[1].set_selection(2); break;
        case 2040: b_list[1].set_selection(3); break;
        case 4080: b_list[1].set_selection(4); break;
        case 8184: b_list[1].set_selection(5); break;
        case 8352: b_list[1].set_selection(6); break;
        case 9600: b_list[1].set_selection(7); break;
        case 16368: b_list[1].set_selection(8); break;
        default: b_list[1].set_selection(-1); break;
  }
  b_list[1].set_dropped_width(140);
  b_list[1].show();

  r.left=10; r.top=60; r.right=200; r.bottom=130;
  if(!mf.get_profile("setup_buffers","rec",tmp_str,sizeof(tmp_str)))
  {
   sscanf(tmp_str,"%d %d %d %d",&r.left,&r.top,&r.right,&r.bottom);
  }

  b_list[2].create(r,CBS_DROPDOWNLIST /*| CBS_AUTOHSCROLL | WS_VSCROLL*/,1002,this);
  add_tool((char *)(LPCTSTR)mf.get_profile("lang","setup_buffers.rec_size"),&b_list[2],1002);
  if(font.get_font())
   b_list[2].set_font(font);

  ikx_t->get_buffers(KX_RECORD_BUFFER,&value);

  b_list[2].add_string("384 bytes");
  b_list[2].add_string("448 bytes");
  b_list[2].add_string("512 bytes");
  b_list[2].add_string("640 bytes");
  b_list[2].add_string("768 bytes");
  b_list[2].add_string("896 bytes");
  b_list[2].add_string("1024 bytes");
  b_list[2].add_string("1280 bytes");
  b_list[2].add_string("1536 bytes");
  b_list[2].add_string("1792 bytes");
  b_list[2].add_string("2048 bytes");
  b_list[2].add_string("2560 bytes");
  b_list[2].add_string("3072 bytes");
  b_list[2].add_string("3584 bytes");
  b_list[2].add_string("4096 bytes");
  b_list[2].add_string("5120 bytes");
  b_list[2].add_string("6144 bytes");
  b_list[2].add_string("7168 bytes");
  b_list[2].add_string("8192 bytes");
  b_list[2].add_string("10240 bytes");
  b_list[2].add_string("12288 bytes");
  b_list[2].add_string("14366 bytes");
  b_list[2].add_string("16384 bytes");
  b_list[2].add_string("20480 bytes");
  b_list[2].add_string("24576 bytes");
  b_list[2].add_string("28672 bytes");
  b_list[2].add_string("32768 bytes");
  b_list[2].add_string("40960 bytes");
  b_list[2].add_string("49152 bytes");
  b_list[2].add_string("57344 bytes");
  b_list[2].add_string("65536 bytes");

  switch(value)
  {
        case 384: b_list[2].set_selection(0); break;
        case 448: b_list[2].set_selection(1); break;
        case 512: b_list[2].set_selection(2); break;
        case 640: b_list[2].set_selection(3); break;
        case 768: b_list[2].set_selection(4); break;
        case 896: b_list[2].set_selection(5); break;
        case 1024: b_list[2].set_selection(6); break;
        case 1280: b_list[2].set_selection(7); break;
        case 1536: b_list[2].set_selection(8); break;
        case 1792: b_list[2].set_selection(9); break;
        case 2048: b_list[2].set_selection(10); break;
        case 2560: b_list[2].set_selection(11); break;
        case 3072: b_list[2].set_selection(12); break;
        case 3584: b_list[2].set_selection(13); break;
        case 4096: b_list[2].set_selection(14); break;
        case 5120: b_list[2].set_selection(15); break;
        case 6144: b_list[2].set_selection(16); break;
        case 7168: b_list[2].set_selection(17); break;
        case 8192: b_list[2].set_selection(18); break;
        case 10240: b_list[2].set_selection(19); break;
        case 12288: b_list[2].set_selection(20); break;
        case 14366: b_list[2].set_selection(21); break;
        case 16384: b_list[2].set_selection(22); break;
        case 20480: b_list[2].set_selection(23); break;
        case 24576: b_list[2].set_selection(24); break;
        case 28672: b_list[2].set_selection(25); break;
        case 32768: b_list[2].set_selection(26); break;
        case 40960: b_list[2].set_selection(27); break;
        case 49152: b_list[2].set_selection(28); break;
        case 57344: b_list[2].set_selection(29); break;
        case 65536: b_list[2].set_selection(30); break;
        default: b_list[2].set_selection(-1); break;
  }
  b_list[2].set_dropped_width(140);
  b_list[2].show();

  r.left=10; r.top=85; r.right=200; r.bottom=155;
  if(!mf.get_profile("setup_buffers","ac3",tmp_str,sizeof(tmp_str)))
  {
   sscanf(tmp_str,"%d %d %d %d",&r.left,&r.top,&r.right,&r.bottom);
  }

  b_list[3].create(r, CBS_DROPDOWNLIST /*| CBS_AUTOHSCROLL | WS_VSCROLL*/, 1003, this);
  add_tool((char *)(LPCTSTR)mf.get_profile("lang","setup_buffers.num_ac3"),&b_list[3],1003);
  if(font.get_font())
   b_list[3].set_font(font);

  b_list[3].set_dropped_width(140);
  b_list[3].add_string("2 buffers");
  b_list[3].add_string("4 buffers");
  b_list[3].add_string("6 buffers");
  b_list[3].add_string("8 buffers");
  b_list[3].add_string("16 buffers");

  ikx_t->get_buffers(KX_AC3_BUFFERS,&value);
  switch(value)
  {
   case 2: b_list[3].set_selection(0); break;
   case 4: b_list[3].set_selection(1); break;
   case 6: b_list[3].set_selection(2); break;
   case 8: b_list[3].set_selection(3); break;
   case 16:  b_list[3].set_selection(4); break;
   default:  b_list[3].set_selection(-1); break;
  }
  b_list[3].ShowWindow(SW_SHOW);


  r.left=10; r.top=110; r.right=200; r.bottom=180;
  if(!mf.get_profile("setup_buffers","gsif",tmp_str,sizeof(tmp_str)))
  {
   sscanf(tmp_str,"%d %d %d %d",&r.left,&r.top,&r.right,&r.bottom);
  }

  b_list[4].create(r, CBS_DROPDOWNLIST /*| CBS_AUTOHSCROLL | WS_VSCROLL*/,1004, this);
  add_tool((char *)(LPCTSTR)mf.get_profile("lang","setup_buffers.gsif"),&b_list[4],1004);
  if(font.get_font())
   b_list[4].set_font(font);

  b_list[4].set_dropped_width(140);
  b_list[4].add_string("16 samples");
  b_list[4].add_string("32 samples");
  b_list[4].add_string("64 samples");
  b_list[4].add_string("128 samples");
  b_list[4].add_string("256 samples");
  b_list[4].add_string("512 samples");
  b_list[4].add_string("1024 samples");
  b_list[4].add_string("2048 samples");
  b_list[4].add_string("4096 samples");

  value=-1;
  ikx_t->get_buffers(KX_GSIF_BUFFER,&value);
  switch(value)
  {
   case 16:  b_list[4].set_selection(0); break;
   case 32:  b_list[4].set_selection(1); break;
   case 64:  b_list[4].set_selection(2); break;
   case 128:  b_list[4].set_selection(3); break;
   case 256:  b_list[4].set_selection(4); break;
   case 512:  b_list[4].set_selection(5); break;
   case 1024:  b_list[4].set_selection(6); break;
   case 2048:  b_list[4].set_selection(7); break;
   case 4096:  b_list[4].set_selection(8); break;
   default:  b_list[4].set_selection(-1); break;
  }
  b_list[4].ShowWindow(SW_SHOW);

  CenterWindow();
 };