ReactOS 0.4.17-dev-966-gf06eace
cdlg32.c File Reference
#include <stdarg.h>
#include "windef.h"
#include "winbase.h"
#include "wingdi.h"
#include "winuser.h"
#include "objbase.h"
#include "rpcproxy.h"
#include "commdlg.h"
#include "cderr.h"
#include "wine/debug.h"
#include "wine/heap.h"
#include "cdlg.h"
Include dependency graph for cdlg32.c:

Go to the source code of this file.

Classes

struct  IClassFactoryImpl
 

Macros

#define COBJMACROS
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (commdlg)
 
BOOL WINAPI DllMain (HINSTANCE hInstance, DWORD Reason, LPVOID Reserved)
 
void * COMDLG32_AllocMem (int size)
 
void COMDLG32_SetCommDlgExtendedError (DWORD err)
 
DWORD WINAPI CommDlgExtendedError (void)
 
static IClassFactoryImpl * impl_from_IClassFactory (IClassFactory *iface)
 
static HRESULT WINAPI CDLGCF_QueryInterface (IClassFactory *iface, REFIID riid, void **ppobj)
 
static ULONG WINAPI CDLGCF_AddRef (IClassFactory *iface)
 
static ULONG WINAPI CDLGCF_Release (IClassFactory *iface)
 
static HRESULT WINAPI CDLGCF_CreateInstance (IClassFactory *iface, IUnknown *pOuter, REFIID riid, void **ppobj)
 
static HRESULT WINAPI CDLGCF_LockServer (IClassFactory *iface, BOOL dolock)
 
HRESULT WINAPI DllGetClassObject (REFCLSID rclsid, REFIID riid, void **ppv)
 

Variables

HINSTANCE COMDLG32_hInstance = 0
 
HANDLE COMDLG32_hActCtx = INVALID_HANDLE_VALUE
 
static DWORD COMDLG32_TlsIndex = TLS_OUT_OF_INDEXES
 
static const IClassFactoryVtbl CDLGCF_Vtbl
 

Macro Definition Documentation

◆ COBJMACROS

#define COBJMACROS

Definition at line 24 of file cdlg32.c.

Function Documentation

◆ CDLGCF_AddRef()

static ULONG WINAPI CDLGCF_AddRef ( IClassFactory *  iface)
static

Definition at line 196 of file cdlg32.c.

197{
198 return 2; /* non-heap based object */
199}

◆ CDLGCF_CreateInstance()

static HRESULT WINAPI CDLGCF_CreateInstance ( IClassFactory *  iface,
IUnknown *  pOuter,
REFIID  riid,
void **  ppobj 
)
static

Definition at line 212 of file cdlg32.c.

214{
216 return This->cf(pOuter, riid, ppobj);
217}
static IClassFactoryImpl * impl_from_IClassFactory(IClassFactory *iface)
Definition: cdlg32.c:164
REFIID riid
Definition: atlbase.h:39

◆ CDLGCF_LockServer()

static HRESULT WINAPI CDLGCF_LockServer ( IClassFactory *  iface,
BOOL  dolock 
)
static

Definition at line 222 of file cdlg32.c.

223{
224 TRACE("%p (%d)\n", iface, dolock);
225 return S_OK;
226}
#define S_OK
Definition: intsafe.h:52
#define TRACE(s)
Definition: solgame.cpp:4

◆ CDLGCF_QueryInterface()

static HRESULT WINAPI CDLGCF_QueryInterface ( IClassFactory *  iface,
REFIID  riid,
void **  ppobj 
)
static

Definition at line 172 of file cdlg32.c.

174{
175 TRACE("%p (%s %p)\n", iface, debugstr_guid(riid), ppobj);
176
177 if(!ppobj)
178 return E_POINTER;
179
181 {
182 *ppobj = iface;
183 IClassFactory_AddRef(iface);
184 return S_OK;
185 }
186
187 WARN("Interface not supported.\n");
188
189 *ppobj = NULL;
190 return E_NOINTERFACE;
191}
#define WARN(fmt,...)
Definition: precomp.h:61
const GUID IID_IUnknown
const GUID IID_IClassFactory
#define NULL
Definition: types.h:112
#define debugstr_guid
Definition: kernel32.h:35
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
#define E_NOINTERFACE
Definition: winerror.h:3479
#define E_POINTER
Definition: winerror.h:3480

◆ CDLGCF_Release()

static ULONG WINAPI CDLGCF_Release ( IClassFactory *  iface)
static

Definition at line 204 of file cdlg32.c.

205{
206 return 1; /* non-heap based object */
207}

◆ COMDLG32_AllocMem()

void * COMDLG32_AllocMem ( int  size)

Definition at line 105 of file cdlg32.c.

106{
107 void *ptr = heap_alloc_zero(size);
108
109 if (!ptr)
110 {
112 return NULL;
113 }
114
115 return ptr;
116}
#define CDERR_MEMALLOCFAILURE
Definition: cderr.h:14
void COMDLG32_SetCommDlgExtendedError(DWORD err)
Definition: cdlg32.c:124
GLsizeiptr size
Definition: glext.h:5919
static PVOID ptr
Definition: dispmode.c:27

Referenced by FindTextA(), FindTextW(), ReplaceTextA(), and ReplaceTextW().

◆ COMDLG32_SetCommDlgExtendedError()

void COMDLG32_SetCommDlgExtendedError ( DWORD  err)

Definition at line 124 of file cdlg32.c.

125{
126 TRACE("(%08lx)\n", err);
131 else
132 FIXME("No Tls Space\n");
133}
#define FIXME(fmt,...)
Definition: precomp.h:53
static DWORD COMDLG32_TlsIndex
Definition: cdlg32.c:48
BOOL WINAPI TlsSetValue(IN DWORD Index, IN LPVOID Value)
Definition: thread.c:1334
DWORD WINAPI DECLSPEC_HOTPATCH TlsAlloc(void)
Definition: thread.c:657
#define err(...)
uint32_t DWORD_PTR
Definition: typedefs.h:65
#define TLS_OUT_OF_INDEXES
Definition: winbase.h:529

Referenced by ChooseColorW(), ChooseFontA(), ChooseFontW(), COMDLG32_AllocMem(), COMDLG32_FR_CheckPartial(), COMDLG32_FR_DoFindReplace(), CreateTemplateDialog(), FD31_GetTemplate(), FILEDLG95_OnOpen(), GetFileName95(), GetOpenFileNameA(), GetOpenFileNameW(), GetSaveFileNameA(), GetSaveFileNameW(), init_filedlg_infoW(), pagesetup_common(), PRINTDLG_WMInitDialog(), PRINTDLG_WMInitDialogW(), PrintDlgA(), PrintDlgExA(), PrintDlgExW(), and PrintDlgW().

◆ CommDlgExtendedError()

◆ DllGetClassObject()

HRESULT WINAPI DllGetClassObject ( REFCLSID  rclsid,
REFIID  riid,
void **  ppv 
)

Definition at line 240 of file cdlg32.c.

241{
242#if (DLL_EXPORT_VERSION >= _WIN32_WINNT_VISTA)
243 static IClassFactoryImpl FileOpenDlgClassFactory = {{&CDLGCF_Vtbl}, FileOpenDialog_Constructor};
244 static IClassFactoryImpl FileSaveDlgClassFactory = {{&CDLGCF_Vtbl}, FileSaveDialog_Constructor};
245
246 TRACE("%s, %s, %p\n", debugstr_guid(rclsid), debugstr_guid(riid), ppv);
247
248 if(IsEqualGUID(&CLSID_FileOpenDialog, rclsid))
249 return IClassFactory_QueryInterface(&FileOpenDlgClassFactory.IClassFactory_iface, riid, ppv);
250
251 if(IsEqualGUID(&CLSID_FileSaveDialog, rclsid))
252 return IClassFactory_QueryInterface(&FileSaveDlgClassFactory.IClassFactory_iface, riid, ppv);
253#endif
254
256}
static const IClassFactoryVtbl CDLGCF_Vtbl
Definition: cdlg32.c:228
HRESULT FileOpenDialog_Constructor(IUnknown *pUnkOuter, REFIID riid, void **ppv)
HRESULT FileSaveDialog_Constructor(IUnknown *pUnkOuter, REFIID riid, void **ppv)
REFIID LPVOID * ppv
Definition: atlbase.h:39
IClassFactory IClassFactory_iface
Definition: main.c:44
#define CLASS_E_CLASSNOTAVAILABLE
Definition: winerror.h:3772

◆ DllMain()

BOOL WINAPI DllMain ( HINSTANCE  hInstance,
DWORD  Reason,
LPVOID  Reserved 
)

Definition at line 59 of file cdlg32.c.

60{
61 TRACE("(%p, %ld, %p)\n", hInstance, Reason, Reserved);
62
63 switch(Reason)
64 {
66 {
67 ACTCTXW actctx = {0};
68
71
72#ifdef __REACTOS__
73 InitializeCriticalSection(&COMDLG32_OpenFileLock);
74#endif
75 actctx.cbSize = sizeof(actctx);
76 actctx.hModule = COMDLG32_hInstance;
77 actctx.lpResourceName = MAKEINTRESOURCEW(123);
78 actctx.dwFlags = ACTCTX_FLAG_HMODULE_VALID | ACTCTX_FLAG_RESOURCE_NAME_VALID;
81 ERR("failed to create activation context, last error %lu\n", GetLastError());
82
83 break;
84 }
86 if (Reserved) break;
89#ifdef __REACTOS__
90 DeleteCriticalSection(&COMDLG32_OpenFileLock);
91#endif
92 break;
93 }
94 return TRUE;
95}
#define ERR(fmt,...)
Definition: precomp.h:57
HANDLE COMDLG32_hActCtx
Definition: cdlg32.c:46
HINSTANCE COMDLG32_hInstance
Definition: cdlg32.c:42
HINSTANCE hInstance
Definition: charmap.c:19
#define TRUE
Definition: types.h:120
#define DLL_PROCESS_ATTACH
Definition: compat.h:131
#define DLL_PROCESS_DETACH
Definition: compat.h:130
#define INVALID_HANDLE_VALUE
Definition: compat.h:731
VOID WINAPI ReleaseActCtx(IN HANDLE hActCtx)
Definition: actctx.c:208
BOOL WINAPI DisableThreadLibraryCalls(IN HMODULE hLibModule)
Definition: loader.c:85
BOOL WINAPI TlsFree(IN DWORD Index)
Definition: thread.c:1224
HANDLE WINAPI CreateActCtxW(PCACTCTXW pActCtx)
Definition: actctx.c:102
#define actctx
Definition: kernel32.h:8
PVOID PVOID PWCHAR PVOID USHORT PULONG Reason
Definition: env.c:47
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
VOID WINAPI InitializeCriticalSection(OUT LPCRITICAL_SECTION lpCriticalSection)
Definition: synch.c:687
DWORD WINAPI GetLastError(void)
Definition: except.c:1042
void WINAPI DeleteCriticalSection(PCRITICAL_SECTION)
_Reserved_ PVOID Reserved
Definition: winddi.h:3974

◆ impl_from_IClassFactory()

static IClassFactoryImpl * impl_from_IClassFactory ( IClassFactory *  iface)
inlinestatic

Definition at line 164 of file cdlg32.c.

165{
166 return CONTAINING_RECORD(iface, IClassFactoryImpl, IClassFactory_iface);
167}
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260

Referenced by CDLGCF_CreateInstance().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( commdlg  )

Variable Documentation

◆ CDLGCF_Vtbl

const IClassFactoryVtbl CDLGCF_Vtbl
static
Initial value:
=
{
}
static ULONG WINAPI CDLGCF_AddRef(IClassFactory *iface)
Definition: cdlg32.c:196
static HRESULT WINAPI CDLGCF_LockServer(IClassFactory *iface, BOOL dolock)
Definition: cdlg32.c:222
static HRESULT WINAPI CDLGCF_QueryInterface(IClassFactory *iface, REFIID riid, void **ppobj)
Definition: cdlg32.c:172
static HRESULT WINAPI CDLGCF_CreateInstance(IClassFactory *iface, IUnknown *pOuter, REFIID riid, void **ppobj)
Definition: cdlg32.c:212
static ULONG WINAPI CDLGCF_Release(IClassFactory *iface)
Definition: cdlg32.c:204

Definition at line 228 of file cdlg32.c.

Referenced by DllGetClassObject().

◆ COMDLG32_hActCtx

HANDLE COMDLG32_hActCtx = INVALID_HANDLE_VALUE

Definition at line 46 of file cdlg32.c.

Referenced by DllMain().

◆ COMDLG32_hInstance

◆ COMDLG32_TlsIndex

DWORD COMDLG32_TlsIndex = TLS_OUT_OF_INDEXES
static

Definition at line 48 of file cdlg32.c.

Referenced by COMDLG32_SetCommDlgExtendedError(), CommDlgExtendedError(), and DllMain().