ReactOS  0.4.14-dev-614-gbfd8a84
insobjdlg.c File Reference
#include <stdarg.h>
#include <stdio.h>
#include "windef.h"
#include "winbase.h"
#include "winreg.h"
#include "wine/winternl.h"
#include "winerror.h"
#include "wingdi.h"
#include "winuser.h"
#include "wine/debug.h"
#include "oledlg.h"
#include "resource.h"
Include dependency graph for insobjdlg.c:

Go to the source code of this file.

Classes

struct  InsertObjectDlgInfo
 

Typedefs

typedef HRESULT(* DLLREGISTER) (void)
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (oledlg)
 
static INT_PTR CALLBACK UIInsertObjectDlgProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
static LRESULT UIINSOBJDLG_OnWMCommand (HWND hwnd, WPARAM wParam, LPARAM lParam)
 
static void UIINSERTOBJECTDLG_InitDialog (InsertObjectDlgInfo *pdlgInfo)
 
static void UIINSERTOBJECTDLG_SelectCreateCtrl (InsertObjectDlgInfo *pdlgInfo)
 
static void UIINSERTOBJECTDLG_SelectCreateFromFile (InsertObjectDlgInfo *pdlgInfo)
 
static void UIINSERTOBJECTDLG_SelectCreateNew (InsertObjectDlgInfo *pdlgInfo)
 
static BOOL UIINSERTOBJECTDLG_PopulateObjectTypes (InsertObjectDlgInfo *pdlgInfo)
 
static void UIINSERTOBJECTDLG_FreeObjectTypes (InsertObjectDlgInfo *pdlgInfo)
 
static void UIINSERTOBJECTDLG_SelChange (InsertObjectDlgInfo *pdlgInfo)
 
static BOOL UIINSERTOBJECTDLG_OnOpen (InsertObjectDlgInfo *pdlgInfo)
 
static void UIINSERTOBJECTDLG_BrowseFile (InsertObjectDlgInfo *pdlgInfo)
 
static void UIINSERTOBJECTDLG_AddControl (InsertObjectDlgInfo *pdlgInfo)
 
UINT WINAPI OleUIInsertObjectA (LPOLEUIINSERTOBJECTA lpOleUIInsertObject)
 

Variables

HINSTANCE OLEDLG_hInstance
 
static const WCHAR OleUIInsertObjectInfoStr []
 

Typedef Documentation

◆ DLLREGISTER

typedef HRESULT(* DLLREGISTER) (void)

Definition at line 71 of file insobjdlg.c.

Function Documentation

◆ OleUIInsertObjectA()

UINT WINAPI OleUIInsertObjectA ( LPOLEUIINSERTOBJECTA  lpOleUIInsertObject)

Definition at line 80 of file insobjdlg.c.

81 {
82  LRESULT lRes;
83  LPCVOID template;
84  HRSRC hRes;
85  InsertObjectDlgInfo dlgInfo;
86  HANDLE hDlgTmpl = 0;
87 
88  if (lpOleUIInsertObject->lpszTemplate || lpOleUIInsertObject->hResource)
89  FIXME("Customized template not supported\n");
90 
91  /* Create the dialog from a template */
93  (LPSTR)RT_DIALOG)))
94  {
96  }
97 
98  if (!(hDlgTmpl = LoadResource(OLEDLG_hInstance, hRes )) ||
99  !(template = LockResource( hDlgTmpl )))
100  {
102  }
103 
104  /* Initialize InsertObjectDlgInfo structure */
105  dlgInfo.lpOleUIInsertObject = lpOleUIInsertObject;
106  dlgInfo.bObjListInit = FALSE;
107 
108  lRes = DialogBoxIndirectParamA(OLEDLG_hInstance, (const DLGTEMPLATE*) template,
109  lpOleUIInsertObject->hWndOwner, UIInsertObjectDlgProc,
110  (LPARAM) &dlgInfo);
111 
112  /* Unable to create the dialog */
113  if( lRes == -1)
115 
116  return lRes;
117 }
#define OLEUI_ERR_FINDTEMPLATEFAILURE
Definition: oledlg.h:77
#define OLEUI_ERR_LOADTEMPLATEFAILURE
Definition: oledlg.h:78
HRSRC WINAPI FindResourceA(HMODULE hModule, LPCSTR name, LPCSTR type)
Definition: res.c:155
#define UIINSERTOBJECT
Definition: resource.h:31
LPVOID WINAPI LockResource(HGLOBAL handle)
Definition: res.c:550
#define MAKEINTRESOURCEA(i)
Definition: winuser.h:581
char * LPSTR
Definition: xmlstorage.h:182
#define FIXME(fmt,...)
Definition: debug.h:110
HGLOBAL WINAPI LoadResource(HINSTANCE hModule, HRSRC hRsrc)
Definition: res.c:532
HINSTANCE OLEDLG_hInstance
Definition: oledlg_main.c:39
LONG_PTR LPARAM
Definition: windef.h:208
#define RT_DIALOG
Definition: pedump.c:367
INT_PTR WINAPI DialogBoxIndirectParamA(_In_opt_ HINSTANCE, _In_ LPCDLGTEMPLATE, _In_opt_ HWND, _In_opt_ DLGPROC, _In_ LPARAM)
LPOLEUIINSERTOBJECTA lpOleUIInsertObject
Definition: insobjdlg.c:42
CONST void * LPCVOID
Definition: windef.h:191
#define OLEUI_ERR_DIALOGFAILURE
Definition: oledlg.h:79
static INT_PTR CALLBACK UIInsertObjectDlgProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: insobjdlg.c:125
LONG_PTR LRESULT
Definition: windef.h:209

◆ UIINSERTOBJECTDLG_AddControl()

static void UIINSERTOBJECTDLG_AddControl ( InsertObjectDlgInfo pdlgInfo)
static

Definition at line 557 of file insobjdlg.c.

558 {
560  char fname[MAX_PATH];
561  char title[32];
562 
563  fn.lStructSize = sizeof(OPENFILENAMEA);
564  fn.hwndOwner = pdlgInfo->hwndSelf;
565  fn.hInstance = 0;
566  fn.lpstrFilter = "OLE Controls\0*.ocx\0Libraries\0*.dll\0All Files\0*.*\0\0";
567  fn.lpstrCustomFilter = NULL;
568  fn.nMaxCustFilter = 0;
569  fn.nFilterIndex = 0;
570 
571  fname[0] = 0;
572  fn.lpstrFile = fname;
573  fn.nMaxFile = MAX_PATH;
574 
575  fn.lpstrFileTitle = NULL;
576  fn.nMaxFileTitle = 0;
577  fn.lpstrInitialDir = NULL;
578 
580  fn.lpstrTitle = title;
581 
582  fn.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST |
584  fn.nFileOffset = 0;
585  fn.nFileExtension = 0;
586  fn.lpstrDefExt = NULL;
587  fn.lCustData = 0;
588  fn.lpfnHook = NULL;
589  fn.lpTemplateName = NULL;
590 
591  if (GetOpenFileNameA(&fn))
592  {
593  HMODULE hMod;
594  BOOL bValid = FALSE;
595 
596  hMod = LoadLibraryA(fn.lpstrFile);
597 
598  if (hMod)
599  {
600  DLLREGISTER regproc;
601 
602  regproc = (DLLREGISTER) GetProcAddress(hMod, "DllRegisterServer");
603  if (regproc)
604  {
605  if (S_OK == regproc())
606  {
608  bValid = TRUE;
609  }
610  }
611 
612  FreeLibrary(hMod);
613  }
614 
615  if (!bValid)
616  {
617  WCHAR title[32];
618  WCHAR msg[256];
619 
622 
624  }
625  }
626 }
#define OFN_FILEMUSTEXIST
Definition: commdlg.h:106
#define OFN_EXPLORER
Definition: commdlg.h:104
#define TRUE
Definition: types.h:120
#define OFN_LONGNAMES
Definition: commdlg.h:108
static GLenum _GLUfuncptr fn
Definition: wgl_font.c:159
int WINAPI LoadStringA(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPSTR lpBuffer, _In_ int cchBufferMax)
#define IDS_NOTOLEMOD
Definition: resource.h:28
#define IDS_NOTOLEMODCAPTION
Definition: resource.h:29
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
struct tagOFNA OPENFILENAMEA
#define MB_ICONEXCLAMATION
Definition: winuser.h:779
unsigned int BOOL
Definition: ntddk_ex.h:94
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryA(LPCSTR lpLibFileName)
Definition: loader.c:111
HINSTANCE OLEDLG_hInstance
Definition: oledlg_main.c:39
smooth NULL
Definition: ftsmooth.c:416
#define FreeLibrary(x)
Definition: compat.h:413
int WINAPI MessageBoxW(_In_opt_ HWND, _In_opt_ LPCWSTR, _In_opt_ LPCWSTR, _In_ UINT)
__wchar_t WCHAR
Definition: xmlstorage.h:180
static BOOL UIINSERTOBJECTDLG_PopulateObjectTypes(InsertObjectDlgInfo *pdlgInfo)
Definition: insobjdlg.c:332
#define MAX_PATH
Definition: compat.h:26
#define IDS_BROWSE
Definition: resource.h:27
#define OFN_HIDEREADONLY
Definition: commdlg.h:107
HRESULT(* DLLREGISTER)(void)
Definition: insobjdlg.c:71
#define S_OK
Definition: intsafe.h:59
BOOL WINAPI GetOpenFileNameA(OPENFILENAMEA *ofn)
Definition: filedlg.c:4530
#define msg(x)
Definition: auth_time.c:54
#define GetProcAddress(x, y)
Definition: compat.h:418
static char title[]
Definition: ps.c:92

Referenced by UIINSOBJDLG_OnWMCommand().

◆ UIINSERTOBJECTDLG_BrowseFile()

static void UIINSERTOBJECTDLG_BrowseFile ( InsertObjectDlgInfo pdlgInfo)
static

Definition at line 513 of file insobjdlg.c.

514 {
516  char fname[MAX_PATH];
517  char title[32];
518 
519  fn.lStructSize = sizeof(OPENFILENAMEA);
520  fn.hwndOwner = pdlgInfo->hwndSelf;
521  fn.hInstance = 0;
522  fn.lpstrFilter = "All Files\0*.*\0\0";
523  fn.lpstrCustomFilter = NULL;
524  fn.nMaxCustFilter = 0;
525  fn.nFilterIndex = 0;
526 
527  SendMessageA(pdlgInfo->hwndFileTB, WM_GETTEXT, MAX_PATH, (LPARAM)fname);
528  fn.lpstrFile = fname;
529  fn.nMaxFile = MAX_PATH;
530 
531  fn.lpstrFileTitle = NULL;
532  fn.nMaxFileTitle = 0;
533  fn.lpstrInitialDir = NULL;
534 
536  fn.lpstrTitle = title;
537 
538  fn.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST |
540  fn.nFileOffset = 0;
541  fn.nFileExtension = 0;
542  fn.lpstrDefExt = NULL;
543  fn.lCustData = 0;
544  fn.lpfnHook = NULL;
545  fn.lpTemplateName = NULL;
546 
547  if (GetOpenFileNameA(&fn))
548  SendMessageA(pdlgInfo->hwndFileTB, WM_SETTEXT, 0, (LPARAM)fn.lpstrFile);
549 }
#define OFN_FILEMUSTEXIST
Definition: commdlg.h:106
#define OFN_EXPLORER
Definition: commdlg.h:104
#define OFN_LONGNAMES
Definition: commdlg.h:108
static GLenum _GLUfuncptr fn
Definition: wgl_font.c:159
LRESULT WINAPI SendMessageA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define WM_GETTEXT
Definition: winuser.h:1600
int WINAPI LoadStringA(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPSTR lpBuffer, _In_ int cchBufferMax)
struct tagOFNA OPENFILENAMEA
HINSTANCE OLEDLG_hInstance
Definition: oledlg_main.c:39
smooth NULL
Definition: ftsmooth.c:416
LONG_PTR LPARAM
Definition: windef.h:208
#define WM_SETTEXT
Definition: winuser.h:1599
#define MAX_PATH
Definition: compat.h:26
#define IDS_BROWSE
Definition: resource.h:27
#define OFN_HIDEREADONLY
Definition: commdlg.h:107
BOOL WINAPI GetOpenFileNameA(OPENFILENAMEA *ofn)
Definition: filedlg.c:4530
static char title[]
Definition: ps.c:92

Referenced by UIINSOBJDLG_OnWMCommand().

◆ UIINSERTOBJECTDLG_FreeObjectTypes()

static void UIINSERTOBJECTDLG_FreeObjectTypes ( InsertObjectDlgInfo pdlgInfo)
static

Definition at line 397 of file insobjdlg.c.

398 {
399  UINT i, count;
400 
401  count = SendMessageA(pdlgInfo->hwndObjTypeLB, LB_GETCOUNT, 0, 0);
402 
403  for (i = 0; i < count; i++)
404  {
405  CLSID* lpclsid = (CLSID*) SendMessageA(pdlgInfo->hwndObjTypeLB,
406  LB_GETITEMDATA, i, 0);
407  HeapFree(GetProcessHeap(), 0, lpclsid);
408  }
409 }
LRESULT WINAPI SendMessageA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define LB_GETITEMDATA
Definition: winuser.h:2023
GLuint GLuint GLsizei count
Definition: gl.h:1545
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define LB_GETCOUNT
Definition: winuser.h:2020
#define GetProcessHeap()
Definition: compat.h:403
unsigned int UINT
Definition: ndis.h:50
#define HeapFree(x, y, z)
Definition: compat.h:402

Referenced by UIINSERTOBJECTDLG_PopulateObjectTypes(), and UIInsertObjectDlgProc().

◆ UIINSERTOBJECTDLG_InitDialog()

static void UIINSERTOBJECTDLG_InitDialog ( InsertObjectDlgInfo pdlgInfo)
static

Definition at line 214 of file insobjdlg.c.

215 {
216  /* Initialize InsertObjectDlgInfo data structure */
217  pdlgInfo->hwndObjTypeLB = GetDlgItem(pdlgInfo->hwndSelf, IDC_OBJTYPELIST);
218  pdlgInfo->hwndObjTypeLBL = GetDlgItem(pdlgInfo->hwndSelf, IDC_OBJTYPELBL);
219  pdlgInfo->hwndFileLBL = GetDlgItem(pdlgInfo->hwndSelf, IDC_FILELBL);
220  pdlgInfo->hwndFileTB = GetDlgItem(pdlgInfo->hwndSelf, IDC_FILE);
221  pdlgInfo->hwndCreateCtrlCB = GetDlgItem(pdlgInfo->hwndSelf, IDC_CREATECONTROL);
222  pdlgInfo->hwndCreateNewCB = GetDlgItem(pdlgInfo->hwndSelf, IDC_CREATENEW);
224  pdlgInfo->hwndDisplayIconCB = GetDlgItem(pdlgInfo->hwndSelf, IDC_ASICON);
225  pdlgInfo->hwndAddCtrlBTN = GetDlgItem(pdlgInfo->hwndSelf, IDC_ADDCONTROL);
226  pdlgInfo->hwndBrowseBTN = GetDlgItem(pdlgInfo->hwndSelf, IDC_BROWSE);
227  pdlgInfo->hwndResultDesc = GetDlgItem(pdlgInfo->hwndSelf, IDC_RESULTDESC);
228 
229  /* Setup dialog controls based on flags */
230  if (pdlgInfo->lpOleUIInsertObject->lpszCaption)
232 
233  ShowWindow(pdlgInfo->hwndCreateCtrlCB, (pdlgInfo->lpOleUIInsertObject->dwFlags &
239 
244  else /* (pdlgInfo->lpOleUIInsertObject->dwFlags & IOF_SELECTCREATENEW) */
246 }
#define IDC_ADDCONTROL
Definition: resource.h:40
#define IDC_ASICON
Definition: resource.h:41
#define IDC_FILE
Definition: resource.h:44
#define SW_HIDE
Definition: winuser.h:762
#define IDC_BROWSE
Definition: resource.h:21
#define IOF_SELECTCREATEFROMFILE
Definition: oledlg.h:202
#define IOF_DISABLEDISPLAYASICON
Definition: oledlg.h:210
HWND hwndCreateFromFileCB
Definition: insobjdlg.c:50
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
static void UIINSERTOBJECTDLG_SelectCreateFromFile(InsertObjectDlgInfo *pdlgInfo)
Definition: insobjdlg.c:305
#define IOF_CHECKDISPLAYASICON
Definition: oledlg.h:204
#define SW_SHOW
Definition: winuser.h:769
#define IDC_OBJTYPELBL
Definition: resource.h:38
#define IDC_OBJTYPELIST
Definition: resource.h:33
static void UIINSERTOBJECTDLG_SelectCreateCtrl(InsertObjectDlgInfo *pdlgInfo)
Definition: insobjdlg.c:254
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
BOOL WINAPI SetWindowTextA(_In_ HWND, _In_opt_ LPCSTR)
#define IDC_CREATEFROMFILE
Definition: resource.h:37
#define IDC_RESULTDESC
Definition: resource.h:39
LPOLEUIINSERTOBJECTA lpOleUIInsertObject
Definition: insobjdlg.c:42
#define IOF_SHOWINSERTCONTROL
Definition: oledlg.h:212
BOOL WINAPI EnableWindow(_In_ HWND, _In_ BOOL)
#define IOF_SELECTCREATECONTROL
Definition: oledlg.h:213
#define IDC_CREATENEW
Definition: resource.h:35
static void UIINSERTOBJECTDLG_SelectCreateNew(InsertObjectDlgInfo *pdlgInfo)
Definition: insobjdlg.c:278
#define IDC_FILELBL
Definition: resource.h:43
#define IDC_CREATECONTROL
Definition: resource.h:36

Referenced by UIInsertObjectDlgProc().

◆ UIINSERTOBJECTDLG_OnOpen()

static BOOL UIINSERTOBJECTDLG_OnOpen ( InsertObjectDlgInfo pdlgInfo)
static

Definition at line 442 of file insobjdlg.c.

443 {
444  BOOL bret = FALSE;
445 
446  if (BST_CHECKED == SendMessageA(pdlgInfo->hwndCreateCtrlCB, BM_GETCHECK, 0, 0) ||
448  {
449  INT index = SendMessageA(pdlgInfo->hwndObjTypeLB, LB_GETCURSEL, 0, 0);
450 
451  if (index >= 0)
452  {
453  CLSID* clsid = (CLSID*) SendMessageA(pdlgInfo->hwndObjTypeLB,
454  LB_GETITEMDATA, index, 0);
455  pdlgInfo->lpOleUIInsertObject->clsid = *clsid;
456 
458  {
459  pdlgInfo->lpOleUIInsertObject->sc= OleCreate(
460  &pdlgInfo->lpOleUIInsertObject->clsid,
461  &pdlgInfo->lpOleUIInsertObject->iid,
462  pdlgInfo->lpOleUIInsertObject->oleRender,
463  pdlgInfo->lpOleUIInsertObject->lpFormatEtc,
465  pdlgInfo->lpOleUIInsertObject->lpIStorage,
466  pdlgInfo->lpOleUIInsertObject->ppvObj);
467  }
468 
469  bret = TRUE;
470  }
471  }
472  else if (BST_CHECKED == SendMessageA(pdlgInfo->hwndCreateFromFileCB, BM_GETCHECK, 0, 0))
473  {
474  if (pdlgInfo->lpOleUIInsertObject->lpszFile)
475  {
476  HRESULT hres;
477  WCHAR wcsFile[MAX_PATH];
478 
479  if (SendMessageW(pdlgInfo->hwndFileTB, WM_GETTEXT, MAX_PATH, (LPARAM)wcsFile))
480  WideCharToMultiByte(CP_ACP, 0, wcsFile, -1,
482 
483  if (SUCCEEDED(hres = GetClassFile(wcsFile, &pdlgInfo->lpOleUIInsertObject->clsid)))
484  {
486  {
488  &pdlgInfo->lpOleUIInsertObject->clsid,
489  wcsFile,
490  &pdlgInfo->lpOleUIInsertObject->iid,
491  pdlgInfo->lpOleUIInsertObject->oleRender,
492  pdlgInfo->lpOleUIInsertObject->lpFormatEtc,
494  pdlgInfo->lpOleUIInsertObject->lpIStorage,
495  pdlgInfo->lpOleUIInsertObject->ppvObj);
496  }
497 
498  bret = TRUE;
499  }
500  pdlgInfo->lpOleUIInsertObject->sc = hres;
501  }
502  }
503 
504  return bret;
505 }
#define TRUE
Definition: types.h:120
#define IOF_CREATENEWOBJECT
Definition: oledlg.h:205
#define WideCharToMultiByte
Definition: compat.h:101
HRESULT WINAPI GetClassFile(LPCOLESTR filePathName, CLSID *pclsid)
Definition: moniker.c:1213
LRESULT WINAPI SendMessageA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define CP_ACP
Definition: compat.h:99
#define LB_GETITEMDATA
Definition: winuser.h:2023
#define WM_GETTEXT
Definition: winuser.h:1600
HWND hwndCreateFromFileCB
Definition: insobjdlg.c:50
LPOLECLIENTSITE lpIOleClientSite
Definition: oledlg.h:163
int32_t INT
Definition: typedefs.h:56
#define IOF_CREATEFILEOBJECT
Definition: oledlg.h:206
unsigned int BOOL
Definition: ntddk_ex.h:94
smooth NULL
Definition: ftsmooth.c:416
LPFORMATETC lpFormatEtc
Definition: oledlg.h:162
LONG_PTR LPARAM
Definition: windef.h:208
#define BM_GETCHECK
Definition: winuser.h:1900
LPSTORAGE lpIStorage
Definition: oledlg.h:164
GLuint index
Definition: glext.h:6031
HRESULT hres
Definition: protocol.c:465
__wchar_t WCHAR
Definition: xmlstorage.h:180
LONG HRESULT
Definition: typedefs.h:77
HRESULT WINAPI OleCreate(REFCLSID rclsid, REFIID riid, DWORD renderopt, LPFORMATETC pFormatEtc, LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID *ppvObj)
Definition: ole2.c:2609
#define MAX_PATH
Definition: compat.h:26
REFCLSID clsid
Definition: msctf.c:82
LPOLEUIINSERTOBJECTA lpOleUIInsertObject
Definition: insobjdlg.c:42
HRESULT WINAPI OleCreateFromFile(REFCLSID clsid, const OLECHAR *filename, REFIID iid, DWORD renderopt, FORMATETC *fmt, IOleClientSite *client_site, IStorage *storage, void **obj)
Definition: ole2impl.c:402
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define LB_GETCURSEL
Definition: winuser.h:2021
#define BST_CHECKED
Definition: winuser.h:197
#define SUCCEEDED(hr)
Definition: intsafe.h:57

Referenced by UIINSOBJDLG_OnWMCommand().

◆ UIINSERTOBJECTDLG_PopulateObjectTypes()

static BOOL UIINSERTOBJECTDLG_PopulateObjectTypes ( InsertObjectDlgInfo pdlgInfo)
static

Definition at line 332 of file insobjdlg.c.

333 {
334  static const WCHAR szClsid[] = {'C','L','S','I','D',0};
335  static const WCHAR szInsertable[] = {'I','n','s','e','r','t','a','b','l','e',0};
336  static const WCHAR szNotInsertable[] = {'N','o','t','I','n','s','e','r','t','a','b','l','e',0};
337  DWORD i;
338  LONG len;
339  HKEY hkclsids;
340  HKEY hkey;
341  CLSID clsid;
342  LSTATUS ret;
343  WCHAR keydesc[MAX_PATH];
344  WCHAR keyname[MAX_PATH];
345  WCHAR szclsid[128];
346  DWORD index = 0;
347 
349 
350  RegOpenKeyExW(HKEY_CLASSES_ROOT, szClsid, 0, KEY_READ, &hkclsids);
351 
352  while (ERROR_SUCCESS == (ret = RegEnumKeyW(hkclsids, index, szclsid, ARRAY_SIZE(szclsid))))
353  {
354  index++;
355 
356  RegOpenKeyExW(hkclsids, szclsid, 0, KEY_READ, &hkey);
357 
358  len = sizeof(keyname);
359  if (ERROR_SUCCESS != RegQueryValueW(hkey, szInsertable, keyname, &len))
360  continue;
361 
362  len = sizeof(keyname);
363  if (ERROR_SUCCESS == RegQueryValueW(hkey, szNotInsertable, keyname, &len))
364  continue;
365 
366  CLSIDFromString(szclsid, &clsid);
367 
368  for (i = 0; i < pdlgInfo->lpOleUIInsertObject->cClsidExclude; i++)
370  break;
371 
372  if (i < pdlgInfo->lpOleUIInsertObject->cClsidExclude)
373  continue;
374 
375  len = sizeof(keydesc);
376  if (ERROR_SUCCESS == RegQueryValueW(hkey, NULL, keydesc, &len))
377  {
378  CLSID* lpclsid = HeapAlloc(GetProcessHeap(), 0, sizeof(CLSID));
379  *lpclsid = clsid;
380 
381  len = SendMessageW(pdlgInfo->hwndObjTypeLB, LB_ADDSTRING, 0, (LPARAM)keydesc);
382  SendMessageW(pdlgInfo->hwndObjTypeLB, LB_SETITEMDATA, len, (LPARAM)lpclsid);
383  }
384  }
385 
386  pdlgInfo->bObjListInit = (ret == ERROR_NO_MORE_ITEMS);
387 
388  return pdlgInfo->bObjListInit;
389 }
#define ERROR_SUCCESS
Definition: deptool.c:10
#define LB_ADDSTRING
Definition: winuser.h:2013
#define ERROR_NO_MORE_ITEMS
Definition: compat.h:95
#define KEY_READ
Definition: nt_native.h:1023
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
long LONG
Definition: pedump.c:60
smooth NULL
Definition: ftsmooth.c:416
LONG_PTR LPARAM
Definition: windef.h:208
GLuint index
Definition: glext.h:6031
#define GetProcessHeap()
Definition: compat.h:403
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
__wchar_t WCHAR
Definition: xmlstorage.h:180
LSTATUS WINAPI RegQueryValueW(HKEY hkey, LPCWSTR name, LPWSTR data, LPLONG count)
Definition: reg.c:4254
#define MAX_PATH
Definition: compat.h:26
LPCLSID lpClsidExclude
Definition: oledlg.h:159
unsigned long DWORD
Definition: ntddk_ex.h:95
#define LB_SETITEMDATA
Definition: winuser.h:2047
static LSTATUS(WINAPI *pRegDeleteTreeW)(HKEY
int ret
REFCLSID clsid
Definition: msctf.c:82
LPOLEUIINSERTOBJECTA lpOleUIInsertObject
Definition: insobjdlg.c:42
GLenum GLsizei len
Definition: glext.h:6722
LONG WINAPI RegEnumKeyW(HKEY hKey, DWORD dwIndex, LPWSTR lpName, DWORD cbName)
Definition: reg.c:2416
static void UIINSERTOBJECTDLG_FreeObjectTypes(InsertObjectDlgInfo *pdlgInfo)
Definition: insobjdlg.c:397
#define ARRAY_SIZE(a)
Definition: main.h:24
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
Definition: compobj.c:4112
HRESULT WINAPI CLSIDFromString(LPCOLESTR idstr, LPCLSID id)
Definition: compobj.c:2338
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
Definition: reg.c:3366
#define HKEY_CLASSES_ROOT
Definition: winreg.h:10

Referenced by UIINSERTOBJECTDLG_AddControl(), UIINSERTOBJECTDLG_SelectCreateCtrl(), and UIINSERTOBJECTDLG_SelectCreateNew().

◆ UIINSERTOBJECTDLG_SelChange()

static void UIINSERTOBJECTDLG_SelChange ( InsertObjectDlgInfo pdlgInfo)
static

Definition at line 417 of file insobjdlg.c.

418 {
419  INT index;
420  WCHAR objname[MAX_PATH];
421  WCHAR objdesc[MAX_PATH];
422  WCHAR resstr[MAX_PATH];
423 
424  TRACE("\n");
425 
427  ((index = SendMessageW(pdlgInfo->hwndObjTypeLB, LB_GETCURSEL, 0, 0)) >= 0) &&
428  SendMessageW(pdlgInfo->hwndObjTypeLB, LB_GETTEXT, index, (LPARAM)objname))
429  wsprintfW(objdesc, resstr, objname);
430  else
431  objdesc[0] = 0;
432 
433  SendMessageW(pdlgInfo->hwndResultDesc, WM_SETTEXT, 0, (LPARAM)objdesc);
434 }
int WINAPIV wsprintfW(_Out_ LPWSTR, _In_ _Printf_format_string_ LPCWSTR,...)
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
int32_t INT
Definition: typedefs.h:56
HINSTANCE OLEDLG_hInstance
Definition: oledlg_main.c:39
LONG_PTR LPARAM
Definition: windef.h:208
GLuint index
Definition: glext.h:6031
#define WM_SETTEXT
Definition: winuser.h:1599
#define TRACE(s)
Definition: solgame.cpp:4
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define MAX_PATH
Definition: compat.h:26
#define index(s, c)
Definition: various.h:29
#define LB_GETTEXT
Definition: winuser.h:2031
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define LB_GETCURSEL
Definition: winuser.h:2021
#define IDS_RESULTOBJDESC
Definition: resource.h:25

Referenced by UIINSERTOBJECTDLG_SelectCreateNew(), and UIINSOBJDLG_OnWMCommand().

◆ UIINSERTOBJECTDLG_SelectCreateCtrl()

static void UIINSERTOBJECTDLG_SelectCreateCtrl ( InsertObjectDlgInfo pdlgInfo)
static

Definition at line 254 of file insobjdlg.c.

255 {
257  ShowWindow(pdlgInfo->hwndFileLBL, SW_HIDE);
258  ShowWindow(pdlgInfo->hwndFileTB, SW_HIDE);
259  ShowWindow(pdlgInfo->hwndBrowseBTN, SW_HIDE);
260 
261  ShowWindow(pdlgInfo->hwndObjTypeLBL, SW_SHOW);
262  ShowWindow(pdlgInfo->hwndObjTypeLB, SW_SHOW);
263  ShowWindow(pdlgInfo->hwndAddCtrlBTN, SW_SHOW);
264 
266 
267  /* Populate object type listbox */
268  if (!pdlgInfo->bObjListInit)
270 }
#define SW_HIDE
Definition: winuser.h:762
LRESULT WINAPI SendMessageA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
#define SW_SHOW
Definition: winuser.h:769
#define BM_SETCHECK
Definition: winuser.h:1903
static BOOL UIINSERTOBJECTDLG_PopulateObjectTypes(InsertObjectDlgInfo *pdlgInfo)
Definition: insobjdlg.c:332
#define BST_CHECKED
Definition: winuser.h:197

Referenced by UIINSERTOBJECTDLG_InitDialog(), and UIINSOBJDLG_OnWMCommand().

◆ UIINSERTOBJECTDLG_SelectCreateFromFile()

static void UIINSERTOBJECTDLG_SelectCreateFromFile ( InsertObjectDlgInfo pdlgInfo)
static

Definition at line 305 of file insobjdlg.c.

306 {
307  WCHAR resstr[MAX_PATH];
308 
309  ShowWindow(pdlgInfo->hwndAddCtrlBTN, SW_HIDE);
310  ShowWindow(pdlgInfo->hwndObjTypeLBL, SW_HIDE);
311  ShowWindow(pdlgInfo->hwndObjTypeLB, SW_HIDE);
312 
315 
316  ShowWindow(pdlgInfo->hwndFileLBL, SW_SHOW);
317  ShowWindow(pdlgInfo->hwndFileTB, SW_SHOW);
318  ShowWindow(pdlgInfo->hwndBrowseBTN, SW_SHOW);
319 
321 
323  SendMessageW(pdlgInfo->hwndResultDesc, WM_SETTEXT, 0, (LPARAM)resstr);
324 }
#define SW_HIDE
Definition: winuser.h:762
HWND hwndCreateFromFileCB
Definition: insobjdlg.c:50
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
#define IOF_CHECKDISPLAYASICON
Definition: oledlg.h:204
HINSTANCE OLEDLG_hInstance
Definition: oledlg_main.c:39
LONG_PTR LPARAM
Definition: windef.h:208
#define SW_SHOW
Definition: winuser.h:769
#define WM_SETTEXT
Definition: winuser.h:1599
#define BM_SETCHECK
Definition: winuser.h:1903
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define MAX_PATH
Definition: compat.h:26
LPOLEUIINSERTOBJECTA lpOleUIInsertObject
Definition: insobjdlg.c:42
#define IDS_RESULTFILEOBJDESC
Definition: resource.h:26
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define BST_CHECKED
Definition: winuser.h:197

Referenced by UIINSERTOBJECTDLG_InitDialog(), and UIINSOBJDLG_OnWMCommand().

◆ UIINSERTOBJECTDLG_SelectCreateNew()

static void UIINSERTOBJECTDLG_SelectCreateNew ( InsertObjectDlgInfo pdlgInfo)
static

Definition at line 278 of file insobjdlg.c.

279 {
280  ShowWindow(pdlgInfo->hwndFileLBL, SW_HIDE);
281  ShowWindow(pdlgInfo->hwndFileTB, SW_HIDE);
282  ShowWindow(pdlgInfo->hwndAddCtrlBTN, SW_HIDE);
283  ShowWindow(pdlgInfo->hwndBrowseBTN, SW_HIDE);
284 
287 
288  ShowWindow(pdlgInfo->hwndObjTypeLBL, SW_SHOW);
289  ShowWindow(pdlgInfo->hwndObjTypeLB, SW_SHOW);
290 
292 
293  if (!pdlgInfo->bObjListInit)
295 
296  UIINSERTOBJECTDLG_SelChange(pdlgInfo);
297 }
static void UIINSERTOBJECTDLG_SelChange(InsertObjectDlgInfo *pdlgInfo)
Definition: insobjdlg.c:417
#define SW_HIDE
Definition: winuser.h:762
LRESULT WINAPI SendMessageA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
#define IOF_CHECKDISPLAYASICON
Definition: oledlg.h:204
#define SW_SHOW
Definition: winuser.h:769
#define BM_SETCHECK
Definition: winuser.h:1903
static BOOL UIINSERTOBJECTDLG_PopulateObjectTypes(InsertObjectDlgInfo *pdlgInfo)
Definition: insobjdlg.c:332
LPOLEUIINSERTOBJECTA lpOleUIInsertObject
Definition: insobjdlg.c:42
#define BST_CHECKED
Definition: winuser.h:197

Referenced by UIINSERTOBJECTDLG_InitDialog(), and UIINSOBJDLG_OnWMCommand().

◆ UIInsertObjectDlgProc()

INT_PTR CALLBACK UIInsertObjectDlgProc ( HWND  hwnd,
UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam 
)
static

Definition at line 125 of file insobjdlg.c.

126 {
128 
129  switch(uMsg)
130  {
131  case WM_INITDIALOG:
132  {
134 
135  pdlgInfo->hwndSelf = hwnd;
136 
138 
140 
141  return 0;
142  }
143 
144  case WM_COMMAND:
146 
147  case WM_DESTROY:
148  if (pdlgInfo)
151  return FALSE;
152 
153  default :
154  return FALSE;
155  }
156 }
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
static LRESULT UIINSOBJDLG_OnWMCommand(HWND hwnd, WPARAM wParam, LPARAM lParam)
Definition: insobjdlg.c:164
WPARAM wParam
Definition: combotst.c:138
HANDLE WINAPI RemovePropW(_In_ HWND, _In_ LPCWSTR)
#define WM_DESTROY
Definition: winuser.h:1591
BOOL WINAPI SetPropW(_In_ HWND, _In_ LPCWSTR, _In_opt_ HANDLE)
static const WCHAR OleUIInsertObjectInfoStr[]
Definition: insobjdlg.c:74
#define WM_COMMAND
Definition: winuser.h:1722
static void UIINSERTOBJECTDLG_InitDialog(InsertObjectDlgInfo *pdlgInfo)
Definition: insobjdlg.c:214
static void UIINSERTOBJECTDLG_FreeObjectTypes(InsertObjectDlgInfo *pdlgInfo)
Definition: insobjdlg.c:397
HANDLE WINAPI GetPropW(_In_ HWND, _In_ LPCWSTR)
#define WM_INITDIALOG
Definition: winuser.h:1721
LPARAM lParam
Definition: combotst.c:139

Referenced by OleUIInsertObjectA().

◆ UIINSOBJDLG_OnWMCommand()

static LRESULT UIINSOBJDLG_OnWMCommand ( HWND  hwnd,
WPARAM  wParam,
LPARAM  lParam 
)
static

Definition at line 164 of file insobjdlg.c.

165 {
167  WORD wNotifyCode = HIWORD(wParam);
168  WORD wID = LOWORD(wParam);
169 
170  switch(wID)
171  {
172  case IDOK:
174  break;
175 
176  case IDCANCEL:
177  EndDialog(hwnd, FALSE);
178  break;
179 
180  case IDC_CREATECONTROL:
182  break;
183 
184  case IDC_CREATENEW:
186  break;
187 
188  case IDC_CREATEFROMFILE:
190  break;
191 
192  case IDC_BROWSE:
194  break;
195 
196  case IDC_ADDCONTROL:
198  break;
199 
200  case IDC_OBJTYPELIST:
201  if (wNotifyCode == LBN_SELCHANGE)
202  UIINSERTOBJECTDLG_SelChange(pdlgInfo);
203  break;
204  }
205  return 0;
206 }
static void UIINSERTOBJECTDLG_SelChange(InsertObjectDlgInfo *pdlgInfo)
Definition: insobjdlg.c:417
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
#define IDC_ADDCONTROL
Definition: resource.h:40
#define IDOK
Definition: winuser.h:824
#define IDC_BROWSE
Definition: resource.h:21
static BOOL UIINSERTOBJECTDLG_OnOpen(InsertObjectDlgInfo *pdlgInfo)
Definition: insobjdlg.c:442
static void UIINSERTOBJECTDLG_AddControl(InsertObjectDlgInfo *pdlgInfo)
Definition: insobjdlg.c:557
#define LBN_SELCHANGE
Definition: winuser.h:2057
BOOL WINAPI EndDialog(_In_ HWND, _In_ INT_PTR)
WPARAM wParam
Definition: combotst.c:138
static void UIINSERTOBJECTDLG_SelectCreateFromFile(InsertObjectDlgInfo *pdlgInfo)
Definition: insobjdlg.c:305
#define IDC_OBJTYPELIST
Definition: resource.h:33
static void UIINSERTOBJECTDLG_SelectCreateCtrl(InsertObjectDlgInfo *pdlgInfo)
Definition: insobjdlg.c:254
#define IDC_CREATEFROMFILE
Definition: resource.h:37
unsigned short WORD
Definition: ntddk_ex.h:93
static const WCHAR OleUIInsertObjectInfoStr[]
Definition: insobjdlg.c:74
HANDLE WINAPI GetPropW(_In_ HWND, _In_ LPCWSTR)
#define HIWORD(l)
Definition: typedefs.h:246
#define IDC_CREATENEW
Definition: resource.h:35
static void UIINSERTOBJECTDLG_SelectCreateNew(InsertObjectDlgInfo *pdlgInfo)
Definition: insobjdlg.c:278
#define IDCANCEL
Definition: winuser.h:825
#define LOWORD(l)
Definition: pedump.c:82
static void UIINSERTOBJECTDLG_BrowseFile(InsertObjectDlgInfo *pdlgInfo)
Definition: insobjdlg.c:513
#define IDC_CREATECONTROL
Definition: resource.h:36

Referenced by UIInsertObjectDlgProc().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( oledlg  )

Variable Documentation

◆ OLEDLG_hInstance

◆ OleUIInsertObjectInfoStr

const WCHAR OleUIInsertObjectInfoStr[]
static
Initial value:
= {'O','l','e','U','I','I','n','s','e','r','t','O','b','j','e','c','t',
'I','n','f','o','S','t','r',0}

Definition at line 74 of file insobjdlg.c.

Referenced by UIInsertObjectDlgProc(), and UIINSOBJDLG_OnWMCommand().