[ros-diffs] [gedmurphy] 24573: - test app to display both the system and device image lists. - this app confirms the overlay icons in the device image list are part of the list.

gedmurphy at svn.reactos.org gedmurphy at svn.reactos.org
Thu Oct 19 18:55:12 CEST 2006


Author: gedmurphy
Date: Thu Oct 19 20:55:11 2006
New Revision: 24573

URL: http://svn.reactos.org/svn/reactos?rev=24573&view=rev
Log:
- test app to display both the system and device image lists.
- this app confirms the overlay icons in the device image list are part of the list.

Added:
    trunk/rosapps/tests/Imagelistviewer/
    trunk/rosapps/tests/Imagelistviewer/imagelistviewer.rbuild
    trunk/rosapps/tests/Imagelistviewer/main.c
    trunk/rosapps/tests/Imagelistviewer/res.rc
    trunk/rosapps/tests/Imagelistviewer/resource.h
Modified:
    trunk/rosapps/tests/directory.rbuild

Added: trunk/rosapps/tests/Imagelistviewer/imagelistviewer.rbuild
URL: http://svn.reactos.org/svn/reactos/trunk/rosapps/tests/Imagelistviewer/imagelistviewer.rbuild?rev=24573&view=auto
==============================================================================
--- trunk/rosapps/tests/Imagelistviewer/imagelistviewer.rbuild (added)
+++ trunk/rosapps/tests/Imagelistviewer/imagelistviewer.rbuild Thu Oct 19 20:55:11 2006
@@ -1,0 +1,12 @@
+<module name="imagelistviewer" type="win32gui" installbase="bin" installname="imagelistviewer.exe">
+	<define name="_WIN32_IE">0x0501</define>
+	<define name="_WIN32_WINNT">0x0501</define>
+	<define name="__USE_W32API" />
+	<include base="imagelistviewer">.</include>
+	<library>kernel32</library>
+	<library>user32</library>
+	<library>setupapi</library>
+	<library>comctl32</library>
+	<file>main.c</file>
+	<file>res.rc</file>
+</module>

Added: trunk/rosapps/tests/Imagelistviewer/main.c
URL: http://svn.reactos.org/svn/reactos/trunk/rosapps/tests/Imagelistviewer/main.c?rev=24573&view=auto
==============================================================================
--- trunk/rosapps/tests/Imagelistviewer/main.c (added)
+++ trunk/rosapps/tests/Imagelistviewer/main.c Thu Oct 19 20:55:11 2006
@@ -1,0 +1,145 @@
+#include <windows.h>
+#include <setupapi.h>
+#include <tchar.h>
+#include "resource.h"
+
+typedef BOOL (WINAPI * SH_GIL_PROC)(HIMAGELIST *phLarge, HIMAGELIST *phSmall);
+typedef BOOL (WINAPI * FII_PROC)(BOOL fFullInit);
+
+/*** Shell32 undoc'd functions ***/
+  /* Shell_GetImageLists  @71  */
+  /* FileIconInit         @660 */
+
+BOOL
+DisplayImageList(HWND hwnd,
+                 UINT uID)
+{
+    HWND hLV;
+    SP_CLASSIMAGELIST_DATA ImageListData;
+    LV_ITEM lvItem;
+    TCHAR Buf[6];
+    INT ImageListCount = -1;
+    INT i = 0;
+
+    hLV = GetDlgItem(hwnd, IDC_LSTVIEW);
+    (void)ListView_DeleteAllItems(hLV);
+
+    if (uID == IDC_SYSTEM)
+    {
+        HIMAGELIST hLarge, hSmall;
+        HMODULE      hShell32;
+        SH_GIL_PROC  Shell_GetImageLists;
+        FII_PROC     FileIconInit;
+
+        hShell32 = LoadLibrary(_T("shell32.dll"));
+        if(hShell32 == NULL)
+            return FALSE;
+
+        Shell_GetImageLists = (SH_GIL_PROC)GetProcAddress(hShell32, (LPCSTR)71);
+        FileIconInit = (FII_PROC)GetProcAddress(hShell32, (LPCSTR)660);
+
+        if(Shell_GetImageLists == NULL || FileIconInit == NULL)
+        {
+            FreeLibrary(hShell32);
+            return FALSE;
+        }
+
+        FileIconInit(TRUE);
+
+        Shell_GetImageLists(&hLarge, &hSmall);
+
+        ImageListCount = ImageList_GetImageCount(hSmall);
+
+        (void)ListView_SetImageList(hLV,
+                                    hSmall,
+                                    LVSIL_SMALL);
+
+        FreeLibrary(hShell32);
+    }
+    else if (uID == IDC_DEVICE)
+    {
+        ImageListData.cbSize = sizeof(SP_CLASSIMAGELIST_DATA);
+        SetupDiGetClassImageList(&ImageListData);
+
+        ImageListCount = ImageList_GetImageCount(ImageListData.ImageList);
+
+        (void)ListView_SetImageList(hLV,
+                                    ImageListData.ImageList,
+                                    LVSIL_SMALL);
+    }
+    else
+        return FALSE;
+
+    lvItem.mask = LVIF_TEXT | LVIF_IMAGE;
+
+    while (i <= ImageListCount)
+    {
+        lvItem.iItem = i;
+        lvItem.iSubItem = 0;
+        lvItem.pszText = _itot(i, Buf, 10);
+        lvItem.iImage = i;
+
+        (void)ListView_InsertItem(hLV, &lvItem);
+
+        i++;
+    }
+
+    return TRUE;
+}
+
+
+BOOL CALLBACK
+DlgProc(HWND hwnd,
+        UINT message,
+        WPARAM wParam,
+        LPARAM lParam)
+{
+    switch (message)
+    {
+        case WM_INITDIALOG:
+            DisplayImageList(hwnd, IDC_SYSTEM);
+            return TRUE;
+
+        case WM_CLOSE:
+            EndDialog(hwnd, 0);
+            return TRUE;
+
+        case WM_COMMAND:
+        {
+            switch(LOWORD(wParam))
+            {
+                case IDOK:
+                    EndDialog(hwnd, 0);
+                    return TRUE;
+
+                case IDC_SYSTEM:
+                    DisplayImageList(hwnd, IDC_SYSTEM);
+                    return TRUE;
+
+                case IDC_DEVICE:
+                    DisplayImageList(hwnd, IDC_DEVICE);
+                    return TRUE;
+            }
+        }
+    }
+
+    return FALSE;
+}
+
+int WINAPI
+WinMain(HINSTANCE hThisInstance,
+        HINSTANCE hPrevInstance,
+        LPSTR lpszArgument,
+        int nCmdShow)
+{
+    INITCOMMONCONTROLSEX icex;
+
+    icex.dwSize = sizeof(INITCOMMONCONTROLSEX);
+    icex.dwICC = ICC_BAR_CLASSES | ICC_COOL_CLASSES;
+    InitCommonControlsEx(&icex);
+
+    return DialogBox(hThisInstance,
+                     MAKEINTRESOURCE(IDD_IMGLST),
+                     NULL,
+                     (DLGPROC)DlgProc);
+}

Added: trunk/rosapps/tests/Imagelistviewer/res.rc
URL: http://svn.reactos.org/svn/reactos/trunk/rosapps/tests/Imagelistviewer/res.rc?rev=24573&view=auto
==============================================================================
--- trunk/rosapps/tests/Imagelistviewer/res.rc (added)
+++ trunk/rosapps/tests/Imagelistviewer/res.rc Thu Oct 19 20:55:11 2006
@@ -1,0 +1,14 @@
+#include <windows.h>
+#include <commctrl.h>
+#include "resource.h"
+
+IDD_IMGLST DIALOGEX 6,6,303,216
+CAPTION "Imagelist Viewer"
+FONT 8, "MS Sans Serif", 0, 0
+STYLE WS_BORDER | WS_VISIBLE | WS_SYSMENU
+BEGIN
+  CONTROL "", IDC_LSTVIEW, "SysListView32", WS_CHILD | WS_VISIBLE | WS_BORDER | LVS_LIST | LVS_SMALLICON | LVS_SHAREIMAGELISTS, 0, 0, 302, 200
+  DEFPUSHBUTTON "System IL", IDC_SYSTEM, 2, 202, 54, 13
+  PUSHBUTTON "Device IL", IDC_DEVICE, 60, 202, 54, 13
+  PUSHBUTTON "Close", IDOK, 248, 202, 54, 13
+END

Added: trunk/rosapps/tests/Imagelistviewer/resource.h
URL: http://svn.reactos.org/svn/reactos/trunk/rosapps/tests/Imagelistviewer/resource.h?rev=24573&view=auto
==============================================================================
--- trunk/rosapps/tests/Imagelistviewer/resource.h (added)
+++ trunk/rosapps/tests/Imagelistviewer/resource.h Thu Oct 19 20:55:11 2006
@@ -1,0 +1,4 @@
+#define IDD_IMGLST  1000
+#define IDC_LSTVIEW 1001
+#define IDC_SYSTEM  1002
+#define IDC_DEVICE  1003

Modified: trunk/rosapps/tests/directory.rbuild
URL: http://svn.reactos.org/svn/reactos/trunk/rosapps/tests/directory.rbuild?rev=24573&r1=24572&r2=24573&view=diff
==============================================================================
--- trunk/rosapps/tests/directory.rbuild (original)
+++ trunk/rosapps/tests/directory.rbuild Thu Oct 19 20:55:11 2006
@@ -112,6 +112,9 @@
 <directory name="icontest">
 	<xi:include href="icontest/icontest.rbuild" />
 </directory>
+<directory name="imagelistviewer">
+	<xi:include href="imagelistviewer/imagelistviewer.rbuild" />
+</directory>
 
 <!-- fixme: iptest -->
 




More information about the Ros-diffs mailing list