OleView: Added copy HTML tag functionality
Piotr Caban
piotr.caban at gmail.com
Thu Jun 22 13:00:11 CDT 2006
Hi,
Changelog:
- Added copy HTML tag functionality
programs/oleview/En.rc | 2 +-
programs/oleview/oleview.c | 34 +++++++++++++++++++++++++++++++++-
2 files changed, 34 insertions(+), 2 deletions(-)
--
Piotr
-------------- next part --------------
diff --git a/programs/oleview/En.rc b/programs/oleview/En.rc
index 354bd75..69ac82e 100644
--- a/programs/oleview/En.rc
+++ b/programs/oleview/En.rc
@@ -49,7 +49,7 @@ IDM_MENU MENU
MENUITEM "Create Instance &On", IDM_CREATEINSTON, GRAYED
MENUITEM "&Release Instance", IDM_RELEASEINST, GRAYED
MENUITEM SEPARATOR
- MENUITEM "Copy &CLSID to clipboard", IDM_COPYCLSID, GRAYED
+ MENUITEM "Copy C&LSID to clipboard", IDM_COPYCLSID, GRAYED
MENUITEM "Copy &HTML object Tag to clipboard", IDM_HTMLTAG, GRAYED
MENUITEM SEPARATOR
MENUITEM "&View...", IDM_VIEW, GRAYED
diff --git a/programs/oleview/oleview.c b/programs/oleview/oleview.c
index 3bebfe2..3bd6dbf 100644
--- a/programs/oleview/oleview.c
+++ b/programs/oleview/oleview.c
@@ -22,6 +22,9 @@ #include "main.h"
GLOBALS globals;
static WCHAR wszRegEdit[] = { 'r','e','g','e','d','i','t','.','e','x','e','\0' };
+static WCHAR wszFormat[] = { '<','o','b','j','e','c','t','\n',' ',' ',' ',
+ 'c','l','a','s','s','i','d','=','\"','c','l','s','i','d',':','%','s','\"','\n',
+ '>','\n','<','/','o','b','j','e','c','t','>' };
INT_PTR CALLBACK CreateInstOnProc(HWND hDlgWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
@@ -70,6 +73,31 @@ void CopyClsid(HTREEITEM item)
}
}
+void CopyHTMLTag(HTREEITEM item)
+{
+ TVITEM tvi;
+
+ memset(&tvi, 0, sizeof(TVITEM));
+ tvi.hItem = item;
+ tvi.cchTextMax = MAX_LOAD_STRING;
+ SendMessage(globals.hTree, TVM_GETITEM, 0, (LPARAM)&tvi);
+
+ if(OpenClipboard(globals.hMainWnd) && EmptyClipboard() && tvi.lParam)
+ {
+ HANDLE hClipData = GlobalAlloc(GHND, sizeof(WCHAR[MAX_LOAD_STRING]));
+ LPVOID pLoc = GlobalLock(hClipData);
+ int clsidLen = lstrlenW(((ITEM_INFO *)tvi.lParam)->clsid)-1;
+
+ ((ITEM_INFO *)tvi.lParam)->clsid[clsidLen] = '\0';
+ wsprintfW(pLoc, wszFormat, ((ITEM_INFO *)tvi.lParam)->clsid+1);
+ ((ITEM_INFO *)tvi.lParam)->clsid[clsidLen] = '}';
+
+ GlobalUnlock(hClipData);
+ hClipData = SetClipboardData(CF_UNICODETEXT, hClipData);
+ CloseClipboard();
+ }
+}
+
void ResizeChild(void)
{
RECT client, stat, tool;
@@ -150,7 +178,7 @@ void RefreshMenu(HTREEITEM item)
EnableMenuItem(hMenu, IDM_VIEW, MF_GRAYED);
}
parent = TreeView_GetParent(globals.hTree, item);
- if(parent==tree.hAID || parent==tree.hGBCC)
+ if(parent==tree.hAID || parent==tree.hGBCC || parent==tree.hTL)
EnableMenuItem(hMenu, IDM_COPYCLSID, MF_ENABLED);
}
@@ -174,6 +202,10 @@ int MenuCommand(WPARAM wParam, HWND hWnd
hSelect = TreeView_GetSelection(globals.hTree);
CopyClsid(hSelect);
break;
+ case IDM_HTMLTAG:
+ hSelect = TreeView_GetSelection(globals.hTree);
+ CopyHTMLTag(hSelect);
+ break;
case IDM_CREATEINST:
hSelect = TreeView_GetSelection(globals.hTree);
CreateInst(hSelect, NULL);
More information about the wine-patches
mailing list