From f08c5c2ccf572af0083557e0736873972a219c9d Mon Sep 17 00:00:00 2001 From: Huw Davies Date: Wed, 18 Oct 2006 16:59:35 +0100 Subject: [PATCH] oledlg: Debugging code to dump the OLEUIPASTESPECIAL structure. --- dlls/oledlg/pastespl.c | 75 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 71 insertions(+), 4 deletions(-) diff --git a/dlls/oledlg/pastespl.c b/dlls/oledlg/pastespl.c index b1469836fa5..94547ddae0b 100644 --- a/dlls/oledlg/pastespl.c +++ b/dlls/oledlg/pastespl.c @@ -31,6 +31,70 @@ 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(LPOLEUIPASTESPECIALA lpOleUIPasteSpecial) /*********************************************************************** * 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; }