[PATCH 8/8] comdlg32: Add IFileDialogCustomize interface stub.

David Hedberg david.hedberg at gmail.com
Tue May 24 14:09:53 CDT 2011


---
 dlls/comdlg32/itemdlg.c       |  314 +++++++++++++++++++++++++++++++++++++++++
 dlls/comdlg32/tests/itemdlg.c |   15 ++-
 2 files changed, 327 insertions(+), 2 deletions(-)

diff --git a/dlls/comdlg32/itemdlg.c b/dlls/comdlg32/itemdlg.c
index 11db9c9..a1d61e8 100644
--- a/dlls/comdlg32/itemdlg.c
+++ b/dlls/comdlg32/itemdlg.c
@@ -42,6 +42,11 @@
 #define IDC_NAVBACK          201
 #define IDC_NAVFORWARD       202
 
+#include <initguid.h>
+/* This seems to be another version of IID_IFileDialogCustomize. If
+ * there is any difference I have yet to find it. */
+DEFINE_GUID(IID_IFileDialogCustomizeAlt, 0x8016B7B3, 0x3D49, 0x4504, 0xA0,0xAA, 0x2A,0x37,0x49,0x4E,0x60,0x6F);
+
 WINE_DEFAULT_DEBUG_CHANNEL(commdlg);
 
 enum ITEMDLG_TYPE {
@@ -66,6 +71,7 @@ typedef struct FileDialogImpl {
     IServiceProvider       IServiceProvider_iface;
     ICommDlgBrowser3       ICommDlgBrowser3_iface;
     IOleWindow             IOleWindow_iface;
+    IFileDialogCustomize   IFileDialogCustomize_iface;
     LONG ref;
 
     FILEOPENDIALOGOPTIONS options;
@@ -1007,6 +1013,11 @@ static HRESULT WINAPI IFileDialog2_fnQueryInterface(IFileDialog2 *iface,
     {
         *ppvObject = &This->IOleWindow_iface;
     }
+    else if(IsEqualGUID(riid, &IID_IFileDialogCustomize) ||
+            IsEqualGUID(riid, &IID_IFileDialogCustomizeAlt))
+    {
+        *ppvObject = &This->IFileDialogCustomize_iface;
+    }
     else
         FIXME("Unknown interface requested: %s.\n", debugstr_guid(riid));
 
@@ -2357,6 +2368,308 @@ static const IOleWindowVtbl vt_IOleWindow = {
     IOleWindow_fnContextSensitiveHelp
 };
 
+/**************************************************************************
+ * IFileDialogCustomize implementation
+ */
+static inline FileDialogImpl *impl_from_IFileDialogCustomize(IFileDialogCustomize *iface)
+{
+    return CONTAINING_RECORD(iface, FileDialogImpl, IFileDialogCustomize_iface);
+}
+
+static HRESULT WINAPI IFileDialogCustomize_fnQueryInterface(IFileDialogCustomize *iface,
+                                                            REFIID riid, void **ppvObject)
+{
+    FileDialogImpl *This = impl_from_IFileDialogCustomize(iface);
+    return IFileDialog2_QueryInterface(&This->IFileDialog2_iface, riid, ppvObject);
+}
+
+static ULONG WINAPI IFileDialogCustomize_fnAddRef(IFileDialogCustomize *iface)
+{
+    FileDialogImpl *This = impl_from_IFileDialogCustomize(iface);
+    return IFileDialog2_AddRef(&This->IFileDialog2_iface);
+}
+
+static ULONG WINAPI IFileDialogCustomize_fnRelease(IFileDialogCustomize *iface)
+{
+    FileDialogImpl *This = impl_from_IFileDialogCustomize(iface);
+    return IFileDialog2_Release(&This->IFileDialog2_iface);
+}
+
+static HRESULT WINAPI IFileDialogCustomize_fnEnableOpenDropDown(IFileDialogCustomize *iface,
+                                                                DWORD dwIDCtl)
+{
+    FileDialogImpl *This = impl_from_IFileDialogCustomize(iface);
+    FIXME("stub - %p (%d)\n", This, dwIDCtl);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IFileDialogCustomize_fnAddMenu(IFileDialogCustomize *iface,
+                                                     DWORD dwIDCtl,
+                                                     LPCWSTR pszLabel)
+{
+    FileDialogImpl *This = impl_from_IFileDialogCustomize(iface);
+    FIXME("stub - %p (%d, %s)\n", This, dwIDCtl, debugstr_w(pszLabel));
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IFileDialogCustomize_fnAddPushButton(IFileDialogCustomize *iface,
+                                                           DWORD dwIDCtl,
+                                                           LPCWSTR pszLabel)
+{
+    FileDialogImpl *This = impl_from_IFileDialogCustomize(iface);
+    FIXME("stub - %p (%d, %s)\n", This, dwIDCtl, debugstr_w(pszLabel));
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IFileDialogCustomize_fnAddComboBox(IFileDialogCustomize *iface,
+                                                         DWORD dwIDCtl)
+{
+    FileDialogImpl *This = impl_from_IFileDialogCustomize(iface);
+    FIXME("stub - %p (%d)\n", This, dwIDCtl);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IFileDialogCustomize_fnAddRadioButtonList(IFileDialogCustomize *iface,
+                                                                DWORD dwIDCtl)
+{
+    FileDialogImpl *This = impl_from_IFileDialogCustomize(iface);
+    FIXME("stub - %p (%d)\n", This, dwIDCtl);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IFileDialogCustomize_fnAddCheckButton(IFileDialogCustomize *iface,
+                                                            DWORD dwIDCtl,
+                                                            LPCWSTR pszLabel,
+                                                            BOOL bChecked)
+{
+    FileDialogImpl *This = impl_from_IFileDialogCustomize(iface);
+    FIXME("stub - %p (%d, %s, %d)\n", This, dwIDCtl, debugstr_w(pszLabel), bChecked);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IFileDialogCustomize_fnAddEditBox(IFileDialogCustomize *iface,
+                                                        DWORD dwIDCtl,
+                                                        LPCWSTR pszText)
+{
+    FileDialogImpl *This = impl_from_IFileDialogCustomize(iface);
+    FIXME("stub - %p (%d, %s)\n", This, dwIDCtl, debugstr_w(pszText));
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IFileDialogCustomize_fnAddSeparator(IFileDialogCustomize *iface,
+                                                          DWORD dwIDCtl)
+{
+    FileDialogImpl *This = impl_from_IFileDialogCustomize(iface);
+    FIXME("stub - %p (%d)\n", This, dwIDCtl);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IFileDialogCustomize_fnAddText(IFileDialogCustomize *iface,
+                                                     DWORD dwIDCtl,
+                                                     LPCWSTR pszText)
+{
+    FileDialogImpl *This = impl_from_IFileDialogCustomize(iface);
+    FIXME("stub - %p (%d, %s)\n", This, dwIDCtl, debugstr_w(pszText));
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IFileDialogCustomize_fnSetControlLabel(IFileDialogCustomize *iface,
+                                                             DWORD dwIDCtl,
+                                                             LPCWSTR pszLabel)
+{
+    FileDialogImpl *This = impl_from_IFileDialogCustomize(iface);
+    FIXME("stub - %p (%d, %s)\n", This, dwIDCtl, debugstr_w(pszLabel));
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IFileDialogCustomize_fnGetControlState(IFileDialogCustomize *iface,
+                                                             DWORD dwIDCtl,
+                                                             CDCONTROLSTATEF *pdwState)
+{
+    FileDialogImpl *This = impl_from_IFileDialogCustomize(iface);
+    FIXME("stub - %p (%d, %p)\n", This, dwIDCtl, pdwState);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IFileDialogCustomize_fnSetControlState(IFileDialogCustomize *iface,
+                                                             DWORD dwIDCtl,
+                                                             CDCONTROLSTATEF dwState)
+{
+    FileDialogImpl *This = impl_from_IFileDialogCustomize(iface);
+    FIXME("stub - %p (%d, %x)\n", This, dwIDCtl, dwState);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IFileDialogCustomize_fnGetEditBoxText(IFileDialogCustomize *iface,
+                                                            DWORD dwIDCtl,
+                                                            WCHAR **ppszText)
+{
+    FileDialogImpl *This = impl_from_IFileDialogCustomize(iface);
+    FIXME("stub - %p (%d, %p)\n", This, dwIDCtl, ppszText);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IFileDialogCustomize_fnSetEditBoxText(IFileDialogCustomize *iface,
+                                                            DWORD dwIDCtl,
+                                                            LPCWSTR pszText)
+{
+    FileDialogImpl *This = impl_from_IFileDialogCustomize(iface);
+    FIXME("stub - %p (%d, %s)\n", This, dwIDCtl, debugstr_w(pszText));
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IFileDialogCustomize_fnGetCheckButtonState(IFileDialogCustomize *iface,
+                                                                 DWORD dwIDCtl,
+                                                                 BOOL *pbChecked)
+{
+    FileDialogImpl *This = impl_from_IFileDialogCustomize(iface);
+    FIXME("stub - %p (%d, %p)\n", This, dwIDCtl, pbChecked);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IFileDialogCustomize_fnSetCheckButtonState(IFileDialogCustomize *iface,
+                                                                 DWORD dwIDCtl,
+                                                                 BOOL bChecked)
+{
+    FileDialogImpl *This = impl_from_IFileDialogCustomize(iface);
+    FIXME("stub - %p (%d, %d)\n", This, dwIDCtl, bChecked);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IFileDialogCustomize_fnAddControlItem(IFileDialogCustomize *iface,
+                                                            DWORD dwIDCtl,
+                                                            DWORD dwIDItem,
+                                                            LPCWSTR pszLabel)
+{
+    FileDialogImpl *This = impl_from_IFileDialogCustomize(iface);
+    FIXME("stub - %p (%d, %d, %s)\n", This, dwIDCtl, dwIDItem, debugstr_w(pszLabel));
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IFileDialogCustomize_fnRemoveControlItem(IFileDialogCustomize *iface,
+                                                               DWORD dwIDCtl,
+                                                               DWORD dwIDItem)
+{
+    FileDialogImpl *This = impl_from_IFileDialogCustomize(iface);
+    FIXME("stub - %p (%d, %d)\n", This, dwIDCtl, dwIDItem);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IFileDialogCustomize_fnRemoveAllControlItems(IFileDialogCustomize *iface,
+                                                                   DWORD dwIDCtl)
+{
+    FileDialogImpl *This = impl_from_IFileDialogCustomize(iface);
+    TRACE("%p (%d)\n", This, dwIDCtl);
+
+    /* Not implemented by native */
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IFileDialogCustomize_fnGetControlItemState(IFileDialogCustomize *iface,
+                                                                 DWORD dwIDCtl,
+                                                                 DWORD dwIDItem,
+                                                                 CDCONTROLSTATEF *pdwState)
+{
+    FileDialogImpl *This = impl_from_IFileDialogCustomize(iface);
+    FIXME("stub - %p\n", This);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IFileDialogCustomize_fnSetControlItemState(IFileDialogCustomize *iface,
+                                                                 DWORD dwIDCtl,
+                                                                 DWORD dwIDItem,
+                                                                 CDCONTROLSTATEF dwState)
+{
+    FileDialogImpl *This = impl_from_IFileDialogCustomize(iface);
+    FIXME("stub - %p\n", This);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IFileDialogCustomize_fnGetSelectedControlItem(IFileDialogCustomize *iface,
+                                                                    DWORD dwIDCtl,
+                                                                    DWORD *pdwIDItem)
+{
+    FileDialogImpl *This = impl_from_IFileDialogCustomize(iface);
+    FIXME("stub - %p\n", This);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IFileDialogCustomize_fnSetSelectedControlItem(IFileDialogCustomize *iface,
+                                                                    DWORD dwIDCtl,
+                                                                    DWORD dwIDItem)
+{
+    FileDialogImpl *This = impl_from_IFileDialogCustomize(iface);
+    FIXME("stub - %p (%d, %d)\n", This, dwIDCtl, dwIDItem);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IFileDialogCustomize_fnStartVisualGroup(IFileDialogCustomize *iface,
+                                                              DWORD dwIDCtl,
+                                                              LPCWSTR pszLabel)
+{
+    FileDialogImpl *This = impl_from_IFileDialogCustomize(iface);
+    FIXME("stub - %p (%d, %s)\n", This, dwIDCtl, debugstr_w(pszLabel));
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IFileDialogCustomize_fnEndVisualGroup(IFileDialogCustomize *iface)
+{
+    FileDialogImpl *This = impl_from_IFileDialogCustomize(iface);
+    FIXME("stub - %p\n", This);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IFileDialogCustomize_fnMakeProminent(IFileDialogCustomize *iface,
+                                                           DWORD dwIDCtl)
+{
+    FileDialogImpl *This = impl_from_IFileDialogCustomize(iface);
+    FIXME("stub - %p (%d)\n", This, dwIDCtl);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IFileDialogCustomize_fnSetControlItemText(IFileDialogCustomize *iface,
+                                                                DWORD dwIDCtl,
+                                                                DWORD dwIDItem,
+                                                                LPCWSTR pszLabel)
+{
+    FileDialogImpl *This = impl_from_IFileDialogCustomize(iface);
+    FIXME("stub - %p (%d, %d, %p)\n", This, dwIDCtl, dwIDItem, debugstr_w(pszLabel));
+    return E_NOTIMPL;
+}
+
+const IFileDialogCustomizeVtbl vt_IFileDialogCustomize = {
+    IFileDialogCustomize_fnQueryInterface,
+    IFileDialogCustomize_fnAddRef,
+    IFileDialogCustomize_fnRelease,
+    IFileDialogCustomize_fnEnableOpenDropDown,
+    IFileDialogCustomize_fnAddMenu,
+    IFileDialogCustomize_fnAddPushButton,
+    IFileDialogCustomize_fnAddComboBox,
+    IFileDialogCustomize_fnAddRadioButtonList,
+    IFileDialogCustomize_fnAddCheckButton,
+    IFileDialogCustomize_fnAddEditBox,
+    IFileDialogCustomize_fnAddSeparator,
+    IFileDialogCustomize_fnAddText,
+    IFileDialogCustomize_fnSetControlLabel,
+    IFileDialogCustomize_fnGetControlState,
+    IFileDialogCustomize_fnSetControlState,
+    IFileDialogCustomize_fnGetEditBoxText,
+    IFileDialogCustomize_fnSetEditBoxText,
+    IFileDialogCustomize_fnGetCheckButtonState,
+    IFileDialogCustomize_fnSetCheckButtonState,
+    IFileDialogCustomize_fnAddControlItem,
+    IFileDialogCustomize_fnRemoveControlItem,
+    IFileDialogCustomize_fnRemoveAllControlItems,
+    IFileDialogCustomize_fnGetControlItemState,
+    IFileDialogCustomize_fnSetControlItemState,
+    IFileDialogCustomize_fnGetSelectedControlItem,
+    IFileDialogCustomize_fnSetSelectedControlItem,
+    IFileDialogCustomize_fnStartVisualGroup,
+    IFileDialogCustomize_fnEndVisualGroup,
+    IFileDialogCustomize_fnMakeProminent,
+    IFileDialogCustomize_fnSetControlItemText
+};
+
 static HRESULT FileDialog_constructor(IUnknown *pUnkOuter, REFIID riid, void **ppv, enum ITEMDLG_TYPE type)
 {
     FileDialogImpl *fdimpl;
@@ -2379,6 +2692,7 @@ static HRESULT FileDialog_constructor(IUnknown *pUnkOuter, REFIID riid, void **p
     fdimpl->IServiceProvider_iface.lpVtbl = &vt_IServiceProvider;
     fdimpl->ICommDlgBrowser3_iface.lpVtbl = &vt_ICommDlgBrowser3;
     fdimpl->IOleWindow_iface.lpVtbl = &vt_IOleWindow;
+    fdimpl->IFileDialogCustomize_iface.lpVtbl = &vt_IFileDialogCustomize;
 
     if(type == ITEMDLG_TYPE_OPEN)
     {
diff --git a/dlls/comdlg32/tests/itemdlg.c b/dlls/comdlg32/tests/itemdlg.c
index c57e166..1dfdf71 100644
--- a/dlls/comdlg32/tests/itemdlg.c
+++ b/dlls/comdlg32/tests/itemdlg.c
@@ -40,6 +40,9 @@ static void init_function_pointers(void)
 #undef MAKEFUNC
 }
 
+#include <initguid.h>
+DEFINE_GUID(IID_IFileDialogCustomizeAlt, 0x8016B7B3, 0x3D49, 0x4504, 0xA0,0xAA, 0x2A,0x37,0x49,0x4E,0x60,0x6F);
+
 /**************************************************************************
  * IFileDialogEvents implementation
  */
@@ -218,7 +221,11 @@ static BOOL test_instantiation(void)
     if(SUCCEEDED(hr)) IFileDialog_Release(pfd);
 
     hr = IFileOpenDialog_QueryInterface(pfod, &IID_IFileDialogCustomize, (void**)&punk);
-    todo_wine ok(hr == S_OK, "got 0x%08x.\n", hr);
+    ok(hr == S_OK, "got 0x%08x.\n", hr);
+    if(SUCCEEDED(hr)) IUnknown_Release(punk);
+
+    hr = IFileOpenDialog_QueryInterface(pfod, &IID_IFileDialogCustomizeAlt, (void**)&punk);
+    ok(hr == S_OK, "got 0x%08x.\n", hr);
     if(SUCCEEDED(hr)) IUnknown_Release(punk);
 
     hr = IFileOpenDialog_QueryInterface(pfod, &IID_IFileSaveDialog, (void**)&pfsd);
@@ -311,7 +318,11 @@ static BOOL test_instantiation(void)
     if(SUCCEEDED(hr)) IFileDialog_Release(pfd);
 
     hr = IFileSaveDialog_QueryInterface(pfsd, &IID_IFileDialogCustomize, (void**)&punk);
-    todo_wine ok(hr == S_OK, "got 0x%08x.\n", hr);
+    ok(hr == S_OK, "got 0x%08x.\n", hr);
+    if(SUCCEEDED(hr)) IUnknown_Release(punk);
+
+    hr = IFileSaveDialog_QueryInterface(pfsd, &IID_IFileDialogCustomizeAlt, (void**)&punk);
+    ok(hr == S_OK, "got 0x%08x.\n", hr);
     if(SUCCEEDED(hr)) IUnknown_Release(punk);
 
     hr = IFileSaveDialog_QueryInterface(pfsd, &IID_IFileOpenDialog, (void**)&pfod);
-- 
1.7.5.rc3




More information about the wine-patches mailing list