oleview: Added propper ClassName displaying to interface viewer

Piotr Caban piotr.caban at gmail.com
Sat Jun 24 04:56:55 CDT 2006


Hi,

Changelog:
 - Added proper ClassName displaying to interface viewer

 programs/oleview/interface.c |   25 +++++++++++++++++++------
 1 files changed, 19 insertions(+), 6 deletions(-)

--
Piotr

-------------- next part --------------
diff --git a/programs/oleview/interface.c b/programs/oleview/interface.c
index 5eb1b98..69ab616 100644
--- a/programs/oleview/interface.c
+++ b/programs/oleview/interface.c
@@ -110,24 +110,28 @@ INT_PTR CALLBACK InterfaceViewerProc(HWN
     return FALSE;
 }
 
-void IPersistStreamInterfaceViewer(WCHAR *clsid)
+void IPersistStreamInterfaceViewer(WCHAR *clsid, WCHAR *wszName)
 {
     DIALOG_INFO di;
     WCHAR wszClassMoniker[] = { 'C','l','a','s','s','M','o','n','i','k','e','r','\0' };
 
-    di.wszLabel = wszClassMoniker;
+    if(wszName[0] == '{')
+        di.wszLabel = wszClassMoniker;
+    else di.wszLabel = wszName;
     di.wszIdentifier = clsid;
 
     DialogBoxParam(0, MAKEINTRESOURCE(DLG_IPERSISTSTREAM_IV),
             globals.hMainWnd, InterfaceViewerProc, (LPARAM)&di);
 }
 
-void IPersistInterfaceViewer(WCHAR *clsid)
+void IPersistInterfaceViewer(WCHAR *clsid, WCHAR *wszName)
 {
     DIALOG_INFO di;
     WCHAR wszClassMoniker[] = { 'C','l','a','s','s','M','o','n','i','k','e','r','\0' };
 
-    di.wszLabel = wszClassMoniker;
+    if(wszName[0] == '{')
+        di.wszLabel = wszClassMoniker;
+    else di.wszLabel = wszName;
     di.wszIdentifier = clsid;
 
     DialogBoxParam(0, MAKEINTRESOURCE(DLG_IPERSIST_IV),
@@ -150,6 +154,7 @@ void InterfaceViewer(HTREEITEM item)
     TVITEM tvi;
     WCHAR *clsid;
     WCHAR wszName[MAX_LOAD_STRING];
+    WCHAR wszParent[MAX_LOAD_STRING];
     WCHAR wszIPersistStream[] = { '{','0','0','0','0','0','1','0','9','-',
         '0','0','0','0','-','0','0','0','0','-','C','0','0','0','-',
         '0','0','0','0','0','0','0','0','0','0','4','6','}','\0' };
@@ -166,11 +171,19 @@ void InterfaceViewer(HTREEITEM item)
     SendMessage(globals.hTree, TVM_GETITEM, 0, (LPARAM)&tvi);
     clsid = ((ITEM_INFO*)tvi.lParam)->clsid;
 
+    memset(&tvi, 0, sizeof(TVITEM));
+    tvi.mask = TVIF_TEXT;
+    tvi.hItem = TreeView_GetParent(globals.hTree, item);
+    tvi.cchTextMax = MAX_LOAD_STRING;
+    tvi.pszText = wszParent;
+
+    SendMessage(globals.hTree, TVM_GETITEM, 0, (LPARAM)&tvi);
+
     if(!memcmp(clsid, wszIPersistStream, sizeof(wszIPersistStream)))
-        IPersistStreamInterfaceViewer(clsid);
+        IPersistStreamInterfaceViewer(clsid, wszParent);
 
     else if(!memcmp(clsid, wszIPersist, sizeof(wszIPersist)))
-        IPersistInterfaceViewer(clsid);
+        IPersistInterfaceViewer(clsid, wszParent);
 
     else DefaultInterfaceViewer(clsid, wszName);
 }


More information about the wine-patches mailing list