Huw Davies : oledlg: Debugging code to dump the OLEUIPASTESPECIAL structure .

Alexandre Julliard julliard at wine.codeweavers.com
Fri Oct 20 04:45:49 CDT 2006


Module: wine
Branch: master
Commit: f08c5c2ccf572af0083557e0736873972a219c9d
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=f08c5c2ccf572af0083557e0736873972a219c9d

Author: Huw Davies <huw at codeweavers.com>
Date:   Wed Oct 18 16:59:35 2006 +0100

oledlg: Debugging code to dump the OLEUIPASTESPECIAL structure.

---

 dlls/oledlg/pastespl.c |   75 +++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 71 insertions(+), 4 deletions(-)

diff --git a/dlls/oledlg/pastespl.c b/dlls/oledlg/pastespl.c
index b146983..94547dd 100644
--- a/dlls/oledlg/pastespl.c
+++ b/dlls/oledlg/pastespl.c
@@ -31,6 +31,70 @@ #include "wine/debug.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(ole);
 
+static const struct ps_flag
+{
+    DWORD flag;
+    const char *name;
+} ps_flags[] = {
+#define PS_FLAG_ENTRY(p) {p, #p}
+    PS_FLAG_ENTRY(PSF_SHOWHELP),
+    PS_FLAG_ENTRY(PSF_SELECTPASTE),
+    PS_FLAG_ENTRY(PSF_SELECTPASTELINK),
+    PS_FLAG_ENTRY(PSF_CHECKDISPLAYASICON),
+    PS_FLAG_ENTRY(PSF_DISABLEDISPLAYASICON),
+    PS_FLAG_ENTRY(PSF_HIDECHANGEICON),
+    PS_FLAG_ENTRY(PSF_STAYONCLIPBOARDCHANGE),
+    PS_FLAG_ENTRY(PSF_NOREFRESHDATAOBJECT),
+    {-1, NULL}
+#undef PS_FLAG_ENTRY
+};
+
+static void dump_ps_flags(DWORD flags)
+{
+    char flagstr[1000] = "";
+
+    const struct ps_flag *flag = ps_flags;
+    for( ; flag->name; flag++) {
+        if(flags & flag->flag) {
+            strcat(flagstr, flag->name);
+            strcat(flagstr, "|");
+        }
+    }
+    TRACE("flags %08x %s\n", flags, flagstr);
+}
+
+static void dump_pastespecial(LPOLEUIPASTESPECIALW ps)
+{
+    UINT i;
+    dump_ps_flags(ps->dwFlags);
+    TRACE("hwnd %p caption %s hook %p custdata %lx\n",
+          ps->hWndOwner, debugstr_w(ps->lpszCaption), ps->lpfnHook, ps->lCustData);
+    if(IS_INTRESOURCE(ps->lpszTemplate))
+        TRACE("hinst %p template %04x hresource %p\n", ps->hInstance, (WORD)(ULONG_PTR)ps->lpszTemplate, ps->hResource);
+    else
+        TRACE("hinst %p template %s hresource %p\n", ps->hInstance, debugstr_w(ps->lpszTemplate), ps->hResource);
+    TRACE("dataobj %p arrpasteent %p cpasteent %d arrlinktype %p clinktype %d\n",
+          ps->lpSrcDataObj, ps->arrPasteEntries, ps->cPasteEntries,
+          ps->arrLinkTypes, ps->cLinkTypes);
+    TRACE("cclsidex %d lpclsidex %p nselect %d flink %d hmetapict %p size(%d,%d)\n",
+          ps->cClsidExclude, ps->lpClsidExclude, ps->nSelectedIndex, ps->fLink,
+          ps->hMetaPict, ps->sizel.cx, ps->sizel.cy);
+    for(i = 0; i < ps->cPasteEntries; i++)
+    {
+        TRACE("arrPasteEntries[%d]: cFormat %08x pTargetDevice %p dwAspect %d lindex %d tymed %d\n",
+              i, ps->arrPasteEntries[i].fmtetc.cfFormat, ps->arrPasteEntries[i].fmtetc.ptd,
+              ps->arrPasteEntries[i].fmtetc.dwAspect, ps->arrPasteEntries[i].fmtetc.lindex,
+              ps->arrPasteEntries[i].fmtetc.tymed);
+        TRACE("\tformat name %s result text %s flags %04x\n", debugstr_w(ps->arrPasteEntries[i].lpstrFormatName),
+              debugstr_w(ps->arrPasteEntries[i].lpstrResultText), ps->arrPasteEntries[i].dwFlags);
+    }
+    for(i = 0; i < ps->cLinkTypes; i++)
+        TRACE("arrLinkTypes[%d] %08x\n", i, ps->arrLinkTypes[i]);
+    for(i = 0; i < ps->cClsidExclude; i++)
+        TRACE("lpClsidExclude[%d] %s\n", i, debugstr_guid(&ps->lpClsidExclude[i]));
+
+}
+
 /***********************************************************************
  *           OleUIPasteSpecialA (OLEDLG.4)
  */
@@ -44,9 +108,12 @@ UINT WINAPI OleUIPasteSpecialA(LPOLEUIPA
 /***********************************************************************
  *           OleUIPasteSpecialW (OLEDLG.22)
  */
-UINT WINAPI OleUIPasteSpecialW(LPOLEUIPASTESPECIALW lpOleUIPasteSpecial)
+UINT WINAPI OleUIPasteSpecialW(LPOLEUIPASTESPECIALW ps)
 {
-  FIXME("(%p): stub\n", lpOleUIPasteSpecial);
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return OLEUI_FALSE;
+    TRACE("(%p)\n", ps);
+
+    if(TRACE_ON(ole)) dump_pastespecial(ps);
+
+    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+    return OLEUI_FALSE;
 }




More information about the wine-cvs mailing list