[ros-diffs] [gedmurphy] 34016: The start of a GUI to make running the Wine API tests a pleasure rather than a pain. This will plug into the new testing framework for the Wine tests, which will also publish it's results on a live website (if I can get Colin to help me with the web stuff ; ) ) This is the time to pester me with requests / ideas anyone may have.

gedmurphy at svn.reactos.org gedmurphy at svn.reactos.org
Wed Jun 18 21:10:39 CEST 2008


Author: gedmurphy
Date: Wed Jun 18 14:10:39 2008
New Revision: 34016

URL: http://svn.reactos.org/svn/reactos?rev=34016&view=rev
Log:
The start of a GUI to make running the Wine API tests a pleasure rather than a pain.
This will plug into the new testing framework for the Wine tests, which will also publish it's results on a live website (if I can get Colin to help me with the web stuff ;) )
This is the time to pester me with requests / ideas anyone may have.

Added:
    trunk/rostests/winetests/GUI/
    trunk/rostests/winetests/GUI/WinetestsGUI.rc   (with props)
    trunk/rostests/winetests/GUI/browsewnd.c   (with props)
    trunk/rostests/winetests/GUI/lang/
    trunk/rostests/winetests/GUI/lang/en-US.rc   (with props)
    trunk/rostests/winetests/GUI/mainwnd.c   (with props)
    trunk/rostests/winetests/GUI/misc.c   (with props)
    trunk/rostests/winetests/GUI/precomp.h   (with props)
    trunk/rostests/winetests/GUI/res/
    trunk/rostests/winetests/GUI/resource.h   (with props)
    trunk/rostests/winetests/GUI/rsrc.rc   (with props)

Added: trunk/rostests/winetests/GUI/WinetestsGUI.rc
URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/GUI/WinetestsGUI.rc?rev=34016&view=auto
==============================================================================
--- trunk/rostests/winetests/GUI/WinetestsGUI.rc (added)
+++ trunk/rostests/winetests/GUI/WinetestsGUI.rc [iso-8859-1] Wed Jun 18 14:10:39 2008
@@ -1,0 +1,11 @@
+#include <windows.h>
+#include <commctrl.h>
+#include "resource.h"
+
+
+#define REACTOS_STR_FILE_DESCRIPTION    "ReactOS Character Map\0"
+#define REACTOS_STR_INTERNAL_NAME       "charmap\0"
+#define REACTOS_STR_ORIGINAL_FILENAME   "charmap.exe\0"
+//#include <reactos/version.rc>
+
+#include "rsrc.rc"

Propchange: trunk/rostests/winetests/GUI/WinetestsGUI.rc
------------------------------------------------------------------------------
    svn:eol-style = native

Added: trunk/rostests/winetests/GUI/browsewnd.c
URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/GUI/browsewnd.c?rev=34016&view=auto
==============================================================================
--- trunk/rostests/winetests/GUI/browsewnd.c (added)
+++ trunk/rostests/winetests/GUI/browsewnd.c [iso-8859-1] Wed Jun 18 14:10:39 2008
@@ -1,0 +1,224 @@
+/*
+ * PROJECT:     ReactOS Character Map
+ * LICENSE:     GPL - See COPYING in the top level directory
+ * FILE:        
+ * PURPOSE:     browse dialog implementation
+ * COPYRIGHT:   Copyright 2008 Ged Murphy <gedmurphy at reactos.org>
+ *
+ */
+
+#include <precomp.h>
+
+#define DLL_SEARCH_DIR L"\\Debug\\testlibs\\*"
+
+static INT
+GetNumberOfDllsInFolder(LPWSTR lpFolder)
+{
+    HANDLE hFind;
+    WIN32_FIND_DATAW findFileData;
+    INT numFiles = 0;
+
+    hFind = FindFirstFileW(lpFolder,
+                           &findFileData);
+    if (hFind == INVALID_HANDLE_VALUE)
+    {
+        DisplayError(GetLastError());
+        return 0;
+    }
+
+    do
+    {
+        if (!(findFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
+        {
+            numFiles++;
+        }
+    } while (FindNextFile(hFind, &findFileData) != 0);
+
+    return numFiles;
+}
+
+static INT
+GetListOfTestDlls(PMAIN_WND_INFO pInfo)
+{
+    HANDLE hFind;
+    WIN32_FIND_DATAW findFileData;
+    WCHAR szDllPath[MAX_PATH];
+    LPWSTR ptr;
+    INT numFiles = 0;
+    INT len;
+
+    len = GetCurrentDirectory(MAX_PATH, szDllPath);
+    if (!len) return 0;
+
+    wcsncat(szDllPath, DLL_SEARCH_DIR, MAX_PATH - (len + 1));
+
+    numFiles = GetNumberOfDllsInFolder(szDllPath);
+    if (!numFiles) return 0;
+
+    pInfo->lpDllList = HeapAlloc(GetProcessHeap(), 0, numFiles * (MAX_PATH * sizeof(WCHAR)));
+    if (!pInfo->lpDllList)
+        return 0;
+
+    hFind = FindFirstFileW(szDllPath,
+                           &findFileData);
+    if (hFind == INVALID_HANDLE_VALUE)
+    {
+        DisplayError(GetLastError());
+        HeapFree(GetProcessHeap(), 0, pInfo->lpDllList);
+        return 0;
+    }
+
+    /* remove the glob */
+    ptr = wcschr(szDllPath, L'*');
+    if (ptr)
+        *ptr = L'\0';
+
+    /* don't mod our base pointer */
+    ptr = pInfo->lpDllList;
+
+    do
+    {
+        if (!(findFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
+        {
+            //MessageBoxW(NULL, findFileData.cFileName, NULL, 0);
+
+            /* set the path */
+            wcscpy(ptr, szDllPath);
+
+            /* tag the file onto the path */
+            len = MAX_PATH - (wcslen(ptr) + 1);
+            wcsncat(ptr, findFileData.cFileName, len);
+
+            /* move the pointer along by MAX_PATH */
+            ptr += MAX_PATH;
+        }
+    } while (FindNextFile(hFind, &findFileData) != 0);
+
+    return numFiles;
+}
+
+static HTREEITEM
+InsertIntoTreeView(HWND hTreeView,
+                   HTREEITEM hRoot,
+                   LPWSTR lpLabel,
+                   LPWSTR lpDllPath,
+                   INT Image)
+{
+    TV_ITEM tvi;
+    TV_INSERTSTRUCT tvins;
+
+    ZeroMemory(&tvi, sizeof(tvi));
+    ZeroMemory(&tvins, sizeof(tvins));
+
+    tvi.mask = TVIF_TEXT | TVIF_PARAM | TVIF_IMAGE | TVIF_SELECTEDIMAGE;
+    tvi.pszText = lpLabel;
+    tvi.cchTextMax = lstrlen(lpLabel);
+    tvi.lParam = (LPARAM)lpDllPath;
+    tvi.iImage = Image;
+    tvi.iSelectedImage = Image;
+
+    //tvi.stateMask = TVIS_OVERLAYMASK;
+
+    tvins.item = tvi;
+    tvins.hParent = hRoot;
+
+    return TreeView_InsertItem(hTreeView, &tvins);
+}
+
+static VOID
+PopulateTreeView(PMAIN_WND_INFO pInfo)
+{
+    HWND hTreeView;
+    HTREEITEM hRoot;
+    HBITMAP hComp;
+    TCHAR ComputerName[MAX_PATH];
+    DWORD dwSize = MAX_PATH;
+    INT RootImage;
+
+    hTreeView = GetDlgItem(pInfo->hBrowseDlg, IDC_TREEVIEW);
+
+    (void)TreeView_DeleteAllItems(hTreeView);
+
+        /* insert the root item into the tree */
+    hRoot = InsertIntoTreeView(hTreeView,
+                               NULL,
+                               ComputerName,
+                               NULL,
+                               0);//RootImage);
+}
+
+static VOID
+PopulateTestList(PMAIN_WND_INFO pInfo)
+{
+    INT numFiles;
+
+    if ((numFiles = GetListOfTestDlls(pInfo)))
+    {
+        PopulateTreeView(pInfo);
+    }
+}
+
+
+static BOOL
+OnInitBrowseDialog(HWND hDlg,
+                   LPARAM lParam)
+{
+    PMAIN_WND_INFO pInfo;
+
+    pInfo = (PMAIN_WND_INFO)lParam;
+
+    pInfo->hBrowseDlg = hDlg;
+
+    SetWindowLongPtr(hDlg,
+                     GWLP_USERDATA,
+                     (LONG_PTR)pInfo);
+
+    PopulateTestList(pInfo);
+
+    return TRUE;
+}
+
+
+BOOL CALLBACK
+BrowseDlgProc(HWND hDlg,
+              UINT Message,
+              WPARAM wParam,
+              LPARAM lParam)
+{
+    PMAIN_WND_INFO pInfo;
+
+    /* Get the window context */
+    pInfo = (PMAIN_WND_INFO)GetWindowLongPtr(hDlg,
+                                             GWLP_USERDATA);
+    if (pInfo == NULL && Message != WM_INITDIALOG)
+    {
+        goto HandleDefaultMessage;
+    }
+
+    switch(Message)
+    {
+        case WM_INITDIALOG:
+            return OnInitBrowseDialog(hDlg, lParam);
+
+        case WM_COMMAND:
+        {
+            if ((LOWORD(wParam) == IDOK) || (LOWORD(wParam) == IDCANCEL))
+            {
+                HeapFree(GetProcessHeap(), 0, pInfo->lpDllList);
+                pInfo->lpDllList = NULL;
+
+                EndDialog(hDlg,
+                          LOWORD(wParam));
+                return TRUE;
+            }
+
+            break;
+        }
+
+HandleDefaultMessage:
+        default:
+            return FALSE;
+    }
+
+    return FALSE;
+}

Propchange: trunk/rostests/winetests/GUI/browsewnd.c
------------------------------------------------------------------------------
    svn:eol-style = native

Added: trunk/rostests/winetests/GUI/lang/en-US.rc
URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/GUI/lang/en-US.rc?rev=34016&view=auto
==============================================================================
--- trunk/rostests/winetests/GUI/lang/en-US.rc (added)
+++ trunk/rostests/winetests/GUI/lang/en-US.rc [iso-8859-1] Wed Jun 18 14:10:39 2008
@@ -1,0 +1,35 @@
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+
+IDD_WINETESTGUI DIALOGEX 0, 0, 293, 262
+STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
+CAPTION "Winetest GUI"
+FONT 8, "MS Shell Dlg", 0, 0, 0x1
+BEGIN
+    DEFPUSHBUTTON   "OK",IDOK,236,241,50,14,WS_GROUP
+    CONTROL         "",IDC_LIST,"SysListView32",LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,7,69,279,103
+    EDITTEXT        IDC_OUTPUT,7,175,279,62,ES_MULTILINE | ES_AUTOHSCROLL | ES_READONLY
+    COMBOBOX        IDC_TESTSELECTION,27,12,205,30,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP
+    LTEXT           "Test:",IDC_STATIC,6,14,18,8
+    PUSHBUTTON      "Browse...",IDC_BROWSE,236,11,50,14
+    PUSHBUTTON      "Run",IDC_RUN,236,30,50,14
+    CONTROL         "",IDC_PROGRESS,"msctls_progress32",PBS_SMOOTH | WS_BORDER,28,30,204,14
+    LTEXT           "Runs:",IDC_STATIC,8,53,20,8
+    LTEXT           "?",IDC_NUMRUNS,33,53,8,8
+    LTEXT           "Errors:",IDC_STATIC,55,53,23,8
+    LTEXT           "?",IDC_NUMERRORS,85,53,8,8
+    LTEXT           "Failures:",IDC_STATIC,107,53,28,8
+    LTEXT           "?",IDC_NUMFAILURES,141,53,8,8
+    PUSHBUTTON      "Stop",IDC_STOP,236,49,50,14
+    CONTROL         "Run on start",IDC_RUNONSTART,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,174,52,56,10
+    LTEXT           "status bar",IDC_STATUS,7,244,210,8
+END
+
+IDD_TESTBROWSER DIALOGEX 0, 0, 259, 250
+STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME
+CAPTION "Test hierarchy"
+FONT 8, "MS Shell Dlg", 0, 0, 0x1
+BEGIN
+   PUSHBUTTON       "Select", IDC_SELECT, 202, 7, 50, 14 
+   CONTROL          "", IDC_TREEVIEW, "SysTreeView32", WS_BORDER | TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT, 7, 7, 189, 236 
+   PUSHBUTTON       "Close", IDOK, 202, 34, 50, 14 
+END

Propchange: trunk/rostests/winetests/GUI/lang/en-US.rc
------------------------------------------------------------------------------
    svn:eol-style = native

Added: trunk/rostests/winetests/GUI/mainwnd.c
URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/GUI/mainwnd.c?rev=34016&view=auto
==============================================================================
--- trunk/rostests/winetests/GUI/mainwnd.c (added)
+++ trunk/rostests/winetests/GUI/mainwnd.c [iso-8859-1] Wed Jun 18 14:10:39 2008
@@ -1,0 +1,155 @@
+/*
+ * PROJECT:     ReactOS Character Map
+ * LICENSE:     GPL - See COPYING in the top level directory
+ * FILE:        
+ * PURPOSE:     main dialog implementation
+ * COPYRIGHT:   Copyright 2008 Ged Murphy <gedmurphy at reactos.org>
+ *
+ */
+
+#include <precomp.h>
+
+HINSTANCE hInstance;
+
+
+
+
+static BOOL
+OnInitMainDialog(HWND hDlg,
+                 LPARAM lParam)
+{
+    PMAIN_WND_INFO pInfo;
+    //HMENU hSysMenu;
+    LPWSTR lpAboutText;
+
+    pInfo = (PMAIN_WND_INFO)lParam;
+
+    /* Initialize the main window context */
+    pInfo->hMainWnd = hDlg;
+
+    SetWindowLongPtr(hDlg,
+                     GWLP_USERDATA,
+                     (LONG_PTR)pInfo);
+
+    pInfo->hSmIcon = LoadImageW(hInstance,
+                         MAKEINTRESOURCEW(IDI_ICON),
+                         IMAGE_ICON,
+                         16,
+                         16,
+                         0);
+    if (pInfo->hSmIcon)
+    {
+         SendMessageW(hDlg,
+                      WM_SETICON,
+                      ICON_SMALL,
+                      (LPARAM)pInfo->hSmIcon);
+    }
+
+    pInfo->hBgIcon = LoadImageW(hInstance,
+                         MAKEINTRESOURCEW(IDI_ICON),
+                         IMAGE_ICON,
+                         32,
+                         32,
+                         0);
+    if (pInfo->hBgIcon)
+    {
+        SendMessageW(hDlg,
+                     WM_SETICON,
+                     ICON_BIG,
+                     (LPARAM)pInfo->hBgIcon);
+    }
+
+    return TRUE;
+}
+
+
+static BOOL CALLBACK
+MainDlgProc(HWND hDlg,
+            UINT Message,
+            WPARAM wParam,
+            LPARAM lParam)
+{
+    PMAIN_WND_INFO pInfo;
+
+    /* Get the window context */
+    pInfo = (PMAIN_WND_INFO)GetWindowLongPtr(hDlg,
+                                             GWLP_USERDATA);
+    if (pInfo == NULL && Message != WM_INITDIALOG)
+    {
+        goto HandleDefaultMessage;
+    }
+
+    switch(Message)
+    {
+        case WM_INITDIALOG:
+            return OnInitMainDialog(hDlg, lParam);
+
+        case WM_COMMAND:
+        {
+            switch(LOWORD(wParam))
+            {
+                case IDC_BROWSE:
+                    DialogBoxParamW(hInstance,
+                                    MAKEINTRESOURCEW(IDD_TESTBROWSER),
+                                    hDlg,
+                                    (DLGPROC)BrowseDlgProc,
+                                    (LPARAM)pInfo);
+
+                    break;
+
+                case IDOK:
+                    EndDialog(hDlg, 0);
+                break;
+            }
+        }
+        break;
+
+        case WM_CLOSE:
+            if (pInfo->hSmIcon)
+                DestroyIcon(pInfo->hSmIcon);
+            if (pInfo->hBgIcon)
+                DestroyIcon(pInfo->hBgIcon);
+            EndDialog(hDlg, 0);
+            break;
+
+HandleDefaultMessage:
+        default:
+            return FALSE;
+    }
+
+    return FALSE;
+}
+
+
+INT WINAPI
+wWinMain(HINSTANCE hInst,
+         HINSTANCE hPrev,
+         LPWSTR Cmd,
+         int iCmd)
+{
+    INITCOMMONCONTROLSEX iccx;
+    PMAIN_WND_INFO pInfo;
+    INT Ret = 1;
+
+    hInstance = hInst;
+
+    ZeroMemory(&iccx, sizeof(INITCOMMONCONTROLSEX));
+    iccx.dwSize = sizeof(INITCOMMONCONTROLSEX);
+    iccx.dwICC = ICC_TAB_CLASSES;
+    InitCommonControlsEx(&iccx);
+
+    pInfo = HeapAlloc(GetProcessHeap(), 0, sizeof(MAIN_WND_INFO));
+    if (pInfo)
+    {
+        Ret = (DialogBoxParamW(hInstance,
+                               MAKEINTRESOURCEW(IDD_WINETESTGUI),
+                               NULL,
+                               (DLGPROC)MainDlgProc,
+                               (LPARAM)pInfo) == IDOK);
+
+        HeapFree(GetProcessHeap(), 0, pInfo);
+
+    }
+
+    return Ret;
+}

Propchange: trunk/rostests/winetests/GUI/mainwnd.c
------------------------------------------------------------------------------
    svn:eol-style = native

Added: trunk/rostests/winetests/GUI/misc.c
URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/GUI/misc.c?rev=34016&view=auto
==============================================================================
--- trunk/rostests/winetests/GUI/misc.c (added)
+++ trunk/rostests/winetests/GUI/misc.c [iso-8859-1] Wed Jun 18 14:10:39 2008
@@ -1,0 +1,260 @@
+/*
+ * PROJECT:     ReactOS Services
+ * LICENSE:     GPL - See COPYING in the top level directory
+ * FILE:        
+ * PURPOSE:     miscallanous functions
+ * COPYRIGHT:   Copyright 2005 Thomas Weidenmueller <w3seek at reactos.org>
+ *              Copyright 2006 - 2008 Ged Murphy <gedmurphy at gmail.com>
+ *
+ */
+
+#include <precomp.h>
+
+static INT
+LengthOfStrResource(IN HINSTANCE hInst,
+                    IN UINT uID)
+{
+    HRSRC hrSrc;
+    HGLOBAL hRes;
+    LPWSTR lpName, lpStr;
+
+    if (hInst == NULL)
+    {
+        return -1;
+    }
+
+    /* There are always blocks of 16 strings */
+    lpName = (LPWSTR)MAKEINTRESOURCE((uID >> 4) + 1);
+
+    /* Find the string table block */
+    if ((hrSrc = FindResourceW(hInst, lpName, (LPWSTR)RT_STRING)) &&
+        (hRes = LoadResource(hInst, hrSrc)) &&
+        (lpStr = (WCHAR*) LockResource(hRes)))
+    {
+        UINT x;
+
+        /* Find the string we're looking for */
+        uID &= 0xF; /* position in the block, same as % 16 */
+        for (x = 0; x < uID; x++)
+        {
+            lpStr += (*lpStr) + 1;
+        }
+
+        /* Found the string */
+        return (int)(*lpStr);
+    }
+    return -1;
+}
+
+INT
+AllocAndLoadString(OUT LPWSTR *lpTarget,
+                   IN HINSTANCE hInst,
+                   IN UINT uID)
+{
+    INT ln;
+
+    ln = LengthOfStrResource(hInst,
+                             uID);
+    if (ln++ > 0)
+    {
+        (*lpTarget) = (LPTSTR)LocalAlloc(LMEM_FIXED,
+                                         ln * sizeof(TCHAR));
+        if ((*lpTarget) != NULL)
+        {
+            INT Ret;
+            if (!(Ret = LoadStringW(hInst, uID, *lpTarget, ln)))
+            {
+                LocalFree((HLOCAL)(*lpTarget));
+            }
+            return Ret;
+        }
+    }
+    return 0;
+}
+
+DWORD
+LoadAndFormatString(IN HINSTANCE hInstance,
+                    IN UINT uID,
+                    OUT LPWSTR *lpTarget,
+                    ...)
+{
+    DWORD Ret = 0;
+    LPTSTR lpFormat;
+    va_list lArgs;
+
+    if (AllocAndLoadString(&lpFormat,
+                           hInstance,
+                           uID) > 0)
+    {
+        va_start(lArgs, lpTarget);
+        /* let's use Format to format it because it has the ability to allocate
+           memory automatically */
+        Ret = FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_STRING,
+                             lpFormat,
+                             0,
+                             0,
+                             (LPTSTR)lpTarget,
+                             0,
+                             &lArgs);
+        va_end(lArgs);
+
+        LocalFree((HLOCAL)lpFormat);
+    }
+
+    return Ret;
+}
+
+BOOL
+StatusBarLoadAndFormatString(IN HWND hStatusBar,
+                             IN INT PartId,
+                             IN HINSTANCE hInstance,
+                             IN UINT uID,
+                             ...)
+{
+    BOOL Ret = FALSE;
+    LPWSTR lpFormat, lpStr;
+    va_list lArgs;
+
+    if (AllocAndLoadString(&lpFormat,
+                           hInstance,
+                           uID) > 0)
+    {
+        va_start(lArgs, uID);
+        /* let's use FormatMessage to format it because it has the ability to allocate
+           memory automatically */
+        Ret = FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_STRING,
+                             lpFormat,
+                             0,
+                             0,
+                             (VOID*)&lpStr,
+                             0,
+                             &lArgs);
+        va_end(lArgs);
+
+        if (lpStr != NULL)
+        {
+            Ret = (BOOL)SendMessageW(hStatusBar,
+                                     SB_SETTEXT,
+                                     (WPARAM)PartId,
+                                     (LPARAM)lpStr);
+            LocalFree((HLOCAL)lpStr);
+        }
+
+        LocalFree((HLOCAL)lpFormat);
+    }
+
+    return Ret;
+}
+
+BOOL
+StatusBarLoadString(IN HWND hStatusBar,
+                    IN INT PartId,
+                    IN HINSTANCE hInstance,
+                    IN UINT uID)
+{
+    BOOL Ret = FALSE;
+    LPWSTR lpStr;
+
+    if (AllocAndLoadString(&lpStr,
+                           hInstance,
+                           uID) > 0)
+    {
+        Ret = (BOOL)SendMessageW(hStatusBar,
+                                 SB_SETTEXT,
+                                 (WPARAM)PartId,
+                                 (LPARAM)lpStr);
+        LocalFree((HLOCAL)lpStr);
+    }
+
+    return Ret;
+}
+
+
+INT
+GetTextFromEdit(OUT LPWSTR lpString,
+                IN HWND hDlg,
+                IN UINT Res)
+{
+    INT len = GetWindowTextLengthW(GetDlgItem(hDlg, Res));
+    if(len > 0)
+    {
+        GetDlgItemTextW(hDlg,
+                        Res,
+                        lpString,
+                        len + 1);
+    }
+    else
+        lpString = NULL;
+
+    return len;
+}
+
+VOID DisplayError(INT err)
+{
+    LPWSTR lpMsgBuf = NULL;
+
+    FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER |
+                   FORMAT_MESSAGE_FROM_SYSTEM |
+                   FORMAT_MESSAGE_IGNORE_INSERTS,
+                   NULL,
+                   err,
+                   MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
+                   (VOID*)&lpMsgBuf,
+                   0,
+                   NULL );
+
+    MessageBoxW(NULL, lpMsgBuf, L"Error!", MB_OK | MB_ICONERROR);
+
+    LocalFree(lpMsgBuf);
+}
+
+VOID DisplayString(LPWSTR lpMsg)
+{
+    MessageBoxW(NULL, lpMsg, L"Note!", MB_ICONEXCLAMATION|MB_OK);
+}
+
+
+
+HIMAGELIST
+InitImageList(UINT StartResource,
+              UINT EndResource,
+              UINT Width,
+              UINT Height)
+{
+    HBITMAP hBitmap;
+    HIMAGELIST hImageList;
+    UINT i;
+	INT Ret;
+
+    /* Create the toolbar icon image list */
+    hImageList = ImageList_Create(Width,
+                                  Height,
+                                  ILC_MASK | ILC_COLOR24,
+                                  EndResource - StartResource,
+                                  0);
+    if (hImageList == NULL)
+        return NULL;
+
+    /* Add all icons to the image list */
+    for (i = StartResource; i <= EndResource; i++)
+    {
+        hBitmap = (HBITMAP)LoadImage(hInstance,
+                                     MAKEINTRESOURCE(i),
+                                     IMAGE_BITMAP,
+                                     Width,
+                                     Height,
+                                     LR_LOADTRANSPARENT);
+        if (hBitmap == NULL)
+            return NULL;
+
+        Ret = ImageList_AddMasked(hImageList,
+                                  hBitmap,
+                                  RGB(255, 0, 128));
+        if (Ret == -1)
+            return NULL;
+
+        DeleteObject(hBitmap);
+    }
+
+    return hImageList;
+}

Propchange: trunk/rostests/winetests/GUI/misc.c
------------------------------------------------------------------------------
    svn:eol-style = native

Added: trunk/rostests/winetests/GUI/precomp.h
URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/GUI/precomp.h?rev=34016&view=auto
==============================================================================
--- trunk/rostests/winetests/GUI/precomp.h (added)
+++ trunk/rostests/winetests/GUI/precomp.h [iso-8859-1] Wed Jun 18 14:10:39 2008
@@ -1,0 +1,39 @@
+#ifndef __WINETESTGUI_PRECOMP_H
+#define __WINETESTGUI_PRECOMP_H
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <windows.h>
+#include <commctrl.h>
+#include "resource.h"
+
+extern HINSTANCE hInstance;
+
+typedef struct _MAIN_WND_INFO
+{
+    HWND  hMainWnd;
+    HWND  hBrowseDlg;
+    HWND  hStatus;
+    int   nCmdShow;
+
+    HICON hSmIcon;
+    HICON hBgIcon;
+
+    INT SelectedItem;/* selection number in the list view */
+    BOOL bDlgOpen;
+    BOOL bInMenuLoop;
+    BOOL bIsUserAnAdmin;
+
+    LPWSTR lpDllList;
+
+} MAIN_WND_INFO, *PMAIN_WND_INFO;
+
+
+/* browsewnd.c */
+BOOL CALLBACK BrowseDlgProc(HWND hDlg, UINT Message, WPARAM wParam, LPARAM lParam);
+
+/* misc.c */
+VOID DisplayString(LPWSTR lpMsg);
+VOID DisplayError(INT err);
+
+#endif /* __WINETESTGUI_PRECOMP_H */

Propchange: trunk/rostests/winetests/GUI/precomp.h
------------------------------------------------------------------------------
    svn:eol-style = native

Added: trunk/rostests/winetests/GUI/resource.h
URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/GUI/resource.h?rev=34016&view=auto
==============================================================================
--- trunk/rostests/winetests/GUI/resource.h (added)
+++ trunk/rostests/winetests/GUI/resource.h [iso-8859-1] Wed Jun 18 14:10:39 2008
@@ -1,0 +1,24 @@
+#define IDD_WINETESTGUI                 102
+#define IDD_TESTBROWSER                 103
+#define IDM_ABOUT                       104
+#define IDM_EXIT                        105
+#define IDI_ICON                        107
+#define IDI_SMALL                       108
+#define IDC_DELETE                      109
+#define IDR_MAINFRAME                   128
+#define IDC_LIST                        1000
+#define IDC_OUTPUT                      1001
+#define IDC_TESTSELECTION               1002
+#define IDC_BROWSE                      1003
+#define IDC_RUN                         1004
+#define IDC_PROGRESS                    1005
+#define IDC_NUMRUNS                     1006
+#define IDC_NUMERRORS                   1007
+#define IDC_NUMFAILURES                 1008
+#define IDC_STOP                        1010
+#define IDC_CHECK2                      1011
+#define IDC_RUNONSTART                  1011
+#define IDC_STATUS                      1012
+#define IDC_SELECT                      1020
+#define IDC_TREEVIEW                    1021
+#define IDC_STATIC                      -1

Propchange: trunk/rostests/winetests/GUI/resource.h
------------------------------------------------------------------------------
    svn:eol-style = native

Added: trunk/rostests/winetests/GUI/rsrc.rc
URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/GUI/rsrc.rc?rev=34016&view=auto
==============================================================================
--- trunk/rostests/winetests/GUI/rsrc.rc (added)
+++ trunk/rostests/winetests/GUI/rsrc.rc [iso-8859-1] Wed Jun 18 14:10:39 2008
@@ -1,0 +1,25 @@
+#include <windows.h>
+#include "resource.h"
+
+LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
+
+IDI_ICON ICON "res/charmap.ico"
+
+//#include "lang/bg-BG.rc"
+//#include "lang/ca-ES.rc"
+//#include "lang/cs-CZ.rc"
+#include "lang/en-US.rc"
+//#include "lang/de-DE.rc"
+//#include "lang/es-ES.rc"
+//#include "lang/fr-FR.rc"
+//#include "lang/id-ID.rc"
+//#include "lang/it-IT.rc"
+//#include "lang/ko-KO.rc"
+//#include "lang/lt-LT.rc"
+//#include "lang/nl-NL.rc"
+//#include "lang/pl-PL.rc"
+//#include "lang/pt-BR.rc"
+//#include "lang/sk-SK.rc"
+//#include "lang/uk-UA.rc"
+//#include "lang/ru-RU.rc"
+//#include "lang/el-GR.rc"

Propchange: trunk/rostests/winetests/GUI/rsrc.rc
------------------------------------------------------------------------------
    svn:eol-style = native



More information about the Ros-diffs mailing list