[Python-checkins] cpython: Remove associator project - it's not needed

brian.curtin python-checkins at python.org
Fri Jun 22 00:13:09 CEST 2012


http://hg.python.org/cpython/rev/f0eb280ba898
changeset:   77553:f0eb280ba898
user:        Brian Curtin <brian at python.org>
date:        Thu Jun 21 16:35:12 2012 -0500
summary:
  Remove associator project - it's not needed

files:
  PC/associator.c                    |   731 -------
  PC/associator.h                    |  1480 ----------------
  PC/associator.rc                   |    97 -
  PCbuild/associator.vcxproj         |    84 -
  PCbuild/associator.vcxproj.filters |    32 -
  PCbuild/pcbuild.sln                |     2 -
  6 files changed, 0 insertions(+), 2426 deletions(-)


diff --git a/PC/associator.c b/PC/associator.c
deleted file mode 100644
--- a/PC/associator.c
+++ /dev/null
@@ -1,731 +0,0 @@
-/*
- * Copyright (C) 2011-2012 Vinay Sajip. All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include <windows.h>
-#include <commctrl.h>
-#include <stdio.h>
-#include "associator.h"
-
-#define PYTHON_EXECUTABLE L"python.exe"
-
-#define MSGSIZE 1024
-#define MAX_VERSION_SIZE    4
-
-typedef struct {
-    wchar_t version[MAX_VERSION_SIZE]; /* m.n */
-    int bits;   /* 32 or 64 */
-    wchar_t executable[MAX_PATH];
-} INSTALLED_PYTHON;
-
-/*
- * To avoid messing about with heap allocations, just assume we can allocate
- * statically and never have to deal with more versions than this.
- */
-#define MAX_INSTALLED_PYTHONS   100
-
-static INSTALLED_PYTHON installed_pythons[MAX_INSTALLED_PYTHONS];
-
-static size_t num_installed_pythons = 0;
-
-/* to hold SOFTWARE\Python\PythonCore\X.Y\InstallPath */
-#define IP_BASE_SIZE 40
-#define IP_SIZE (IP_BASE_SIZE + MAX_VERSION_SIZE)
-#define CORE_PATH L"SOFTWARE\\Python\\PythonCore"
-
-static wchar_t * location_checks[] = {
-    L"\\",
-/*
-    L"\\PCBuild\\",
-    L"\\PCBuild\\amd64\\",
- */
-    NULL
-};
-
-static wchar_t *
-skip_whitespace(wchar_t * p)
-{
-    while (*p && isspace(*p))
-        ++p;
-    return p;
-}
-
-/*
- * This function is here to minimise Visual Studio
- * warnings about security implications of getenv, and to
- * treat blank values as if they are absent.
- */
-static wchar_t * get_env(wchar_t * key)
-{
-    wchar_t * result = _wgetenv(key);
-
-    if (result) {
-        result = skip_whitespace(result);
-        if (*result == L'\0')
-            result = NULL;
-    }
-    return result;
-}
-
-static FILE * log_fp = NULL;
-
-static void
-debug(wchar_t * format, ...)
-{
-    va_list va;
-
-    if (log_fp != NULL) {
-        va_start(va, format);
-        vfwprintf_s(log_fp, format, va);
-    }
-}
-
-static void winerror(int rc, wchar_t * message, int size)
-{
-    FormatMessageW(
-        FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
-        NULL, rc, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
-        message, size, NULL);
-}
-
-static INSTALLED_PYTHON *
-find_existing_python(wchar_t * path)
-{
-    INSTALLED_PYTHON * result = NULL;
-    size_t i;
-    INSTALLED_PYTHON * ip;
-
-    for (i = 0, ip = installed_pythons; i < num_installed_pythons; i++, ip++) {
-        if (_wcsicmp(path, ip->executable) == 0) {
-            result = ip;
-            break;
-        }
-    }
-    return result;
-}
-
-static void
-locate_pythons_for_key(HKEY root, REGSAM flags)
-{
-    HKEY core_root, ip_key;
-    LSTATUS status = RegOpenKeyExW(root, CORE_PATH, 0, flags, &core_root);
-    wchar_t message[MSGSIZE];
-    DWORD i;
-    size_t n;
-    BOOL ok;
-    DWORD type, data_size, attrs;
-    INSTALLED_PYTHON * ip, * pip;
-    wchar_t ip_path[IP_SIZE];
-    wchar_t * check;
-    wchar_t ** checkp;
-    wchar_t *key_name = (root == HKEY_LOCAL_MACHINE) ? L"HKLM" : L"HKCU";
-
-    if (status != ERROR_SUCCESS)
-        debug(L"locate_pythons_for_key: unable to open PythonCore key in %s\n",
-              key_name);
-    else {
-        ip = &installed_pythons[num_installed_pythons];
-        for (i = 0; num_installed_pythons < MAX_INSTALLED_PYTHONS; i++) {
-            status = RegEnumKeyW(core_root, i, ip->version, MAX_VERSION_SIZE);
-            if (status != ERROR_SUCCESS) {
-                if (status != ERROR_NO_MORE_ITEMS) {
-                    /* unexpected error */
-                    winerror(status, message, MSGSIZE);
-                    debug(L"Can't enumerate registry key for version %s: %s\n",
-                          ip->version, message);
-                }
-                break;
-            }
-            else {
-                _snwprintf_s(ip_path, IP_SIZE, _TRUNCATE,
-                             L"%s\\%s\\InstallPath", CORE_PATH, ip->version);
-                status = RegOpenKeyExW(root, ip_path, 0, flags, &ip_key);
-                if (status != ERROR_SUCCESS) {
-                    winerror(status, message, MSGSIZE);
-                    // Note: 'message' already has a trailing \n
-                    debug(L"%s\\%s: %s", key_name, ip_path, message);
-                    continue;
-                }
-                data_size = sizeof(ip->executable) - 1;
-                status = RegQueryValueEx(ip_key, NULL, NULL, &type,
-                                         (LPBYTE) ip->executable, &data_size);
-                RegCloseKey(ip_key);
-                if (status != ERROR_SUCCESS) {
-                    winerror(status, message, MSGSIZE);
-                    debug(L"%s\\%s: %s\n", key_name, ip_path, message);
-                    continue;
-                }
-                if (type == REG_SZ) {
-                    data_size = data_size / sizeof(wchar_t) - 1;  /* for NUL */
-                    if (ip->executable[data_size - 1] == L'\\')
-                        --data_size; /* reg value ended in a backslash */
-                    /* ip->executable is data_size long */
-                    for (checkp = location_checks; *checkp; ++checkp) {
-                        check = *checkp;
-                        _snwprintf_s(&ip->executable[data_size],
-                                     MAX_PATH - data_size,
-                                     MAX_PATH - data_size,
-                                     L"%s%s", check, PYTHON_EXECUTABLE);
-                        attrs = GetFileAttributesW(ip->executable);
-                        if (attrs == INVALID_FILE_ATTRIBUTES) {
-                            winerror(GetLastError(), message, MSGSIZE);
-                            debug(L"locate_pythons_for_key: %s: %s",
-                                  ip->executable, message);
-                        }
-                        else if (attrs & FILE_ATTRIBUTE_DIRECTORY) {
-                            debug(L"locate_pythons_for_key: '%s' is a \
-directory\n",
-                                  ip->executable, attrs);
-                        }
-                        else if (find_existing_python(ip->executable)) {
-                            debug(L"locate_pythons_for_key: %s: already \
-found: %s\n", ip->executable);
-                        }
-                        else {
-                            /* check the executable type. */
-                            ok = GetBinaryTypeW(ip->executable, &attrs);
-                            if (!ok) {
-                                debug(L"Failure getting binary type: %s\n",
-                                      ip->executable);
-                            }
-                            else {
-                                if (attrs == SCS_64BIT_BINARY)
-                                    ip->bits = 64;
-                                else if (attrs == SCS_32BIT_BINARY)
-                                    ip->bits = 32;
-                                else
-                                    ip->bits = 0;
-                                if (ip->bits == 0) {
-                                    debug(L"locate_pythons_for_key: %s: \
-invalid binary type: %X\n",
-                                          ip->executable, attrs);
-                                }
-                                else {
-                                    if (wcschr(ip->executable, L' ') != NULL) {
-                                        /* has spaces, so quote */
-                                        n = wcslen(ip->executable);
-                                        memmove(&ip->executable[1],
-                                                ip->executable, n * sizeof(wchar_t));
-                                        ip->executable[0] = L'\"';
-                                        ip->executable[n + 1] = L'\"';
-                                        ip->executable[n + 2] = L'\0';
-                                    }
-                                    debug(L"locate_pythons_for_key: %s \
-is a %dbit executable\n",
-                                        ip->executable, ip->bits);
-                                    ++num_installed_pythons;
-                                    pip = ip++;
-                                    if (num_installed_pythons >=
-                                        MAX_INSTALLED_PYTHONS)
-                                        break;
-                                    /* Copy over the attributes for the next */
-                                    *ip = *pip;
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        }
-        RegCloseKey(core_root);
-    }
-}
-
-static int
-compare_pythons(const void * p1, const void * p2)
-{
-    INSTALLED_PYTHON * ip1 = (INSTALLED_PYTHON *) p1;
-    INSTALLED_PYTHON * ip2 = (INSTALLED_PYTHON *) p2;
-    /* note reverse sorting on version */
-    int result = wcscmp(ip2->version, ip1->version);
-
-    if (result == 0)
-        result = ip2->bits - ip1->bits; /* 64 before 32 */
-    return result;
-}
-
-static void
-locate_all_pythons()
-{
-#if defined(_M_X64)
-    // If we are a 64bit process, first hit the 32bit keys.
-    debug(L"locating Pythons in 32bit registry\n");
-    locate_pythons_for_key(HKEY_CURRENT_USER, KEY_READ | KEY_WOW64_32KEY);
-    locate_pythons_for_key(HKEY_LOCAL_MACHINE, KEY_READ | KEY_WOW64_32KEY);
-#else
-    // If we are a 32bit process on a 64bit Windows, first hit the 64bit keys.
-    BOOL f64 = FALSE;
-    if (IsWow64Process(GetCurrentProcess(), &f64) && f64) {
-        debug(L"locating Pythons in 64bit registry\n");
-        locate_pythons_for_key(HKEY_CURRENT_USER, KEY_READ | KEY_WOW64_64KEY);
-        locate_pythons_for_key(HKEY_LOCAL_MACHINE, KEY_READ | KEY_WOW64_64KEY);
-    }
-#endif    
-    // now hit the "native" key for this process bittedness.
-    debug(L"locating Pythons in native registry\n");
-    locate_pythons_for_key(HKEY_CURRENT_USER, KEY_READ);
-    locate_pythons_for_key(HKEY_LOCAL_MACHINE, KEY_READ);
-    qsort(installed_pythons, num_installed_pythons, sizeof(INSTALLED_PYTHON),
-          compare_pythons);
-}
-
-typedef struct {
-    wchar_t * path;
-    wchar_t * key;
-    wchar_t * value;
-} REGISTRY_ENTRY;
-
-static REGISTRY_ENTRY registry_entries[] = {
-    { L".py", NULL, L"Python.File" },
-    { L".pyc", NULL, L"Python.CompiledFile" },
-    { L".pyo", NULL, L"Python.CompiledFile" },
-    { L".pyw", NULL, L"Python.NoConFile" },
-
-    { L"Python.CompiledFile", NULL, L"Compiled Python File" },
-    { L"Python.CompiledFile\\DefaultIcon", NULL, L"pyc.ico" },
-    { L"Python.CompiledFile\\shell\\open", NULL, L"Open" },
-    { L"Python.CompiledFile\\shell\\open\\command", NULL, L"python.exe" },
-
-    { L"Python.File", NULL, L"Python File" },
-    { L"Python.File\\DefaultIcon", NULL, L"py.ico" },
-    { L"Python.File\\shell\\open", NULL, L"Open" },
-    { L"Python.File\\shell\\open\\command", NULL, L"python.exe" },
-
-    { L"Python.NoConFile", NULL, L"Python File (no console)" },
-    { L"Python.NoConFile\\DefaultIcon", NULL, L"py.ico" },
-    { L"Python.NoConFile\\shell\\open", NULL, L"Open" },
-    { L"Python.NoConFile\\shell\\open\\command", NULL, L"pythonw.exe" },
-
-    { NULL }
-};
-
-static BOOL
-do_association(INSTALLED_PYTHON * ip)
-{
-    LONG rc;
-    BOOL result = TRUE;
-    REGISTRY_ENTRY * rp = registry_entries;
-    wchar_t value[MAX_PATH];
-    wchar_t root[MAX_PATH];
-    wchar_t message[MSGSIZE];
-    wchar_t * pvalue;
-    HKEY hKey;
-    DWORD len;
-
-    wcsncpy_s(root, MAX_PATH, ip->executable, _TRUNCATE);
-    pvalue = wcsrchr(root, '\\');
-    if (pvalue)
-        *pvalue = L'\0';
-
-    for (; rp->path; ++rp) {
-        if (wcsstr(rp->path, L"DefaultIcon")) {
-            pvalue = value;
-            _snwprintf_s(value, MAX_PATH, _TRUNCATE,
-                         L"%s\\DLLs\\%s", root, rp->value);
-        }
-        else if (wcsstr(rp->path, L"open\\command")) {
-            pvalue = value;
-            _snwprintf_s(value, MAX_PATH, _TRUNCATE,
-                         L"%s\\%s \"%%1\" %%*", root, rp->value);
-        }
-        else {
-            pvalue = rp->value;
-        }
-        /* use rp->path, rp->key, pvalue */
-        /* NOTE: size is in bytes */
-        len = (DWORD) ((1 + wcslen(pvalue)) * sizeof(wchar_t));
-        rc = RegOpenKeyEx(HKEY_CLASSES_ROOT, rp->path, 0, KEY_SET_VALUE, &hKey);
-        if (rc == ERROR_SUCCESS) {
-            rc = RegSetValueExW(hKey, rp->key, 0, REG_SZ, (LPBYTE) pvalue, len);
-            RegCloseKey(hKey);
-        }
-        if (rc != ERROR_SUCCESS) {
-            winerror(rc, message, MSGSIZE);
-            MessageBoxW(NULL, message, L"Unable to set file associations", MB_OK | MB_ICONSTOP);
-            result = FALSE;
-            break;
-        }
-    }
-    return result;
-}
-
-static BOOL
-associations_exist()
-{
-    BOOL result = FALSE;
-    REGISTRY_ENTRY * rp = registry_entries;
-    wchar_t buffer[MSGSIZE];
-    LONG csize = MSGSIZE * sizeof(wchar_t);
-    LONG rc;
-
-    /* Currently, if any is found, we assume they're all there. */
-
-    for (; rp->path; ++rp) {
-        LONG size = csize;
-        rc = RegQueryValueW(HKEY_CLASSES_ROOT, rp->path, buffer, &size); 
-        if (rc == ERROR_SUCCESS) {
-            result = TRUE;
-            break;
-        }
-    }
-    return result;
-}
-
-/* --------------------------------------------------------------------*/
-
-static BOOL CALLBACK
-find_by_title(HWND hwnd, LPARAM lParam)
-{
-    wchar_t buffer[MSGSIZE];
-    BOOL not_found = TRUE;
-
-    wchar_t * p = (wchar_t *) GetWindowTextW(hwnd, buffer, MSGSIZE);
-    if (wcsstr(buffer, L"Python Launcher") == buffer) {
-        not_found = FALSE;
-        *((HWND *) lParam) = hwnd;
-    }
-    return not_found;
-}
-
-static HWND
-find_installer_window()
-{
-    HWND result = NULL;
-    BOOL found = EnumWindows(find_by_title, (LPARAM) &result);
-
-    return result;
-}
-
-static void
-centre_window_in_front(HWND hwnd)
-{
-    HWND hwndParent;
-    RECT rect, rectP;
-    int width, height;      
-    int screenwidth, screenheight;
-    int x, y;
-
-    //make the window relative to its parent
-
-    screenwidth  = GetSystemMetrics(SM_CXSCREEN);
-    screenheight = GetSystemMetrics(SM_CYSCREEN);
-
-    hwndParent = GetParent(hwnd);
-
-    GetWindowRect(hwnd, &rect);
-    if (hwndParent) {
-        GetWindowRect(hwndParent, &rectP);
-    }
-    else {
-        rectP.left = rectP.top = 0;
-        rectP.right = screenwidth;
-        rectP.bottom = screenheight;
-    }
-
-    width  = rect.right  - rect.left;
-    height = rect.bottom - rect.top;
-
-    x = ((rectP.right-rectP.left) -  width) / 2 + rectP.left;
-    y = ((rectP.bottom-rectP.top) - height) / 2 + rectP.top;
-
-
-    //make sure that the dialog box never moves outside of
-    //the screen
-
-    if (x < 0)
-        x = 0;
-
-    if (y < 0)
-        y = 0;
-
-    if (x + width  > screenwidth)
-        x = screenwidth  - width;
-    if (y + height > screenheight)
-        y = screenheight - height;
-
-    SetWindowPos(hwnd, HWND_TOPMOST, x, y, width, height, SWP_SHOWWINDOW);
-}
-
-static void
-init_list(HWND hList)
-{
-    LVCOLUMNW column;
-    LVITEMW item;
-    int colno = 0;
-    int width = 0;
-    int row;
-    size_t i;
-    INSTALLED_PYTHON * ip;
-    RECT r;
-    LPARAM style;
-
-    GetClientRect(hList, &r);
-
-    style = SendMessage(hList, LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0);
-    SendMessage(hList, LVM_SETEXTENDEDLISTVIEWSTYLE,
-                0, style | LVS_EX_FULLROWSELECT);
-
-    /* First set up the columns */
-    memset(&column, 0, sizeof(column));
-    column.mask = LVCF_TEXT | LVCF_WIDTH | LVCF_SUBITEM;
-    column.pszText = L"Version";
-    column.cx = 60;
-    width += column.cx;
-    SendMessage(hList, LVM_INSERTCOLUMN, colno++,(LPARAM) &column);
-#if defined(_M_X64)
-    column.pszText = L"Bits";
-    column.cx = 40;
-    column.iSubItem = colno;
-    SendMessage(hList, LVM_INSERTCOLUMN, colno++,(LPARAM) &column);
-    width += column.cx;
-#endif
-    column.pszText = L"Path";
-    column.cx = r.right - r.top - width;
-    column.iSubItem = colno;
-    SendMessage(hList, LVM_INSERTCOLUMN, colno++,(LPARAM) &column);
-
-    /* Then insert the rows */
-    memset(&item, 0, sizeof(item));
-    item.mask = LVIF_TEXT;
-    for (i = 0, ip = installed_pythons;  i < num_installed_pythons; i++,ip++) {
-        item.iItem = (int) i;
-        item.iSubItem = 0;
-        item.pszText = ip->version;
-        colno = 0;
-        row = (int) SendMessage(hList, LVM_INSERTITEM, 0, (LPARAM) &item);
-#if defined(_M_X64)
-        item.iSubItem = ++colno;
-        item.pszText = (ip->bits == 64) ? L"64": L"32";
-        SendMessage(hList, LVM_SETITEM, row, (LPARAM) &item);
-#endif
-        item.iSubItem = ++colno;
-        item.pszText = ip->executable;
-        SendMessage(hList, LVM_SETITEM, row, (LPARAM) &item);
-    }
-}
-
-/* ----------------------------------------------------------------*/
-
-typedef int (__stdcall *MSGBOXWAPI)(IN HWND hWnd, 
-        IN LPCWSTR lpText, IN LPCWSTR lpCaption, 
-        IN UINT uType, IN WORD wLanguageId, IN DWORD dwMilliseconds);
-
-int MessageBoxTimeoutW(IN HWND hWnd, IN LPCWSTR lpText, 
-    IN LPCWSTR lpCaption, IN UINT uType, 
-    IN WORD wLanguageId, IN DWORD dwMilliseconds);
-
-#define MB_TIMEDOUT 32000
-
-int MessageBoxTimeoutW(HWND hWnd, LPCWSTR lpText, 
-    LPCWSTR lpCaption, UINT uType, WORD wLanguageId, DWORD dwMilliseconds)
-{
-    static MSGBOXWAPI MsgBoxTOW = NULL;
-
-    if (!MsgBoxTOW) {
-        HMODULE hUser32 = GetModuleHandleW(L"user32.dll");
-        if (hUser32)
-            MsgBoxTOW = (MSGBOXWAPI)GetProcAddress(hUser32, 
-                                      "MessageBoxTimeoutW");
-        else {
-            //stuff happened, add code to handle it here 
-            //(possibly just call MessageBox())
-            return 0;
-        }
-    }
-
-    if (MsgBoxTOW)
-        return MsgBoxTOW(hWnd, lpText, lpCaption, uType, wLanguageId,
-                         dwMilliseconds);
-
-    return 0;
-}
-/* ----------------------------------------------------------------*/
-
-static INT_PTR CALLBACK
-DialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
-{
-    HWND hList;
-    HWND hChild;
-    static int selected_index = -1;
-    WORD low = LOWORD(wParam);
-    wchar_t confirmation[MSGSIZE];
-    BOOL result = FALSE;
-
-    debug(L"DialogProc entry: 0x%02X\n", message);
-    switch (message) {
-    case WM_INITDIALOG:
-        hList = GetDlgItem(hDlg, IDC_LIST1);
-        init_list(hList);
-        SetFocus(hList);
-        result = TRUE;
-        break;
-    case WM_COMMAND:
-        if((low == IDOK) || (low == IDCANCEL)) {
-            HMODULE hUser32 = LoadLibraryW(L"user32.dll");
-
-            if (low == IDCANCEL)
-                wcsncpy_s(confirmation, MSGSIZE, L"No association was \
-performed.", _TRUNCATE);
-            else {
-                if (selected_index < 0) {
-                /* should never happen */
-                    wcsncpy_s(confirmation, MSGSIZE, L"The Python version to \
-associate with couldn't be determined.", _TRUNCATE);
-                }
-                else {
-                    INSTALLED_PYTHON * ip = &installed_pythons[selected_index];
-
-                    /* Do the association and set the message. */
-                    do_association(ip);
-                    _snwprintf_s(confirmation, MSGSIZE, _TRUNCATE,
-                                 L"Associated Python files with the Python %s \
-found at '%s'", ip->version, ip->executable);
-                }
-            }
-
-            if (hUser32) {
-                MessageBoxTimeoutW(hDlg,
-                                   confirmation, 
-                                   L"Association Status",
-                                   MB_OK | MB_SETFOREGROUND |
-                                   MB_ICONINFORMATION,
-                                   0, 2000);
-                FreeLibrary(hUser32);
-            }
-            PostQuitMessage(0);
-            EndDialog(hDlg, 0);
-            result = TRUE;
-        }
-        break;
-    case WM_NOTIFY:
-        if (low == IDC_LIST1) {
-            NMLISTVIEW * p = (NMLISTVIEW *) lParam;
-
-            if ((p->hdr.code == LVN_ITEMCHANGED) &&
-                (p->uNewState & LVIS_SELECTED)) {
-                hChild = GetDlgItem(hDlg, IDOK);
-                selected_index = p->iItem;
-                EnableWindow(hChild, selected_index >= 0);
-            }
-            result = TRUE;
-        }
-        break;
-    case WM_DESTROY:
-        PostQuitMessage(0);
-        result = TRUE;
-        break;
-    case WM_CLOSE:
-        DestroyWindow(hDlg);
-        result = TRUE;
-        break;
-    }
-    debug(L"DialogProc exit: %d\n", result);
-    return result;
-}
-
-int WINAPI wWinMain(HINSTANCE hInstance,
-                   HINSTANCE hPrevInstance,
-                   LPWSTR lpCmdLine, int nShow)
-{
-    MSG  msg;
-    HWND hDialog = 0;
-    HICON hIcon;
-    HWND hParent;
-    int status;
-    DWORD dw;
-    INITCOMMONCONTROLSEX icx;
-    wchar_t * wp;
-
-    wp = get_env(L"PYASSOC_DEBUG");
-    if ((wp != NULL) && (*wp != L'\0')) {
-        fopen_s(&log_fp, "c:\\temp\\associator.log", "w");
-    }
-
-    if (!lpCmdLine) {
-        debug(L"No command line specified.\n");
-        return 0;
-    }
-    if (!wcsstr(lpCmdLine, L"nocheck") &&
-        associations_exist())   /* Could have been restored by uninstall. */
-        return 0;
-
-    locate_all_pythons();
-
-    if (num_installed_pythons == 0)
-        return 0;
-
-    debug(L"%d pythons found.\n", num_installed_pythons);
-
-    /*
-     * OK, now there's something to do.
-     *
-     * We need to find the installer window to be the parent of
-     * our dialog, otherwise our dialog will be behind it.
-     *
-     * First, initialize common controls. If you don't - on
-     * some machines it works fine, on others the dialog never
-     * appears!
-     */
-
-    icx.dwSize = sizeof(icx);
-    icx.dwICC = ICC_LISTVIEW_CLASSES;
-    InitCommonControlsEx(&icx);
-
-    hParent = find_installer_window();
-    debug(L"installer window: %X\n", hParent);
-    hDialog = CreateDialogW(hInstance, MAKEINTRESOURCE(DLG_MAIN), hParent,
-                            DialogProc);
-    dw = GetLastError();
-    debug(L"dialog created: %X: error: %X\n", hDialog, dw);
-
-    if (!hDialog)
-    {
-        wchar_t buf [100];
-        _snwprintf_s(buf, 100, _TRUNCATE, L"Error 0x%x", GetLastError());
-        MessageBoxW(0, buf, L"CreateDialog", MB_ICONEXCLAMATION | MB_OK);
-        return 1;
-    }
-
-    centre_window_in_front(hDialog);
-    hIcon = LoadIcon( GetModuleHandle(NULL), MAKEINTRESOURCE(DLG_ICON));
-    if( hIcon )
-    {
-       SendMessage(hDialog, WM_SETICON, ICON_BIG, (LPARAM) hIcon);
-       SendMessage(hDialog, WM_SETICON, ICON_SMALL, (LPARAM) hIcon);
-       DestroyIcon(hIcon);
-    }
-
-    while ((status = GetMessage (& msg, 0, 0, 0)) != 0)
-    {
-        if (status == -1)
-            return -1;
-        if (!IsDialogMessage(hDialog, & msg))
-        {
-            TranslateMessage( & msg );
-            DispatchMessage( & msg );
-        }
-    }
-
-    return (int) msg.wParam;
-}
diff --git a/PC/associator.h b/PC/associator.h
deleted file mode 100644
--- a/PC/associator.h
+++ /dev/null
@@ -1,1480 +0,0 @@
-//{{NO_DEPENDENCIES}}
-// Microsoft Visual C++ generated include file.
-// Used by main.rc
-//
-#define SW_HIDE                         0
-#define HIDE_WINDOW                     0
-#define WM_NULL                         0x0000
-#define WA_INACTIVE                     0
-#define HTNOWHERE                       0
-#define SMTO_NORMAL                     0x0000
-#define ICON_SMALL                      0
-#define SIZE_RESTORED                   0
-#define BN_CLICKED                      0
-#define BST_UNCHECKED                   0x0000
-#define HDS_HORZ                        0x0000
-#define TBSTYLE_BUTTON                  0x0000
-#define TBS_HORZ                        0x0000
-#define TBS_BOTTOM                      0x0000
-#define TBS_RIGHT                       0x0000
-#define LVS_ICON                        0x0000
-#define LVS_ALIGNTOP                    0x0000
-#define TCS_TABS                        0x0000
-#define TCS_SINGLELINE                  0x0000
-#define TCS_RIGHTJUSTIFY                0x0000
-#define DTS_SHORTDATEFORMAT             0x0000
-#define PGS_VERT                        0x00000000
-#define LANG_NEUTRAL                    0x00
-#define SUBLANG_NEUTRAL                 0x00
-#define SORT_DEFAULT                    0x0
-#define SORT_JAPANESE_XJIS              0x0
-#define SORT_CHINESE_BIG5               0x0
-#define SORT_CHINESE_PRCP               0x0
-#define SORT_KOREAN_KSC                 0x0
-#define SORT_HUNGARIAN_DEFAULT          0x0
-#define SORT_GEORGIAN_TRADITIONAL       0x0
-#define _USE_DECLSPECS_FOR_SAL          0
-#define SW_SHOWNORMAL                   1
-#define SW_NORMAL                       1
-#define SHOW_OPENWINDOW                 1
-#define SW_PARENTCLOSING                1
-#define VK_LBUTTON                      0x01
-#define WM_CREATE                       0x0001
-#define WA_ACTIVE                       1
-#define PWR_OK                          1
-#define PWR_SUSPENDREQUEST              1
-#define NFR_ANSI                        1
-#define UIS_SET                         1
-#define UISF_HIDEFOCUS                  0x1
-#define XBUTTON1                        0x0001
-#define WMSZ_LEFT                       1
-#define HTCLIENT                        1
-#define SMTO_BLOCK                      0x0001
-#define MA_ACTIVATE                     1
-#define ICON_BIG                        1
-#define SIZE_MINIMIZED                  1
-#define MK_LBUTTON                      0x0001
-#define TME_HOVER                       0x00000001
-#define CS_VREDRAW                      0x0001
-#define CF_TEXT                         1
-#define SCF_ISSECURE                    0x00000001
-#define IDOK                            1
-#define BN_PAINT                        1
-#define BST_CHECKED                     0x0001
-#define TBSTYLE_SEP                     0x0001
-#define TTS_ALWAYSTIP                   0x01
-#define TBS_AUTOTICKS                   0x0001
-#define UDS_WRAP                        0x0001
-#define PBS_SMOOTH                      0x01
-#define LWS_TRANSPARENT                 0x0001
-#define LVS_REPORT                      0x0001
-#define TVS_HASBUTTONS                  0x0001
-#define TCS_SCROLLOPPOSITE              0x0001
-#define ACS_CENTER                      0x0001
-#define MCS_DAYSTATE                    0x0001
-#define DTS_UPDOWN                      0x0001
-#define PGS_HORZ                        0x00000001
-#define NFS_EDIT                        0x0001
-#define BCSIF_GLYPH                     0x0001
-#define BCSS_NOSPLIT                    0x0001
-#define LANG_ARABIC                     0x01
-#define SUBLANG_DEFAULT                 0x01
-#define SUBLANG_AFRIKAANS_SOUTH_AFRICA  0x01
-#define SUBLANG_ALBANIAN_ALBANIA        0x01
-#define SUBLANG_ALSATIAN_FRANCE         0x01
-#define SUBLANG_AMHARIC_ETHIOPIA        0x01
-#define SUBLANG_ARABIC_SAUDI_ARABIA     0x01
-#define SUBLANG_ARMENIAN_ARMENIA        0x01
-#define SUBLANG_ASSAMESE_INDIA          0x01
-#define SUBLANG_AZERI_LATIN             0x01
-#define SUBLANG_BASHKIR_RUSSIA          0x01
-#define SUBLANG_BASQUE_BASQUE           0x01
-#define SUBLANG_BELARUSIAN_BELARUS      0x01
-#define SUBLANG_BENGALI_INDIA           0x01
-#define SUBLANG_BRETON_FRANCE           0x01
-#define SUBLANG_BULGARIAN_BULGARIA      0x01
-#define SUBLANG_CATALAN_CATALAN         0x01
-#define SUBLANG_CHINESE_TRADITIONAL     0x01
-#define SUBLANG_CORSICAN_FRANCE         0x01
-#define SUBLANG_CZECH_CZECH_REPUBLIC    0x01
-#define SUBLANG_CROATIAN_CROATIA        0x01
-#define SUBLANG_DANISH_DENMARK          0x01
-#define SUBLANG_DARI_AFGHANISTAN        0x01
-#define SUBLANG_DIVEHI_MALDIVES         0x01
-#define SUBLANG_DUTCH                   0x01
-#define SUBLANG_ENGLISH_US              0x01
-#define SUBLANG_ESTONIAN_ESTONIA        0x01
-#define SUBLANG_FAEROESE_FAROE_ISLANDS  0x01
-#define SUBLANG_FILIPINO_PHILIPPINES    0x01
-#define SUBLANG_FINNISH_FINLAND         0x01
-#define SUBLANG_FRENCH                  0x01
-#define SUBLANG_FRISIAN_NETHERLANDS     0x01
-#define SUBLANG_GALICIAN_GALICIAN       0x01
-#define SUBLANG_GEORGIAN_GEORGIA        0x01
-#define SUBLANG_GERMAN                  0x01
-#define SUBLANG_GREEK_GREECE            0x01
-#define SUBLANG_GREENLANDIC_GREENLAND   0x01
-#define SUBLANG_GUJARATI_INDIA          0x01
-#define SUBLANG_HAUSA_NIGERIA_LATIN     0x01
-#define SUBLANG_HEBREW_ISRAEL           0x01
-#define SUBLANG_HINDI_INDIA             0x01
-#define SUBLANG_HUNGARIAN_HUNGARY       0x01
-#define SUBLANG_ICELANDIC_ICELAND       0x01
-#define SUBLANG_IGBO_NIGERIA            0x01
-#define SUBLANG_INDONESIAN_INDONESIA    0x01
-#define SUBLANG_INUKTITUT_CANADA        0x01
-#define SUBLANG_ITALIAN                 0x01
-#define SUBLANG_JAPANESE_JAPAN          0x01
-#define SUBLANG_KANNADA_INDIA           0x01
-#define SUBLANG_KAZAK_KAZAKHSTAN        0x01
-#define SUBLANG_KHMER_CAMBODIA          0x01
-#define SUBLANG_KICHE_GUATEMALA         0x01
-#define SUBLANG_KINYARWANDA_RWANDA      0x01
-#define SUBLANG_KONKANI_INDIA           0x01
-#define SUBLANG_KOREAN                  0x01
-#define SUBLANG_KYRGYZ_KYRGYZSTAN       0x01
-#define SUBLANG_LAO_LAO                 0x01
-#define SUBLANG_LATVIAN_LATVIA          0x01
-#define SUBLANG_LITHUANIAN              0x01
-#define SUBLANG_LUXEMBOURGISH_LUXEMBOURG 0x01
-#define SUBLANG_MACEDONIAN_MACEDONIA    0x01
-#define SUBLANG_MALAY_MALAYSIA          0x01
-#define SUBLANG_MALAYALAM_INDIA         0x01
-#define SUBLANG_MALTESE_MALTA           0x01
-#define SUBLANG_MAORI_NEW_ZEALAND       0x01
-#define SUBLANG_MAPUDUNGUN_CHILE        0x01
-#define SUBLANG_MARATHI_INDIA           0x01
-#define SUBLANG_MOHAWK_MOHAWK           0x01
-#define SUBLANG_MONGOLIAN_CYRILLIC_MONGOLIA 0x01
-#define SUBLANG_NEPALI_NEPAL            0x01
-#define SUBLANG_NORWEGIAN_BOKMAL        0x01
-#define SUBLANG_OCCITAN_FRANCE          0x01
-#define SUBLANG_ORIYA_INDIA             0x01
-#define SUBLANG_PASHTO_AFGHANISTAN      0x01
-#define SUBLANG_PERSIAN_IRAN            0x01
-#define SUBLANG_POLISH_POLAND           0x01
-#define SUBLANG_PORTUGUESE_BRAZILIAN    0x01
-#define SUBLANG_PUNJABI_INDIA           0x01
-#define SUBLANG_QUECHUA_BOLIVIA         0x01
-#define SUBLANG_ROMANIAN_ROMANIA        0x01
-#define SUBLANG_ROMANSH_SWITZERLAND     0x01
-#define SUBLANG_RUSSIAN_RUSSIA          0x01
-#define SUBLANG_SAMI_NORTHERN_NORWAY    0x01
-#define SUBLANG_SANSKRIT_INDIA          0x01
-#define SUBLANG_SERBIAN_CROATIA         0x01
-#define SUBLANG_SINDHI_INDIA            0x01
-#define SUBLANG_SINHALESE_SRI_LANKA     0x01
-#define SUBLANG_SOTHO_NORTHERN_SOUTH_AFRICA 0x01
-#define SUBLANG_SLOVAK_SLOVAKIA         0x01
-#define SUBLANG_SLOVENIAN_SLOVENIA      0x01
-#define SUBLANG_SPANISH                 0x01
-#define SUBLANG_SWAHILI_KENYA           0x01
-#define SUBLANG_SWEDISH                 0x01
-#define SUBLANG_SYRIAC_SYRIA            0x01
-#define SUBLANG_TAJIK_TAJIKISTAN        0x01
-#define SUBLANG_TAMIL_INDIA             0x01
-#define SUBLANG_TATAR_RUSSIA            0x01
-#define SUBLANG_TELUGU_INDIA            0x01
-#define SUBLANG_THAI_THAILAND           0x01
-#define SUBLANG_TIBETAN_PRC             0x01
-#define SUBLANG_TSWANA_SOUTH_AFRICA     0x01
-#define SUBLANG_TURKISH_TURKEY          0x01
-#define SUBLANG_TURKMEN_TURKMENISTAN    0x01
-#define SUBLANG_UIGHUR_PRC              0x01
-#define SUBLANG_UKRAINIAN_UKRAINE       0x01
-#define SUBLANG_UPPER_SORBIAN_GERMANY   0x01
-#define SUBLANG_URDU_PAKISTAN           0x01
-#define SUBLANG_UZBEK_LATIN             0x01
-#define SUBLANG_VIETNAMESE_VIETNAM      0x01
-#define SUBLANG_WELSH_UNITED_KINGDOM    0x01
-#define SUBLANG_WOLOF_SENEGAL           0x01
-#define SUBLANG_XHOSA_SOUTH_AFRICA      0x01
-#define SUBLANG_YAKUT_RUSSIA            0x01
-#define SUBLANG_YI_PRC                  0x01
-#define SUBLANG_YORUBA_NIGERIA          0x01
-#define SUBLANG_ZULU_SOUTH_AFRICA       0x01
-#define SORT_INVARIANT_MATH             0x1
-#define SORT_JAPANESE_UNICODE           0x1
-#define SORT_CHINESE_UNICODE            0x1
-#define SORT_KOREAN_UNICODE             0x1
-#define SORT_GERMAN_PHONE_BOOK          0x1
-#define SORT_HUNGARIAN_TECHNICAL        0x1
-#define SORT_GEORGIAN_MODERN            0x1
-#define VS_VERSION_INFO                 1
-#define VFFF_ISSHAREDFILE               0x0001
-#define VFF_CURNEDEST                   0x0001
-#define VIFF_FORCEINSTALL               0x0001
-#define SW_SHOWMINIMIZED                2
-#define SHOW_ICONWINDOW                 2
-#define SW_OTHERZOOM                    2
-#define VK_RBUTTON                      0x02
-#define WM_DESTROY                      0x0002
-#define WA_CLICKACTIVE                  2
-#define PWR_SUSPENDRESUME               2
-#define NFR_UNICODE                     2
-#define UIS_CLEAR                       2
-#define UISF_HIDEACCEL                  0x2
-#define XBUTTON2                        0x0002
-#define WMSZ_RIGHT                      2
-#define HTCAPTION                       2
-#define SMTO_ABORTIFHUNG                0x0002
-#define MA_ACTIVATEANDEAT               2
-#define ICON_SMALL2                     2
-#define SIZE_MAXIMIZED                  2
-#define MK_RBUTTON                      0x0002
-#define TME_LEAVE                       0x00000002
-#define CS_HREDRAW                      0x0002
-#define CF_BITMAP                       2
-#define IDCANCEL                        2
-#define BN_HILITE                       2
-#define BST_INDETERMINATE               0x0002
-#define HDS_BUTTONS                     0x0002
-#define TBSTYLE_CHECK                   0x0002
-#define TTS_NOPREFIX                    0x02
-#define TBS_VERT                        0x0002
-#define UDS_SETBUDDYINT                 0x0002
-#define LWS_IGNORERETURN                0x0002
-#define LVS_SMALLICON                   0x0002
-#define TVS_HASLINES                    0x0002
-#define TVS_EX_MULTISELECT              0x0002
-#define TCS_BOTTOM                      0x0002
-#define TCS_RIGHT                       0x0002
-#define ACS_TRANSPARENT                 0x0002
-#define MCS_MULTISELECT                 0x0002
-#define DTS_SHOWNONE                    0x0002
-#define PGS_AUTOSCROLL                  0x00000002
-#define NFS_STATIC                      0x0002
-#define BCSIF_IMAGE                     0x0002
-#define BCSS_STRETCH                    0x0002
-#define LANG_BULGARIAN                  0x02
-#define SUBLANG_SYS_DEFAULT             0x02
-#define SUBLANG_ARABIC_IRAQ             0x02
-#define SUBLANG_AZERI_CYRILLIC          0x02
-#define SUBLANG_BENGALI_BANGLADESH      0x02
-#define SUBLANG_CHINESE_SIMPLIFIED      0x02
-#define SUBLANG_DUTCH_BELGIAN           0x02
-#define SUBLANG_ENGLISH_UK              0x02
-#define SUBLANG_FRENCH_BELGIAN          0x02
-#define SUBLANG_GERMAN_SWISS            0x02
-#define SUBLANG_INUKTITUT_CANADA_LATIN  0x02
-#define SUBLANG_IRISH_IRELAND           0x02
-#define SUBLANG_ITALIAN_SWISS           0x02
-#define SUBLANG_KASHMIRI_SASIA          0x02
-#define SUBLANG_KASHMIRI_INDIA          0x02
-#define SUBLANG_LOWER_SORBIAN_GERMANY   0x02
-#define SUBLANG_MALAY_BRUNEI_DARUSSALAM 0x02
-#define SUBLANG_MONGOLIAN_PRC           0x02
-#define SUBLANG_NEPALI_INDIA            0x02
-#define SUBLANG_NORWEGIAN_NYNORSK       0x02
-#define SUBLANG_PORTUGUESE              0x02
-#define SUBLANG_QUECHUA_ECUADOR         0x02
-#define SUBLANG_SAMI_NORTHERN_SWEDEN    0x02
-#define SUBLANG_SERBIAN_LATIN           0x02
-#define SUBLANG_SINDHI_PAKISTAN         0x02
-#define SUBLANG_SINDHI_AFGHANISTAN      0x02
-#define SUBLANG_SPANISH_MEXICAN         0x02
-#define SUBLANG_SWEDISH_FINLAND         0x02
-#define SUBLANG_TAMAZIGHT_ALGERIA_LATIN 0x02
-#define SUBLANG_TIGRIGNA_ERITREA        0x02
-#define SUBLANG_URDU_INDIA              0x02
-#define SUBLANG_UZBEK_CYRILLIC          0x02
-#define SORT_CHINESE_PRC                0x2
-#define VFF_FILEINUSE                   0x0002
-#define VIFF_DONTDELETEOLD              0x0002
-#define SW_SHOWMAXIMIZED                3
-#define SW_MAXIMIZE                     3
-#define SHOW_FULLSCREEN                 3
-#define SW_PARENTOPENING                3
-#define VK_CANCEL                       0x03
-#define WM_MOVE                         0x0003
-#define PWR_CRITICALRESUME              3
-#define NF_QUERY                        3
-#define UIS_INITIALIZE                  3
-#define WMSZ_TOP                        3
-#define HTSYSMENU                       3
-#define MA_NOACTIVATE                   3
-#define SIZE_MAXSHOW                    3
-#define CF_METAFILEPICT                 3
-#define IDABORT                         3
-#define BN_UNHILITE                     3
-#define LVS_LIST                        0x0003
-#define LVS_TYPEMASK                    0x0003
-#define LANG_CATALAN                    0x03
-#define SUBLANG_CUSTOM_DEFAULT          0x03
-#define SUBLANG_ARABIC_EGYPT            0x03
-#define SUBLANG_CHINESE_HONGKONG        0x03
-#define SUBLANG_ENGLISH_AUS             0x03
-#define SUBLANG_FRENCH_CANADIAN         0x03
-#define SUBLANG_GERMAN_AUSTRIAN         0x03
-#define SUBLANG_QUECHUA_PERU            0x03
-#define SUBLANG_SAMI_NORTHERN_FINLAND   0x03
-#define SUBLANG_SERBIAN_CYRILLIC        0x03
-#define SUBLANG_SPANISH_MODERN          0x03
-#define SORT_CHINESE_BOPOMOFO           0x3
-#define SW_SHOWNOACTIVATE               4
-#define SHOW_OPENNOACTIVATE             4
-#define SW_OTHERUNZOOM                  4
-#define VK_MBUTTON                      0x04
-#define NF_REQUERY                      4
-#define UISF_ACTIVE                     0x4
-#define WMSZ_TOPLEFT                    4
-#define HTGROWBOX                       4
-#define MA_NOACTIVATEANDEAT             4
-#define SIZE_MAXHIDE                    4
-#define MK_SHIFT                        0x0004
-#define CF_SYLK                         4
-#define IDRETRY                         4
-#define BN_DISABLE                      4
-#define BST_PUSHED                      0x0004
-#define HDS_HOTTRACK                    0x0004
-#define TBSTYLE_GROUP                   0x0004
-#define TBS_TOP                         0x0004
-#define TBS_LEFT                        0x0004
-#define UDS_ALIGNRIGHT                  0x0004
-#define PBS_VERTICAL                    0x04
-#define LWS_NOPREFIX                    0x0004
-#define LVS_SINGLESEL                   0x0004
-#define TVS_LINESATROOT                 0x0004
-#define TVS_EX_DOUBLEBUFFER             0x0004
-#define TCS_MULTISELECT                 0x0004
-#define ACS_AUTOPLAY                    0x0004
-#define MCS_WEEKNUMBERS                 0x0004
-#define DTS_LONGDATEFORMAT              0x0004
-#define PGS_DRAGNDROP                   0x00000004
-#define NFS_LISTCOMBO                   0x0004
-#define BCSIF_STYLE                     0x0004
-#define BCSS_ALIGNLEFT                  0x0004
-#define LANG_CHINESE                    0x04
-#define LANG_CHINESE_SIMPLIFIED         0x04
-#define SUBLANG_CUSTOM_UNSPECIFIED      0x04
-#define SUBLANG_ARABIC_LIBYA            0x04
-#define SUBLANG_CHINESE_SINGAPORE       0x04
-#define SUBLANG_CROATIAN_BOSNIA_HERZEGOVINA_LATIN 0x04
-#define SUBLANG_ENGLISH_CAN             0x04
-#define SUBLANG_FRENCH_SWISS            0x04
-#define SUBLANG_GERMAN_LUXEMBOURG       0x04
-#define SUBLANG_SAMI_LULE_NORWAY        0x04
-#define SUBLANG_SPANISH_GUATEMALA       0x04
-#define SORT_JAPANESE_RADICALSTROKE     0x4
-#define VFF_BUFFTOOSMALL                0x0004
-#define SW_SHOW                         5
-#define VK_XBUTTON1                     0x05
-#define WM_SIZE                         0x0005
-#define WMSZ_TOPRIGHT                   5
-#define HTMENU                          5
-#define CF_DIF                          5
-#define IDIGNORE                        5
-#define BN_DOUBLECLICKED                5
-#define LANG_CZECH                      0x05
-#define SUBLANG_UI_CUSTOM_DEFAULT       0x05
-#define SUBLANG_ARABIC_ALGERIA          0x05
-#define SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_LATIN 0x05
-#define SUBLANG_CHINESE_MACAU           0x05
-#define SUBLANG_ENGLISH_NZ              0x05
-#define SUBLANG_FRENCH_LUXEMBOURG       0x05
-#define SUBLANG_GERMAN_LIECHTENSTEIN    0x05
-#define SUBLANG_SAMI_LULE_SWEDEN        0x05
-#define SUBLANG_SPANISH_COSTA_RICA      0x05
-#define SW_MINIMIZE                     6
-#define VK_XBUTTON2                     0x06
-#define WM_ACTIVATE                     0x0006
-#define WMSZ_BOTTOM                     6
-#define HTHSCROLL                       6
-#define CF_TIFF                         6
-#define IDYES                           6
-#define BN_SETFOCUS                     6
-#define LANG_DANISH                     0x06
-#define SUBLANG_ARABIC_MOROCCO          0x06
-#define SUBLANG_ENGLISH_EIRE            0x06
-#define SUBLANG_FRENCH_MONACO           0x06
-#define SUBLANG_SAMI_SOUTHERN_NORWAY    0x06
-#define SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_LATIN 0x06
-#define SUBLANG_SPANISH_PANAMA          0x06
-#define SW_SHOWMINNOACTIVE              7
-#define WM_SETFOCUS                     0x0007
-#define WMSZ_BOTTOMLEFT                 7
-#define HTVSCROLL                       7
-#define CF_OEMTEXT                      7
-#define IDNO                            7
-#define BN_KILLFOCUS                    7
-#define LANG_GERMAN                     0x07
-#define SUBLANG_ARABIC_TUNISIA          0x07
-#define SUBLANG_ENGLISH_SOUTH_AFRICA    0x07
-#define SUBLANG_SAMI_SOUTHERN_SWEDEN    0x07
-#define SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_CYRILLIC 0x07
-#define SUBLANG_SPANISH_DOMINICAN_REPUBLIC 0x07
-#define SW_SHOWNA                       8
-#define VK_BACK                         0x08
-#define WM_KILLFOCUS                    0x0008
-#define WMSZ_BOTTOMRIGHT                8
-#define HTMINBUTTON                     8
-#define SMTO_NOTIMEOUTIFNOTHUNG         0x0008
-#define MK_CONTROL                      0x0008
-#define CS_DBLCLKS                      0x0008
-#define CF_DIB                          8
-#define IDCLOSE                         8
-#define BST_FOCUS                       0x0008
-#define HDS_HIDDEN                      0x0008
-#define TBSTYLE_DROPDOWN                0x0008
-#define TBS_BOTH                        0x0008
-#define UDS_ALIGNLEFT                   0x0008
-#define PBS_MARQUEE                     0x08
-#define LWS_USEVISUALSTYLE              0x0008
-#define LVS_SHOWSELALWAYS               0x0008
-#define TVS_EDITLABELS                  0x0008
-#define TVS_EX_NOINDENTSTATE            0x0008
-#define TCS_FLATBUTTONS                 0x0008
-#define ACS_TIMER                       0x0008
-#define MCS_NOTODAYCIRCLE               0x0008
-#define NFS_BUTTON                      0x0008
-#define BCSIF_SIZE                      0x0008
-#define BCSS_IMAGE                      0x0008
-#define LANG_GREEK                      0x08
-#define SUBLANG_ARABIC_OMAN             0x08
-#define SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_CYRILLIC 0x08
-#define SUBLANG_ENGLISH_JAMAICA         0x08
-#define SUBLANG_SAMI_SKOLT_FINLAND      0x08
-#define SUBLANG_SPANISH_VENEZUELA       0x08
-#define SW_RESTORE                      9
-#define VK_TAB                          0x09
-#define HTMAXBUTTON                     9
-#define CF_PALETTE                      9
-#define IDHELP                          9
-#define DTS_TIMEFORMAT                  0x0009
-#define LANG_ENGLISH                    0x09
-#define SUBLANG_ARABIC_YEMEN            0x09
-#define SUBLANG_ENGLISH_CARIBBEAN       0x09
-#define SUBLANG_SAMI_INARI_FINLAND      0x09
-#define SUBLANG_SPANISH_COLOMBIA        0x09
-#define SW_SHOWDEFAULT                  10
-#define WM_ENABLE                       0x000A
-#define HTLEFT                          10
-#define CF_PENDATA                      10
-#define IDTRYAGAIN                      10
-#define HELP_CONTEXTMENU                0x000a
-#define LANG_SPANISH                    0x0a
-#define SUBLANG_ARABIC_SYRIA            0x0a
-#define SUBLANG_ENGLISH_BELIZE          0x0a
-#define SUBLANG_SPANISH_PERU            0x0a
-#define SW_FORCEMINIMIZE                11
-#define SW_MAX                          11
-#define WM_SETREDRAW                    0x000B
-#define HTRIGHT                         11
-#define CF_RIFF                         11
-#define IDCONTINUE                      11
-#define HELP_FINDER                     0x000b
-#define LANG_FINNISH                    0x0b
-#define SUBLANG_ARABIC_JORDAN           0x0b
-#define SUBLANG_ENGLISH_TRINIDAD        0x0b
-#define SUBLANG_SPANISH_ARGENTINA       0x0b
-#define VK_CLEAR                        0x0C
-#define WM_SETTEXT                      0x000C
-#define HTTOP                           12
-#define CF_WAVE                         12
-#define HELP_WM_HELP                    0x000c
-#define DTS_SHORTDATECENTURYFORMAT      0x000C
-#define LANG_FRENCH                     0x0c
-#define SUBLANG_ARABIC_LEBANON          0x0c
-#define SUBLANG_ENGLISH_ZIMBABWE        0x0c
-#define SUBLANG_SPANISH_ECUADOR         0x0c
-#define VK_RETURN                       0x0D
-#define WM_GETTEXT                      0x000D
-#define HTTOPLEFT                       13
-#define CF_UNICODETEXT                  13
-#define HELP_SETPOPUP_POS               0x000d
-#define LANG_HEBREW                     0x0d
-#define SUBLANG_ARABIC_KUWAIT           0x0d
-#define SUBLANG_ENGLISH_PHILIPPINES     0x0d
-#define SUBLANG_SPANISH_CHILE           0x0d
-#define WM_GETTEXTLENGTH                0x000E
-#define HTTOPRIGHT                      14
-#define CF_ENHMETAFILE                  14
-#define LANG_HUNGARIAN                  0x0e
-#define SUBLANG_ARABIC_UAE              0x0e
-#define SUBLANG_SPANISH_URUGUAY         0x0e
-#define WM_PAINT                        0x000F
-#define HTBOTTOM                        15
-#define CF_HDROP                        15
-#define LANG_ICELANDIC                  0x0f
-#define SUBLANG_ARABIC_BAHRAIN          0x0f
-#define SUBLANG_SPANISH_PARAGUAY        0x0f
-#define VK_SHIFT                        0x10
-#define WM_CLOSE                        0x0010
-#define HTBOTTOMLEFT                    16
-#define WVR_ALIGNTOP                    0x0010
-#define MK_MBUTTON                      0x0010
-#define TME_NONCLIENT                   0x00000010
-#define CF_LOCALE                       16
-#define HELP_TCARD_DATA                 0x0010
-#define TBSTYLE_AUTOSIZE                0x0010
-#define TTS_NOANIMATE                   0x10
-#define TBS_NOTICKS                     0x0010
-#define UDS_AUTOBUDDY                   0x0010
-#define PBS_SMOOTHREVERSE               0x10
-#define LWS_USECUSTOMTEXT               0x0010
-#define LVS_SORTASCENDING               0x0010
-#define TVS_DISABLEDRAGDROP             0x0010
-#define TVS_EX_RICHTOOLTIP              0x0010
-#define TCS_FORCEICONLEFT               0x0010
-#define MCS_NOTODAY                     0x0010
-#define DTS_APPCANPARSE                 0x0010
-#define NFS_ALL                         0x0010
-#define LANG_ITALIAN                    0x10
-#define SUBLANG_ARABIC_QATAR            0x10
-#define SUBLANG_ENGLISH_INDIA           0x10
-#define SUBLANG_SPANISH_BOLIVIA         0x10
-#define VK_CONTROL                      0x11
-#define WM_QUERYENDSESSION              0x0011
-#define HTBOTTOMRIGHT                   17
-#define CF_DIBV5                        17
-#define HELP_TCARD_OTHER_CALLER         0x0011
-#define LANG_JAPANESE                   0x11
-#define SUBLANG_ENGLISH_MALAYSIA        0x11
-#define SUBLANG_SPANISH_EL_SALVADOR     0x11
-#define VK_MENU                         0x12
-#define WM_QUIT                         0x0012
-#define HTBORDER                        18
-#define CF_MAX                          18
-#define LANG_KOREAN                     0x12
-#define SUBLANG_ENGLISH_SINGAPORE       0x12
-#define SUBLANG_SPANISH_HONDURAS        0x12
-#define VK_PAUSE                        0x13
-#define WM_QUERYOPEN                    0x0013
-#define HTOBJECT                        19
-#define LANG_DUTCH                      0x13
-#define SUBLANG_SPANISH_NICARAGUA       0x13
-#define VK_CAPITAL                      0x14
-#define WM_ERASEBKGND                   0x0014
-#define HTCLOSE                         20
-#define LANG_NORWEGIAN                  0x14
-#define SUBLANG_SPANISH_PUERTO_RICO     0x14
-#define VK_KANA                         0x15
-#define VK_HANGEUL                      0x15
-#define VK_HANGUL                       0x15
-#define WM_SYSCOLORCHANGE               0x0015
-#define HTHELP                          21
-#define LANG_POLISH                     0x15
-#define SUBLANG_SPANISH_US              0x15
-#define WM_ENDSESSION                   0x0016
-#define LANG_PORTUGUESE                 0x16
-#define VK_JUNJA                        0x17
-#define LANG_ROMANSH                    0x17
-#define VK_FINAL                        0x18
-#define WM_SHOWWINDOW                   0x0018
-#define LANG_ROMANIAN                   0x18
-#define VK_HANJA                        0x19
-#define VK_KANJI                        0x19
-#define LANG_RUSSIAN                    0x19
-#define WM_WININICHANGE                 0x001A
-#define LANG_BOSNIAN                    0x1a
-#define LANG_CROATIAN                   0x1a
-#define LANG_SERBIAN                    0x1a
-#define VK_ESCAPE                       0x1B
-#define WM_DEVMODECHANGE                0x001B
-#define LANG_SLOVAK                     0x1b
-#define VK_CONVERT                      0x1C
-#define WM_ACTIVATEAPP                  0x001C
-#define LANG_ALBANIAN                   0x1c
-#define VK_NONCONVERT                   0x1D
-#define WM_FONTCHANGE                   0x001D
-#define LANG_SWEDISH                    0x1d
-#define VK_ACCEPT                       0x1E
-#define WM_TIMECHANGE                   0x001E
-#define LANG_THAI                       0x1e
-#define VK_MODECHANGE                   0x1F
-#define WM_CANCELMODE                   0x001F
-#define LANG_TURKISH                    0x1f
-#define VK_SPACE                        0x20
-#define WM_SETCURSOR                    0x0020
-#define SMTO_ERRORONEXIT                0x0020
-#define WVR_ALIGNLEFT                   0x0020
-#define MK_XBUTTON1                     0x0020
-#define CS_OWNDC                        0x0020
-#define TBSTYLE_NOPREFIX                0x0020
-#define TTS_NOFADE                      0x20
-#define TBS_ENABLESELRANGE              0x0020
-#define UDS_ARROWKEYS                   0x0020
-#define LWS_RIGHT                       0x0020
-#define LVS_SORTDESCENDING              0x0020
-#define TVS_SHOWSELALWAYS               0x0020
-#define TVS_EX_AUTOHSCROLL              0x0020
-#define TCS_FORCELABELLEFT              0x0020
-#define DTS_RIGHTALIGN                  0x0020
-#define NFS_USEFONTASSOC                0x0020
-#define LANG_URDU                       0x20
-#define VK_PRIOR                        0x21
-#define WM_MOUSEACTIVATE                0x0021
-#define LANG_INDONESIAN                 0x21
-#define VK_NEXT                         0x22
-#define WM_CHILDACTIVATE                0x0022
-#define LANG_UKRAINIAN                  0x22
-#define VK_END                          0x23
-#define WM_QUEUESYNC                    0x0023
-#define LANG_BELARUSIAN                 0x23
-#define VK_HOME                         0x24
-#define WM_GETMINMAXINFO                0x0024
-#define LANG_SLOVENIAN                  0x24
-#define VK_LEFT                         0x25
-#define LANG_ESTONIAN                   0x25
-#define VK_UP                           0x26
-#define WM_PAINTICON                    0x0026
-#define LANG_LATVIAN                    0x26
-#define VK_RIGHT                        0x27
-#define WM_ICONERASEBKGND               0x0027
-#define LANG_LITHUANIAN                 0x27
-#define VK_DOWN                         0x28
-#define WM_NEXTDLGCTL                   0x0028
-#define LANG_TAJIK                      0x28
-#define VK_SELECT                       0x29
-#define LANG_FARSI                      0x29
-#define LANG_PERSIAN                    0x29
-#define VK_PRINT                        0x2A
-#define WM_SPOOLERSTATUS                0x002A
-#define LANG_VIETNAMESE                 0x2a
-#define VK_EXECUTE                      0x2B
-#define WM_DRAWITEM                     0x002B
-#define LANG_ARMENIAN                   0x2b
-#define VK_SNAPSHOT                     0x2C
-#define WM_MEASUREITEM                  0x002C
-#define LANG_AZERI                      0x2c
-#define VK_INSERT                       0x2D
-#define WM_DELETEITEM                   0x002D
-#define LANG_BASQUE                     0x2d
-#define VK_DELETE                       0x2E
-#define WM_VKEYTOITEM                   0x002E
-#define LANG_LOWER_SORBIAN              0x2e
-#define LANG_UPPER_SORBIAN              0x2e
-#define VK_HELP                         0x2F
-#define WM_CHARTOITEM                   0x002F
-#define LANG_MACEDONIAN                 0x2f
-#define WM_SETFONT                      0x0030
-#define WM_GETFONT                      0x0031
-#define WM_SETHOTKEY                    0x0032
-#define LANG_TSWANA                     0x32
-#define WM_GETHOTKEY                    0x0033
-#define LANG_XHOSA                      0x34
-#define LANG_ZULU                       0x35
-#define LANG_AFRIKAANS                  0x36
-#define WM_QUERYDRAGICON                0x0037
-#define LANG_GEORGIAN                   0x37
-#define LANG_FAEROESE                   0x38
-#define WM_COMPAREITEM                  0x0039
-#define LANG_HINDI                      0x39
-#define LANG_MALTESE                    0x3a
-#define LANG_SAMI                       0x3b
-#define LANG_IRISH                      0x3c
-#define WM_GETOBJECT                    0x003D
-#define LANG_MALAY                      0x3e
-#define LANG_KAZAK                      0x3f
-#define WVR_ALIGNBOTTOM                 0x0040
-#define MK_XBUTTON2                     0x0040
-#define CS_CLASSDC                      0x0040
-#define HDS_DRAGDROP                    0x0040
-#define BTNS_SHOWTEXT                   0x0040
-#define TTS_BALLOON                     0x40
-#define TBS_FIXEDLENGTH                 0x0040
-#define UDS_HORZ                        0x0040
-#define LVS_SHAREIMAGELISTS             0x0040
-#define TVS_RTLREADING                  0x0040
-#define TVS_EX_FADEINOUTEXPANDOS        0x0040
-#define TCS_HOTTRACK                    0x0040
-#define MCS_NOTRAILINGDATES             0x0040
-#define LANG_KYRGYZ                     0x40
-#define WM_COMPACTING                   0x0041
-#define LANG_SWAHILI                    0x41
-#define LANG_TURKMEN                    0x42
-#define LANG_UZBEK                      0x43
-#define WM_COMMNOTIFY                   0x0044
-#define LANG_TATAR                      0x44
-#define LANG_BENGALI                    0x45
-#define WM_WINDOWPOSCHANGING            0x0046
-#define LANG_PUNJABI                    0x46
-#define WM_WINDOWPOSCHANGED             0x0047
-#define LANG_GUJARATI                   0x47
-#define WM_POWER                        0x0048
-#define LANG_ORIYA                      0x48
-#define LANG_TAMIL                      0x49
-#define WM_COPYDATA                     0x004A
-#define LANG_TELUGU                     0x4a
-#define WM_CANCELJOURNAL                0x004B
-#define LANG_KANNADA                    0x4b
-#define LANG_MALAYALAM                  0x4c
-#define LANG_ASSAMESE                   0x4d
-#define WM_NOTIFY                       0x004E
-#define LANG_MARATHI                    0x4e
-#define LANG_SANSKRIT                   0x4f
-#define WM_INPUTLANGCHANGEREQUEST       0x0050
-#define LANG_MONGOLIAN                  0x50
-#define WM_INPUTLANGCHANGE              0x0051
-#define LANG_TIBETAN                    0x51
-#define WM_TCARD                        0x0052
-#define LANG_WELSH                      0x52
-#define WM_HELP                         0x0053
-#define LANG_KHMER                      0x53
-#define WM_USERCHANGED                  0x0054
-#define LANG_LAO                        0x54
-#define WM_NOTIFYFORMAT                 0x0055
-#define LANG_GALICIAN                   0x56
-#define LANG_KONKANI                    0x57
-#define LANG_MANIPURI                   0x58
-#define LANG_SINDHI                     0x59
-#define LANG_SYRIAC                     0x5a
-#define VK_LWIN                         0x5B
-#define LANG_SINHALESE                  0x5b
-#define VK_RWIN                         0x5C
-#define VK_APPS                         0x5D
-#define LANG_INUKTITUT                  0x5d
-#define LANG_AMHARIC                    0x5e
-#define VK_SLEEP                        0x5F
-#define LANG_TAMAZIGHT                  0x5f
-#define VK_NUMPAD0                      0x60
-#define LANG_KASHMIRI                   0x60
-#define VK_NUMPAD1                      0x61
-#define LANG_NEPALI                     0x61
-#define VK_NUMPAD2                      0x62
-#define LANG_FRISIAN                    0x62
-#define VK_NUMPAD3                      0x63
-#define LANG_PASHTO                     0x63
-#define VK_NUMPAD4                      0x64
-#define LANG_FILIPINO                   0x64
-#define VS_USER_DEFINED                 100
-#define VK_NUMPAD5                      0x65
-#define LANG_DIVEHI                     0x65
-#define VK_NUMPAD6                      0x66
-#define VK_NUMPAD7                      0x67
-#define VK_NUMPAD8                      0x68
-#define LANG_HAUSA                      0x68
-#define VK_NUMPAD9                      0x69
-#define VK_MULTIPLY                     0x6A
-#define LANG_YORUBA                     0x6a
-#define VK_ADD                          0x6B
-#define LANG_QUECHUA                    0x6b
-#define VK_SEPARATOR                    0x6C
-#define LANG_SOTHO                      0x6c
-#define VK_SUBTRACT                     0x6D
-#define LANG_BASHKIR                    0x6d
-#define VK_DECIMAL                      0x6E
-#define LANG_LUXEMBOURGISH              0x6e
-#define VK_DIVIDE                       0x6F
-#define LANG_GREENLANDIC                0x6f
-#define VK_F1                           0x70
-#define LANG_IGBO                       0x70
-#define VK_F2                           0x71
-#define VK_F3                           0x72
-#define VK_F4                           0x73
-#define LANG_TIGRIGNA                   0x73
-#define VK_F5                           0x74
-#define VK_F6                           0x75
-#define VK_F7                           0x76
-#define VK_F8                           0x77
-#define VK_F9                           0x78
-#define WHEEL_DELTA                     120
-#define LANG_YI                         0x78
-#define VK_F10                          0x79
-#define VK_F11                          0x7A
-#define LANG_MAPUDUNGUN                 0x7a
-#define VK_F12                          0x7B
-#define WM_CONTEXTMENU                  0x007B
-#define VK_F13                          0x7C
-#define WM_STYLECHANGING                0x007C
-#define LANG_MOHAWK                     0x7c
-#define VK_F14                          0x7D
-#define WM_STYLECHANGED                 0x007D
-#define VK_F15                          0x7E
-#define WM_DISPLAYCHANGE                0x007E
-#define LANG_BRETON                     0x7e
-#define VK_F16                          0x7F
-#define WM_GETICON                      0x007F
-#define LANG_INVARIANT                  0x7f
-#define VK_F17                          0x80
-#define WM_SETICON                      0x0080
-#define WVR_ALIGNRIGHT                  0x0080
-#define CS_PARENTDC                     0x0080
-#define CF_OWNERDISPLAY                 0x0080
-#define HDS_FULLDRAG                    0x0080
-#define BTNS_WHOLEDROPDOWN              0x0080
-#define TTS_CLOSE                       0x80
-#define TBS_NOTHUMB                     0x0080
-#define UDS_NOTHOUSANDS                 0x0080
-#define LVS_NOLABELWRAP                 0x0080
-#define TVS_NOTOOLTIPS                  0x0080
-#define TVS_EX_PARTIALCHECKBOXES        0x0080
-#define TCS_VERTICAL                    0x0080
-#define MCS_SHORTDAYSOFWEEK             0x0080
-#define LANG_UIGHUR                     0x80
-#define VK_F18                          0x81
-#define WM_NCCREATE                     0x0081
-#define CF_DSPTEXT                      0x0081
-#define LANG_MAORI                      0x81
-#define VK_F19                          0x82
-#define WM_NCDESTROY                    0x0082
-#define CF_DSPBITMAP                    0x0082
-#define LANG_OCCITAN                    0x82
-#define VK_F20                          0x83
-#define WM_NCCALCSIZE                   0x0083
-#define CF_DSPMETAFILEPICT              0x0083
-#define LANG_CORSICAN                   0x83
-#define VK_F21                          0x84
-#define WM_NCHITTEST                    0x0084
-#define LANG_ALSATIAN                   0x84
-#define VK_F22                          0x85
-#define WM_NCPAINT                      0x0085
-#define LANG_YAKUT                      0x85
-#define VK_F23                          0x86
-#define WM_NCACTIVATE                   0x0086
-#define LANG_KICHE                      0x86
-#define VK_F24                          0x87
-#define WM_GETDLGCODE                   0x0087
-#define LANG_KINYARWANDA                0x87
-#define WM_SYNCPAINT                    0x0088
-#define LANG_WOLOF                      0x88
-#define LANG_DARI                       0x8c
-#define CF_DSPENHMETAFILE               0x008E
-#define VK_NUMLOCK                      0x90
-#define VK_SCROLL                       0x91
-#define VK_OEM_NEC_EQUAL                0x92
-#define VK_OEM_FJ_JISHO                 0x92
-#define VK_OEM_FJ_MASSHOU               0x93
-#define VK_OEM_FJ_TOUROKU               0x94
-#define VK_OEM_FJ_LOYA                  0x95
-#define VK_OEM_FJ_ROYA                  0x96
-#define VK_LSHIFT                       0xA0
-#define WM_NCMOUSEMOVE                  0x00A0
-#define VK_RSHIFT                       0xA1
-#define WM_NCLBUTTONDOWN                0x00A1
-#define VK_LCONTROL                     0xA2
-#define WM_NCLBUTTONUP                  0x00A2
-#define VK_RCONTROL                     0xA3
-#define WM_NCLBUTTONDBLCLK              0x00A3
-#define VK_LMENU                        0xA4
-#define WM_NCRBUTTONDOWN                0x00A4
-#define VK_RMENU                        0xA5
-#define WM_NCRBUTTONUP                  0x00A5
-#define VK_BROWSER_BACK                 0xA6
-#define WM_NCRBUTTONDBLCLK              0x00A6
-#define VK_BROWSER_FORWARD              0xA7
-#define WM_NCMBUTTONDOWN                0x00A7
-#define VK_BROWSER_REFRESH              0xA8
-#define WM_NCMBUTTONUP                  0x00A8
-#define VK_BROWSER_STOP                 0xA9
-#define WM_NCMBUTTONDBLCLK              0x00A9
-#define VK_BROWSER_SEARCH               0xAA
-#define VK_BROWSER_FAVORITES            0xAB
-#define WM_NCXBUTTONDOWN                0x00AB
-#define VK_BROWSER_HOME                 0xAC
-#define WM_NCXBUTTONUP                  0x00AC
-#define VK_VOLUME_MUTE                  0xAD
-#define WM_NCXBUTTONDBLCLK              0x00AD
-#define VK_VOLUME_DOWN                  0xAE
-#define VK_VOLUME_UP                    0xAF
-#define VK_MEDIA_NEXT_TRACK             0xB0
-#define EM_GETSEL                       0x00B0
-#define VK_MEDIA_PREV_TRACK             0xB1
-#define EM_SETSEL                       0x00B1
-#define VK_MEDIA_STOP                   0xB2
-#define EM_GETRECT                      0x00B2
-#define VK_MEDIA_PLAY_PAUSE             0xB3
-#define EM_SETRECT                      0x00B3
-#define VK_LAUNCH_MAIL                  0xB4
-#define EM_SETRECTNP                    0x00B4
-#define VK_LAUNCH_MEDIA_SELECT          0xB5
-#define EM_SCROLL                       0x00B5
-#define VK_LAUNCH_APP1                  0xB6
-#define EM_LINESCROLL                   0x00B6
-#define VK_LAUNCH_APP2                  0xB7
-#define EM_SCROLLCARET                  0x00B7
-#define EM_GETMODIFY                    0x00B8
-#define EM_SETMODIFY                    0x00B9
-#define VK_OEM_1                        0xBA
-#define EM_GETLINECOUNT                 0x00BA
-#define VK_OEM_PLUS                     0xBB
-#define EM_LINEINDEX                    0x00BB
-#define VK_OEM_COMMA                    0xBC
-#define EM_SETHANDLE                    0x00BC
-#define VK_OEM_MINUS                    0xBD
-#define EM_GETHANDLE                    0x00BD
-#define VK_OEM_PERIOD                   0xBE
-#define EM_GETTHUMB                     0x00BE
-#define VK_OEM_2                        0xBF
-#define VK_OEM_3                        0xC0
-#define EM_LINELENGTH                   0x00C1
-#define EM_REPLACESEL                   0x00C2
-#define EM_GETLINE                      0x00C4
-#define EM_LIMITTEXT                    0x00C5
-#define EM_CANUNDO                      0x00C6
-#define EM_UNDO                         0x00C7
-#define EM_FMTLINES                     0x00C8
-#define DLG_MAIN                        200
-#define EM_LINEFROMCHAR                 0x00C9
-#define EM_SETTABSTOPS                  0x00CB
-#define EM_SETPASSWORDCHAR              0x00CC
-#define EM_EMPTYUNDOBUFFER              0x00CD
-#define EM_GETFIRSTVISIBLELINE          0x00CE
-#define EM_SETREADONLY                  0x00CF
-#define EM_SETWORDBREAKPROC             0x00D0
-#define EM_GETWORDBREAKPROC             0x00D1
-#define EM_GETPASSWORDCHAR              0x00D2
-#define EM_SETMARGINS                   0x00D3
-#define EM_GETMARGINS                   0x00D4
-#define EM_GETLIMITTEXT                 0x00D5
-#define EM_POSFROMCHAR                  0x00D6
-#define EM_CHARFROMPOS                  0x00D7
-#define EM_SETIMESTATUS                 0x00D8
-#define EM_GETIMESTATUS                 0x00D9
-#define VK_OEM_4                        0xDB
-#define VK_OEM_5                        0xDC
-#define VK_OEM_6                        0xDD
-#define VK_OEM_7                        0xDE
-#define VK_OEM_8                        0xDF
-#define VK_OEM_AX                       0xE1
-#define VK_OEM_102                      0xE2
-#define VK_ICO_HELP                     0xE3
-#define VK_ICO_00                       0xE4
-#define VK_PROCESSKEY                   0xE5
-#define VK_ICO_CLEAR                    0xE6
-#define VK_PACKET                       0xE7
-#define VK_OEM_RESET                    0xE9
-#define VK_OEM_JUMP                     0xEA
-#define VK_OEM_PA1                      0xEB
-#define VK_OEM_PA2                      0xEC
-#define VK_OEM_PA3                      0xED
-#define VK_OEM_WSCTRL                   0xEE
-#define VK_OEM_CUSEL                    0xEF
-#define VK_OEM_ATTN                     0xF0
-#define BM_GETCHECK                     0x00F0
-#define VK_OEM_FINISH                   0xF1
-#define BM_SETCHECK                     0x00F1
-#define VK_OEM_COPY                     0xF2
-#define BM_GETSTATE                     0x00F2
-#define VK_OEM_AUTO                     0xF3
-#define BM_SETSTATE                     0x00F3
-#define VK_OEM_ENLW                     0xF4
-#define BM_SETSTYLE                     0x00F4
-#define VK_OEM_BACKTAB                  0xF5
-#define BM_CLICK                        0x00F5
-#define VK_ATTN                         0xF6
-#define BM_GETIMAGE                     0x00F6
-#define VK_CRSEL                        0xF7
-#define BM_SETIMAGE                     0x00F7
-#define VK_EXSEL                        0xF8
-#define BM_SETDONTCLICK                 0x00F8
-#define VK_EREOF                        0xF9
-#define VK_PLAY                         0xFA
-#define VK_ZOOM                         0xFB
-#define VK_NONAME                       0xFC
-#define VK_PA1                          0xFD
-#define VK_OEM_CLEAR                    0xFE
-#define WM_INPUT_DEVICE_CHANGE          0x00FE
-#define SUBVERSION_MASK                 0x000000FF
-#define WM_INPUT                        0x00FF
-#define WM_KEYFIRST                     0x0100
-#define WM_KEYDOWN                      0x0100
-#define WVR_HREDRAW                     0x0100
-#define HDS_FILTERBAR                   0x0100
-#define TBSTYLE_TOOLTIPS                0x0100
-#define RBS_TOOLTIPS                    0x00000100
-#define TTS_USEVISUALSTYLE              0x100
-#define SBARS_SIZEGRIP                  0x0100
-#define TBS_TOOLTIPS                    0x0100
-#define UDS_HOTTRACK                    0x0100
-#define LVS_AUTOARRANGE                 0x0100
-#define TVS_CHECKBOXES                  0x0100
-#define TVS_EX_EXCLUSIONCHECKBOXES      0x0100
-#define TCS_BUTTONS                     0x0100
-#define MCS_NOSELCHANGEONNAV            0x0100
-#define WM_KEYUP                        0x0101
-#define WM_CHAR                         0x0102
-#define WM_DEADCHAR                     0x0103
-#define WM_SYSKEYDOWN                   0x0104
-#define WM_SYSKEYUP                     0x0105
-#define WM_SYSCHAR                      0x0106
-#define WM_SYSDEADCHAR                  0x0107
-#define WM_UNICHAR                      0x0109
-#define WM_IME_STARTCOMPOSITION         0x010D
-#define WM_IME_ENDCOMPOSITION           0x010E
-#define WM_IME_COMPOSITION              0x010F
-#define WM_IME_KEYLAST                  0x010F
-#define WM_INITDIALOG                   0x0110
-#define WM_COMMAND                      0x0111
-#define WM_SYSCOMMAND                   0x0112
-#define WM_TIMER                        0x0113
-#define WM_HSCROLL                      0x0114
-#define WM_VSCROLL                      0x0115
-#define WM_INITMENU                     0x0116
-#define WM_INITMENUPOPUP                0x0117
-#define WM_MENUSELECT                   0x011F
-#define WM_MENUCHAR                     0x0120
-#define WM_ENTERIDLE                    0x0121
-#define WM_MENURBUTTONUP                0x0122
-#define WM_MENUDRAG                     0x0123
-#define WM_MENUGETOBJECT                0x0124
-#define WM_UNINITMENUPOPUP              0x0125
-#define WM_MENUCOMMAND                  0x0126
-#define WM_CHANGEUISTATE                0x0127
-#define WM_UPDATEUISTATE                0x0128
-#define WM_QUERYUISTATE                 0x0129
-#define DLG_ICON                        300
-#define WM_CTLCOLORMSGBOX               0x0132
-#define WM_CTLCOLOREDIT                 0x0133
-#define WM_CTLCOLORLISTBOX              0x0134
-#define WM_CTLCOLORBTN                  0x0135
-#define WM_CTLCOLORDLG                  0x0136
-#define WM_CTLCOLORSCROLLBAR            0x0137
-#define WM_CTLCOLORSTATIC               0x0138
-#define MN_GETHMENU                     0x01E1
-#define _WIN32_IE_IE20                  0x0200
-#define WM_MOUSEFIRST                   0x0200
-#define WM_MOUSEMOVE                    0x0200
-#define WVR_VREDRAW                     0x0200
-#define CS_NOCLOSE                      0x0200
-#define CF_PRIVATEFIRST                 0x0200
-#define HDS_FLAT                        0x0200
-#define TBSTYLE_WRAPABLE                0x0200
-#define RBS_VARHEIGHT                   0x00000200
-#define TBS_REVERSED                    0x0200
-#define LVS_EDITLABELS                  0x0200
-#define TVS_TRACKSELECT                 0x0200
-#define TVS_EX_DIMMEDCHECKBOXES         0x0200
-#define TCS_MULTILINE                   0x0200
-#define WM_LBUTTONDOWN                  0x0201
-#define WM_LBUTTONUP                    0x0202
-#define WM_LBUTTONDBLCLK                0x0203
-#define WM_RBUTTONDOWN                  0x0204
-#define WM_RBUTTONUP                    0x0205
-#define WM_RBUTTONDBLCLK                0x0206
-#define WM_MBUTTONDOWN                  0x0207
-#define WM_MBUTTONUP                    0x0208
-#define WM_MBUTTONDBLCLK                0x0209
-#define WM_MOUSEWHEEL                   0x020A
-#define WM_XBUTTONDOWN                  0x020B
-#define WM_XBUTTONUP                    0x020C
-#define WM_XBUTTONDBLCLK                0x020D
-#define WM_MOUSEHWHEEL                  0x020E
-#define WM_PARENTNOTIFY                 0x0210
-#define WM_ENTERMENULOOP                0x0211
-#define WM_EXITMENULOOP                 0x0212
-#define WM_NEXTMENU                     0x0213
-#define WM_SIZING                       0x0214
-#define WM_CAPTURECHANGED               0x0215
-#define WM_MOVING                       0x0216
-#define WM_POWERBROADCAST               0x0218
-#define WM_DEVICECHANGE                 0x0219
-#define WM_MDICREATE                    0x0220
-#define WM_MDIDESTROY                   0x0221
-#define WM_MDIACTIVATE                  0x0222
-#define WM_MDIRESTORE                   0x0223
-#define WM_MDINEXT                      0x0224
-#define WM_MDIMAXIMIZE                  0x0225
-#define WM_MDITILE                      0x0226
-#define WM_MDICASCADE                   0x0227
-#define WM_MDIICONARRANGE               0x0228
-#define WM_MDIGETACTIVE                 0x0229
-#define WM_MDISETMENU                   0x0230
-#define WM_ENTERSIZEMOVE                0x0231
-#define WM_EXITSIZEMOVE                 0x0232
-#define WM_DROPFILES                    0x0233
-#define WM_MDIREFRESHMENU               0x0234
-#define WM_IME_SETCONTEXT               0x0281
-#define WM_IME_NOTIFY                   0x0282
-#define WM_IME_CONTROL                  0x0283
-#define WM_IME_COMPOSITIONFULL          0x0284
-#define WM_IME_SELECT                   0x0285
-#define WM_IME_CHAR                     0x0286
-#define WM_IME_REQUEST                  0x0288
-#define WM_IME_KEYDOWN                  0x0290
-#define WM_IME_KEYUP                    0x0291
-#define WM_NCMOUSEHOVER                 0x02A0
-#define WM_MOUSEHOVER                   0x02A1
-#define WM_NCMOUSELEAVE                 0x02A2
-#define WM_MOUSELEAVE                   0x02A3
-#define WM_WTSSESSION_CHANGE            0x02B1
-#define WM_TABLET_FIRST                 0x02c0
-#define WM_TABLET_LAST                  0x02df
-#define CF_PRIVATELAST                  0x02FF
-#define _WIN32_IE_IE30                  0x0300
-#define WM_CUT                          0x0300
-#define CF_GDIOBJFIRST                  0x0300
-#define WM_COPY                         0x0301
-#define _WIN32_IE_IE302                 0x0302
-#define WM_PASTE                        0x0302
-#define WM_CLEAR                        0x0303
-#define WM_UNDO                         0x0304
-#define WM_RENDERFORMAT                 0x0305
-#define WM_RENDERALLFORMATS             0x0306
-#define WM_DESTROYCLIPBOARD             0x0307
-#define WM_DRAWCLIPBOARD                0x0308
-#define WM_PAINTCLIPBOARD               0x0309
-#define WM_VSCROLLCLIPBOARD             0x030A
-#define WM_SIZECLIPBOARD                0x030B
-#define WM_ASKCBFORMATNAME              0x030C
-#define WM_CHANGECBCHAIN                0x030D
-#define WM_HSCROLLCLIPBOARD             0x030E
-#define WM_QUERYNEWPALETTE              0x030F
-#define WM_PALETTEISCHANGING            0x0310
-#define WM_PALETTECHANGED               0x0311
-#define WM_HOTKEY                       0x0312
-#define WM_PRINT                        0x0317
-#define WM_PRINTCLIENT                  0x0318
-#define WM_APPCOMMAND                   0x0319
-#define WM_THEMECHANGED                 0x031A
-#define WM_CLIPBOARDUPDATE              0x031D
-#define WM_DWMCOMPOSITIONCHANGED        0x031E
-#define WM_DWMNCRENDERINGCHANGED        0x031F
-#define WM_DWMCOLORIZATIONCOLORCHANGED  0x0320
-#define WM_DWMWINDOWMAXIMIZEDCHANGE     0x0321
-#define WM_GETTITLEBARINFOEX            0x033F
-#define WM_HANDHELDFIRST                0x0358
-#define WM_HANDHELDLAST                 0x035F
-#define WM_AFXFIRST                     0x0360
-#define WM_AFXLAST                      0x037F
-#define WM_PENWINFIRST                  0x0380
-#define WM_PENWINLAST                   0x038F
-#define WM_DDE_FIRST                    0x03E0
-#define IDC_STATUS                      1000
-#define IDC_LIST1                       1000
-#define IDC_LEFT                        1001
-#define IDC_RIGHT                       1002
-#define IDC_TOP                         1003
-#define IDC_MIDDLE                      1004
-#define IDC_BOTTOM                      1005
-#define IDC_EDIT                        1010
-#define IDC_CLEAR                       1011
-#define CF_GDIOBJLAST                   0x03FF
-#define _WIN32_WINNT_NT4                0x0400
-#define _WIN32_IE_IE40                  0x0400
-#define WM_USER                         0x0400
-#define WVR_VALIDRECTS                  0x0400
-#define HDS_CHECKBOXES                  0x0400
-#define TBSTYLE_ALTDRAG                 0x0400
-#define RBS_BANDBORDERS                 0x00000400
-#define TBS_DOWNISLEFT                  0x0400
-#define LVS_OWNERDRAWFIXED              0x0400
-#define TVS_SINGLEEXPAND                0x0400
-#define TVS_EX_DRAWIMAGEASYNC           0x0400
-#define TCS_FIXEDWIDTH                  0x0400
-#define ctlFirst                        0x0400
-#define psh1                            0x0400
-#define _WIN32_IE_IE401                 0x0401
-#define psh2                            0x0401
-#define psh3                            0x0402
-#define psh4                            0x0403
-#define psh5                            0x0404
-#define psh6                            0x0405
-#define psh7                            0x0406
-#define psh8                            0x0407
-#define psh9                            0x0408
-#define psh10                           0x0409
-#define psh11                           0x040a
-#define psh12                           0x040b
-#define psh13                           0x040c
-#define psh14                           0x040d
-#define psh15                           0x040e
-#define psh16                           0x040f
-#define _WIN32_WINDOWS                  0x0410
-#define chx1                            0x0410
-#define chx2                            0x0411
-#define chx3                            0x0412
-#define chx4                            0x0413
-#define chx5                            0x0414
-#define chx6                            0x0415
-#define chx7                            0x0416
-#define chx8                            0x0417
-#define chx9                            0x0418
-#define chx10                           0x0419
-#define chx11                           0x041a
-#define chx12                           0x041b
-#define chx13                           0x041c
-#define chx14                           0x041d
-#define chx15                           0x041e
-#define chx16                           0x041f
-#define rad1                            0x0420
-#define rad2                            0x0421
-#define rad3                            0x0422
-#define rad4                            0x0423
-#define rad5                            0x0424
-#define rad6                            0x0425
-#define rad7                            0x0426
-#define rad8                            0x0427
-#define rad9                            0x0428
-#define rad10                           0x0429
-#define rad11                           0x042a
-#define rad12                           0x042b
-#define rad13                           0x042c
-#define rad14                           0x042d
-#define rad15                           0x042e
-#define rad16                           0x042f
-#define grp1                            0x0430
-#define grp2                            0x0431
-#define grp3                            0x0432
-#define grp4                            0x0433
-#define frm1                            0x0434
-#define frm2                            0x0435
-#define frm3                            0x0436
-#define frm4                            0x0437
-#define rct1                            0x0438
-#define rct2                            0x0439
-#define rct3                            0x043a
-#define rct4                            0x043b
-#define ico1                            0x043c
-#define ico2                            0x043d
-#define ico3                            0x043e
-#define ico4                            0x043f
-#define stc1                            0x0440
-#define stc2                            0x0441
-#define stc3                            0x0442
-#define stc4                            0x0443
-#define stc5                            0x0444
-#define stc6                            0x0445
-#define stc7                            0x0446
-#define stc8                            0x0447
-#define stc9                            0x0448
-#define stc10                           0x0449
-#define stc11                           0x044a
-#define stc12                           0x044b
-#define stc13                           0x044c
-#define stc14                           0x044d
-#define stc15                           0x044e
-#define stc16                           0x044f
-#define stc17                           0x0450
-#define stc18                           0x0451
-#define stc19                           0x0452
-#define stc20                           0x0453
-#define stc21                           0x0454
-#define stc22                           0x0455
-#define stc23                           0x0456
-#define stc24                           0x0457
-#define stc25                           0x0458
-#define stc26                           0x0459
-#define stc27                           0x045a
-#define stc28                           0x045b
-#define stc29                           0x045c
-#define stc30                           0x045d
-#define stc31                           0x045e
-#define stc32                           0x045f
-#define lst1                            0x0460
-#define lst2                            0x0461
-#define lst3                            0x0462
-#define lst4                            0x0463
-#define lst5                            0x0464
-#define lst6                            0x0465
-#define lst7                            0x0466
-#define lst8                            0x0467
-#define lst9                            0x0468
-#define lst10                           0x0469
-#define lst11                           0x046a
-#define lst12                           0x046b
-#define lst13                           0x046c
-#define lst14                           0x046d
-#define lst15                           0x046e
-#define lst16                           0x046f
-#define cmb1                            0x0470
-#define cmb2                            0x0471
-#define cmb3                            0x0472
-#define cmb4                            0x0473
-#define cmb5                            0x0474
-#define cmb6                            0x0475
-#define cmb7                            0x0476
-#define cmb8                            0x0477
-#define cmb9                            0x0478
-#define cmb10                           0x0479
-#define cmb11                           0x047a
-#define cmb12                           0x047b
-#define cmb13                           0x047c
-#define cmb14                           0x047d
-#define cmb15                           0x047e
-#define cmb16                           0x047f
-#define edt1                            0x0480
-#define edt2                            0x0481
-#define edt3                            0x0482
-#define edt4                            0x0483
-#define edt5                            0x0484
-#define edt6                            0x0485
-#define edt7                            0x0486
-#define edt8                            0x0487
-#define edt9                            0x0488
-#define edt10                           0x0489
-#define edt11                           0x048a
-#define edt12                           0x048b
-#define edt13                           0x048c
-#define edt14                           0x048d
-#define edt15                           0x048e
-#define edt16                           0x048f
-#define scr1                            0x0490
-#define scr2                            0x0491
-#define scr3                            0x0492
-#define scr4                            0x0493
-#define scr5                            0x0494
-#define scr6                            0x0495
-#define scr7                            0x0496
-#define scr8                            0x0497
-#define ctl1                            0x04A0
-#define ctlLast                         0x04ff
-#define _WIN32_WINNT_WIN2K              0x0500
-#define _WIN32_IE_IE50                  0x0500
-#define _WIN32_WINNT_WINXP              0x0501
-#define _WIN32_IE_IE501                 0x0501
-#define _WIN32_WINNT_WS03               0x0502
-#define _WIN32_IE_IE55                  0x0550
-#define _WIN32_WINNT_LONGHORN           0x0600
-#define _WIN32_IE_IE60                  0x0600
-#define FILEOPENORD                     1536
-#define _WIN32_IE_IE60SP1               0x0601
-#define MULTIFILEOPENORD                1537
-#define _WIN32_IE_WS03                  0x0602
-#define PRINTDLGORD                     1538
-#define _WIN32_IE_IE60SP2               0x0603
-#define PRNSETUPDLGORD                  1539
-#define FINDDLGORD                      1540
-#define REPLACEDLGORD                   1541
-#define FONTDLGORD                      1542
-#define FORMATDLGORD31                  1543
-#define FORMATDLGORD30                  1544
-#define RUNDLGORD                       1545
-#define PAGESETUPDLGORD                 1546
-#define NEWFILEOPENORD                  1547
-#define PRINTDLGEXORD                   1549
-#define PAGESETUPDLGORDMOTIF            1550
-#define COLORMGMTDLGORD                 1551
-#define NEWFILEOPENV2ORD                1552
-#define NEWFILEOPENV3ORD                1553
-#define _WIN32_IE_IE70                  0x0700
-#define CS_SAVEBITS                     0x0800
-#define HDS_NOSIZING                    0x0800
-#define TBSTYLE_FLAT                    0x0800
-#define RBS_FIXEDORDER                  0x00000800
-#define SBARS_TOOLTIPS                  0x0800
-#define SBT_TOOLTIPS                    0x0800
-#define TBS_NOTIFYBEFOREMOVE            0x0800
-#define LVS_ALIGNLEFT                   0x0800
-#define TVS_INFOTIP                     0x0800
-#define TCS_RAGGEDRIGHT                 0x0800
-#define LVS_ALIGNMASK                   0x0c00
-#define CS_BYTEALIGNCLIENT              0x1000
-#define HDS_OVERFLOW                    0x1000
-#define TBSTYLE_LIST                    0x1000
-#define RBS_REGISTERDROP                0x00001000
-#define TBS_TRANSPARENTBKGND            0x1000
-#define LVS_OWNERDATA                   0x1000
-#define TVS_FULLROWSELECT               0x1000
-#define TCS_FOCUSONBUTTONDOWN           0x1000
-#define CS_BYTEALIGNWINDOW              0x2000
-#define TBSTYLE_CUSTOMERASE             0x2000
-#define RBS_AUTOSIZE                    0x00002000
-#define LVS_NOSCROLL                    0x2000
-#define TVS_NOSCROLL                    0x2000
-#define TCS_OWNERDRAWFIXED              0x2000
-#define CS_GLOBALCLASS                  0x4000
-#define TBSTYLE_REGISTERDROP            0x4000
-#define RBS_VERTICALGRIPPER             0x00004000
-#define LVS_NOCOLUMNHEADER              0x4000
-#define TVS_NONEVENHEIGHT               0x4000
-#define TCS_TOOLTIPS                    0x4000
-#define IDH_NO_HELP                     28440
-#define IDH_MISSING_CONTEXT             28441
-#define IDH_GENERIC_HELP_BUTTON         28442
-#define IDH_OK                          28443
-#define IDH_CANCEL                      28444
-#define IDH_HELP                        28445
-#define LANG_BOSNIAN_NEUTRAL            0x781a
-#define LANG_CHINESE_TRADITIONAL        0x7c04
-#define LANG_SERBIAN_NEUTRAL            0x7c1a
-#define IDTIMEOUT                       32000
-#define OCR_NORMAL                      32512
-#define OIC_SAMPLE                      32512
-#define OCR_IBEAM                       32513
-#define OIC_HAND                        32513
-#define OCR_WAIT                        32514
-#define OIC_QUES                        32514
-#define OCR_CROSS                       32515
-#define OIC_BANG                        32515
-#define OCR_UP                          32516
-#define OIC_NOTE                        32516
-#define OIC_WINLOGO                     32517
-#define OIC_SHIELD                      32518
-#define OCR_SIZE                        32640
-#define OCR_ICON                        32641
-#define OCR_SIZENWSE                    32642
-#define OCR_SIZENESW                    32643
-#define OCR_SIZEWE                      32644
-#define OCR_SIZENS                      32645
-#define OCR_SIZEALL                     32646
-#define OCR_ICOCUR                      32647
-#define OCR_NO                          32648
-#define OCR_HAND                        32649
-#define OCR_APPSTARTING                 32650
-#define OBM_LFARROWI                    32734
-#define OBM_RGARROWI                    32735
-#define OBM_DNARROWI                    32736
-#define OBM_UPARROWI                    32737
-#define OBM_COMBO                       32738
-#define OBM_MNARROW                     32739
-#define OBM_LFARROWD                    32740
-#define OBM_RGARROWD                    32741
-#define OBM_DNARROWD                    32742
-#define OBM_UPARROWD                    32743
-#define OBM_RESTORED                    32744
-#define OBM_ZOOMD                       32745
-#define OBM_REDUCED                     32746
-#define OBM_RESTORE                     32747
-#define OBM_ZOOM                        32748
-#define OBM_REDUCE                      32749
-#define OBM_LFARROW                     32750
-#define OBM_RGARROW                     32751
-#define OBM_DNARROW                     32752
-#define OBM_UPARROW                     32753
-#define OBM_CLOSE                       32754
-#define OBM_OLD_RESTORE                 32755
-#define OBM_OLD_ZOOM                    32756
-#define OBM_OLD_REDUCE                  32757
-#define OBM_BTNCORNERS                  32758
-#define OBM_CHECKBOXES                  32759
-#define OBM_CHECK                       32760
-#define OBM_BTSIZE                      32761
-#define OBM_OLD_LFARROW                 32762
-#define OBM_OLD_RGARROW                 32763
-#define OBM_OLD_DNARROW                 32764
-#define OBM_OLD_UPARROW                 32765
-#define OBM_SIZE                        32766
-#define OBM_OLD_CLOSE                   32767
-#define WM_APP                          0x8000
-#define HELP_TCARD                      0x8000
-#define TBSTYLE_TRANSPARENT             0x8000
-#define RBS_DBLCLKTOGGLE                0x00008000
-#define LVS_NOSORTHEADER                0x8000
-#define TVS_NOHSCROLL                   0x8000
-#define TCS_FOCUSNEVER                  0x8000
-#define SC_SIZE                         0xF000
-#define SC_SEPARATOR                    0xF00F
-#define SC_MOVE                         0xF010
-#define SC_MINIMIZE                     0xF020
-#define SC_MAXIMIZE                     0xF030
-#define SC_NEXTWINDOW                   0xF040
-#define SC_PREVWINDOW                   0xF050
-#define SC_CLOSE                        0xF060
-#define SC_VSCROLL                      0xF070
-#define SC_HSCROLL                      0xF080
-#define SC_MOUSEMENU                    0xF090
-#define SC_KEYMENU                      0xF100
-#define SC_ARRANGE                      0xF110
-#define SC_RESTORE                      0xF120
-#define SC_TASKLIST                     0xF130
-#define SC_SCREENSAVE                   0xF140
-#define SC_HOTKEY                       0xF150
-#define SC_DEFAULT                      0xF160
-#define SC_MONITORPOWER                 0xF170
-#define SC_CONTEXTHELP                  0xF180
-#define LVS_TYPESTYLEMASK               0xfc00
-#define SPVERSION_MASK                  0x0000FF00
-#define UNICODE_NOCHAR                  0xFFFF
-#define IDC_STATIC                      -1
-
-// Next default values for new objects
-// 
-#ifdef APSTUDIO_INVOKED
-#ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NEXT_RESOURCE_VALUE        101
-#define _APS_NEXT_COMMAND_VALUE         40001
-#define _APS_NEXT_CONTROL_VALUE         1002
-#define _APS_NEXT_SYMED_VALUE           101
-#endif
-#endif
diff --git a/PC/associator.rc b/PC/associator.rc
deleted file mode 100644
--- a/PC/associator.rc
+++ /dev/null
@@ -1,97 +0,0 @@
-// Microsoft Visual C++ generated resource script.
-//
-#include "associator.h"
-#include "winuser.h"
-/////////////////////////////////////////////////////////////////////////////
-// English (U.K.) resources
-
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENG)
-#ifdef _WIN32
-LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_UK
-#pragma code_page(1252)
-#endif //_WIN32
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Icon
-//
-
-// Icon with lowest ID value placed first to ensure application icon
-// remains consistent on all systems.
-DLG_ICON                ICON                    "launcher.ico"
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Dialog
-//
-
-DLG_MAIN DIALOGEX 20, 40, 236, 183
-// Make the dialog visible after positioning at centre
-STYLE DS_SETFONT | DS_3DLOOK | WS_MINIMIZEBOX | WS_CAPTION | WS_SYSMENU
-EXSTYLE WS_EX_NOPARENTNOTIFY
-CAPTION "Python File Associations Have Ceased To Be!"
-FONT 10, "Arial", 400, 0, 0x0
-BEGIN
-    LTEXT           "You've uninstalled the Python Launcher, so now there are no applications associated with Python files.",IDC_STATIC,7,7,225,18
-    LTEXT           "You may wish to associate Python files with one of the Python versions installed on your machine, listed below:",IDC_STATIC,7,27,225,18
-    CONTROL         "",IDC_LIST1,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,6,49,224,105
-    PUSHBUTTON      "&Associate with selected Python",IDOK,6,164,117,14,WS_DISABLED
-    PUSHBUTTON      "Do&n't associate Python files",IDCANCEL,128,164,102,14
-END
-
-
-#ifdef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// TEXTINCLUDE
-//
-
-1 TEXTINCLUDE 
-BEGIN
-    "resource.h\0"
-END
-
-2 TEXTINCLUDE 
-BEGIN
-    "\0"
-END
-
-3 TEXTINCLUDE 
-BEGIN
-    "\r\n"
-    "\0"
-END
-
-#endif    // APSTUDIO_INVOKED
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// DESIGNINFO
-//
-
-#ifdef APSTUDIO_INVOKED
-GUIDELINES DESIGNINFO 
-BEGIN
-    DLG_MAIN, DIALOG
-    BEGIN
-        RIGHTMARGIN, 238
-    END
-END
-#endif    // APSTUDIO_INVOKED
-
-#endif    // English (U.K.) resources
-/////////////////////////////////////////////////////////////////////////////
-
-
-
-#ifndef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 3 resource.
-//
-
-
-/////////////////////////////////////////////////////////////////////////////
-#endif    // not APSTUDIO_INVOKED
-
diff --git a/PCbuild/associator.vcxproj b/PCbuild/associator.vcxproj
deleted file mode 100644
--- a/PCbuild/associator.vcxproj
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{023B3CDA-59C8-45FD-95DC-F8973322ED34}</ProjectGuid>
-    <RootNamespace>associator</RootNamespace>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="pyproject.props" />
-    <Import Project="debug.props" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="pyproject.props" />
-    <Import Project="release.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup />
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <WarningLevel>Level3</WarningLevel>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <Link>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AdditionalDependencies>comctl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <WarningLevel>Level3</WarningLevel>
-      <Optimization>MaxSpeed</Optimization>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <Link>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <OptimizeReferences>true</OptimizeReferences>
-      <AdditionalDependencies>comctl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\PC\associator.c" />
-  </ItemGroup>
-  <ItemGroup>
-    <ResourceCompile Include="..\PC\associator.rc" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\PC\associator.h" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/PCbuild/associator.vcxproj.filters b/PCbuild/associator.vcxproj.filters
deleted file mode 100644
--- a/PCbuild/associator.vcxproj.filters
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
-      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
-    </Filter>
-    <Filter Include="Resource Files">
-      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
-      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\PC\associator.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ResourceCompile Include="..\PC\associator.rc">
-      <Filter>Resource Files</Filter>
-    </ResourceCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\PC\associator.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/PCbuild/pcbuild.sln b/PCbuild/pcbuild.sln
--- a/PCbuild/pcbuild.sln
+++ b/PCbuild/pcbuild.sln
@@ -72,8 +72,6 @@
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pywlauncher", "pywlauncher.vcxproj", "{1D4B18D3-7C12-4ECB-9179-8531FF876CE6}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "associator", "associator.vcxproj", "{023B3CDA-59C8-45FD-95DC-F8973322ED34}"
-EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Win32 = Debug|Win32

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list