ReactOS  0.4.15-dev-439-g292f67a
insobjdlg.c
Go to the documentation of this file.
1 /*
2  * OLEDLG library
3  *
4  * Copyright 2003 Ulrich Czekalla for CodeWeavers
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19  */
20 
21 #include <stdarg.h>
22 #include <stdio.h>
23 
24 #include "windef.h"
25 #include "winbase.h"
26 #include "winreg.h"
27 #include "wine/winternl.h"
28 #include "winerror.h"
29 #include "wingdi.h"
30 #include "winuser.h"
31 #include "wine/debug.h"
32 
33 #include "oledlg.h"
34 #include "resource.h"
35 
37 
38 typedef struct
39 {
41  BOOL bObjListInit; /* Object list has been initialized */
43 
55 
57 
70 
71 typedef HRESULT (*DLLREGISTER) (void);
72 
74 static const WCHAR OleUIInsertObjectInfoStr[] = {'O','l','e','U','I','I','n','s','e','r','t','O','b','j','e','c','t',
75  'I','n','f','o','S','t','r',0};
76 
77 /***********************************************************************
78  * OleUIInsertObjectA (OLEDLG.3)
79  */
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 }
118 
119 
120 /***********************************************************************
121  * UIInsertObjectDlgProc
122  *
123  * OLE UI Insert Object dialog procedure
124  */
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 }
157 
158 
159 /***********************************************************************
160  * UIINSOBJDLG_OnWMCommand
161  *
162  * WM_COMMAND message handler
163  */
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 }
207 
208 
209 /***********************************************************************
210  * UIINSERTOBJECTDLG_InitDialog
211  *
212  * Initialize dialog display
213  */
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 }
247 
248 
249 /***********************************************************************
250  * UIINSERTOBJECTDLG_SelectCreateCtrl
251  *
252  * Select Create Control Radio Button
253  */
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 }
271 
272 
273 /***********************************************************************
274  * UIINSERTOBJECTDLG_SelectCreateNew
275  *
276  * Select Create New Radio Button
277  */
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 }
298 
299 
300 /***********************************************************************
301  * UIINSERTOBJECTDLG_SelectCreateFromFile
302  *
303  * Select Create From File Radio Button
304  */
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 }
325 
326 
327 /***********************************************************************
328  * UIINSERTOBJECTDLG_PopulateObjectTypes
329  *
330  * Populate Object Type listbox
331  */
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 }
390 
391 
392 /***********************************************************************
393  * UIINSERTOBJECTDLG_FreeObjectTypes
394  *
395  * Free Object Types listbox
396  */
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 }
410 
411 
412 /***********************************************************************
413  * UIINSERTOBJECTDLG_SelChange
414  *
415  * Handle object type selection change
416  */
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 }
435 
436 
437 /***********************************************************************
438  * UIINSERTOBJECTDLG_SelChange
439  *
440  * Handle OK Button
441  */
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 }
506 
507 
508 /***********************************************************************
509  * UIINSERTOBJECTDLG_BrowseFile
510  *
511  * Browse for the file
512  */
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 }
550 
551 
552 /***********************************************************************
553  * UIINSERTOBJECTDLG_AddControl
554  *
555  * Add control to Object Type
556  */
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 }
int WINAPIV wsprintfW(_Out_ LPWSTR, _In_ _Printf_format_string_ LPCWSTR,...)
#define OFN_FILEMUSTEXIST
Definition: commdlg.h:106
#define OFN_EXPLORER
Definition: commdlg.h:104
#define OLEUI_ERR_FINDTEMPLATEFAILURE
Definition: oledlg.h:77
#define HRESULT
Definition: msvc.h:7
static void UIINSERTOBJECTDLG_SelChange(InsertObjectDlgInfo *pdlgInfo)
Definition: insobjdlg.c:417
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
#define OLEUI_ERR_LOADTEMPLATEFAILURE
Definition: oledlg.h:78
#define IDC_ADDCONTROL
Definition: resource.h:40
#define IDC_ASICON
Definition: resource.h:41
#define TRUE
Definition: types.h:120
#define IDOK
Definition: winuser.h:824
#define OFN_LONGNAMES
Definition: commdlg.h:108
#define IDC_FILE
Definition: resource.h:44
struct png_info_def **typedef void(__cdecl typeof(png_destroy_read_struct))(struct png_struct_def **
Definition: typeof.h:49
#define IOF_CREATENEWOBJECT
Definition: oledlg.h:205
#define ERROR_SUCCESS
Definition: deptool.c:10
#define WideCharToMultiByte
Definition: compat.h:101
#define LB_ADDSTRING
Definition: winuser.h:2013
#define ERROR_NO_MORE_ITEMS
Definition: compat.h:95
HRESULT WINAPI GetClassFile(LPCOLESTR filePathName, CLSID *pclsid)
Definition: moniker.c:1213
static GLenum _GLUfuncptr fn
Definition: wgl_font.c:159
#define KEY_READ
Definition: nt_native.h:1023
#define SW_HIDE
Definition: winuser.h:762
LRESULT WINAPI SendMessageA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define IDC_BROWSE
Definition: resource.h:21
#define CP_ACP
Definition: compat.h:99
#define LB_GETITEMDATA
Definition: winuser.h:2023
GLuint GLuint GLsizei count
Definition: gl.h:1545
static BOOL UIINSERTOBJECTDLG_OnOpen(InsertObjectDlgInfo *pdlgInfo)
Definition: insobjdlg.c:442
static void UIINSERTOBJECTDLG_AddControl(InsertObjectDlgInfo *pdlgInfo)
Definition: insobjdlg.c:557
#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)
#define IOF_SELECTCREATEFROMFILE
Definition: oledlg.h:202
HRSRC WINAPI FindResourceA(HMODULE hModule, LPCSTR name, LPCSTR type)
Definition: res.c:155
#define CALLBACK
Definition: compat.h:27
#define UIINSERTOBJECT
Definition: resource.h:31
#define IOF_DISABLEDISPLAYASICON
Definition: oledlg.h:210
HWND hwndCreateFromFileCB
Definition: insobjdlg.c:50
LPVOID WINAPI LockResource(HGLOBAL handle)
Definition: res.c:550
#define MAKEINTRESOURCEA(i)
Definition: winuser.h:581
#define IDS_NOTOLEMOD
Definition: resource.h:28
static LRESULT UIINSOBJDLG_OnWMCommand(HWND hwnd, WPARAM wParam, LPARAM lParam)
Definition: insobjdlg.c:164
UINT_PTR WPARAM
Definition: windef.h:207
LPOLECLIENTSITE lpIOleClientSite
Definition: oledlg.h:163
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
int32_t INT_PTR
Definition: typedefs.h:63
#define IDS_NOTOLEMODCAPTION
Definition: resource.h:29
char * LPSTR
Definition: xmlstorage.h:182
#define LBN_SELCHANGE
Definition: winuser.h:2057
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:57
BOOL WINAPI EndDialog(_In_ HWND, _In_ INT_PTR)
WPARAM wParam
Definition: combotst.c:138
HANDLE WINAPI RemovePropW(_In_ HWND, _In_ LPCWSTR)
struct tagOFNA OPENFILENAMEA
#define MB_ICONEXCLAMATION
Definition: winuser.h:779
#define IOF_CREATEFILEOBJECT
Definition: oledlg.h:206
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
static void UIINSERTOBJECTDLG_SelectCreateFromFile(InsertObjectDlgInfo *pdlgInfo)
Definition: insobjdlg.c:305
unsigned int BOOL
Definition: ntddk_ex.h:94
long LONG
Definition: pedump.c:60
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryA(LPCSTR lpLibFileName)
Definition: loader.c:111
#define FIXME(fmt,...)
Definition: debug.h:111
#define IOF_CHECKDISPLAYASICON
Definition: oledlg.h:204
HGLOBAL WINAPI LoadResource(HINSTANCE hModule, HRSRC hRsrc)
Definition: res.c:532
HINSTANCE OLEDLG_hInstance
Definition: oledlg_main.c:39
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
#define SW_SHOW
Definition: winuser.h:769
#define LB_GETCOUNT
Definition: winuser.h:2020
#define WM_SETTEXT
Definition: winuser.h:1599
#define IDC_OBJTYPELBL
Definition: resource.h:38
#define IDC_OBJTYPELIST
Definition: resource.h:33
#define WM_DESTROY
Definition: winuser.h:1591
#define RT_DIALOG
Definition: pedump.c:367
#define BM_SETCHECK
Definition: winuser.h:1903
#define TRACE(s)
Definition: solgame.cpp:4
#define FreeLibrary(x)
Definition: compat.h:414
static void UIINSERTOBJECTDLG_SelectCreateCtrl(InsertObjectDlgInfo *pdlgInfo)
Definition: insobjdlg.c:254
HRESULT hres
Definition: protocol.c:465
#define GetProcessHeap()
Definition: compat.h:404
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
BOOL WINAPI SetPropW(_In_ HWND, _In_ LPCWSTR, _In_opt_ HANDLE)
int WINAPI MessageBoxW(_In_opt_ HWND, _In_opt_ LPCWSTR, _In_opt_ LPCWSTR, _In_ UINT)
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
__wchar_t WCHAR
Definition: xmlstorage.h:180
LONG HRESULT
Definition: typedefs.h:78
BOOL WINAPI SetWindowTextA(_In_ HWND, _In_opt_ LPCSTR)
HRESULT WINAPI OleCreate(REFCLSID rclsid, REFIID riid, DWORD renderopt, LPFORMATETC pFormatEtc, LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID *ppvObj)
Definition: ole2.c:2609
#define IDC_CREATEFROMFILE
Definition: resource.h:37
UINT WINAPI OleUIInsertObjectA(LPOLEUIINSERTOBJECTA lpOleUIInsertObject)
Definition: insobjdlg.c:80
static BOOL UIINSERTOBJECTDLG_PopulateObjectTypes(InsertObjectDlgInfo *pdlgInfo)
Definition: insobjdlg.c:332
LSTATUS WINAPI RegQueryValueW(HKEY hkey, LPCWSTR name, LPWSTR data, LPLONG count)
Definition: reg.c:4254
#define MAX_PATH
Definition: compat.h:26
#define WINAPI
Definition: msvc.h:6
unsigned short WORD
Definition: ntddk_ex.h:93
LPCLSID lpClsidExclude
Definition: oledlg.h:159
unsigned long DWORD
Definition: ntddk_ex.h:95
#define IDS_BROWSE
Definition: resource.h:27
#define LB_SETITEMDATA
Definition: winuser.h:2047
static LSTATUS(WINAPI *pRegDeleteTreeW)(HKEY
INT_PTR WINAPI DialogBoxIndirectParamA(_In_opt_ HINSTANCE, _In_ LPCDLGTEMPLATE, _In_opt_ HWND, _In_opt_ DLGPROC, _In_ LPARAM)
static const WCHAR OleUIInsertObjectInfoStr[]
Definition: insobjdlg.c:74
int ret
#define IDC_RESULTDESC
Definition: resource.h:39
REFCLSID clsid
Definition: msctf.c:82
LPOLEUIINSERTOBJECTA lpOleUIInsertObject
Definition: insobjdlg.c:42
#define index(s, c)
Definition: various.h:29
#define LB_GETTEXT
Definition: winuser.h:2031
#define IOF_SHOWINSERTCONTROL
Definition: oledlg.h:212
GLenum GLsizei len
Definition: glext.h:6722
#define OFN_HIDEREADONLY
Definition: commdlg.h:107
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
#define WM_COMMAND
Definition: winuser.h:1722
#define IDS_RESULTFILEOBJDESC
Definition: resource.h:26
LONG WINAPI RegEnumKeyW(HKEY hKey, DWORD dwIndex, LPWSTR lpName, DWORD cbName)
Definition: reg.c:2416
BOOL WINAPI EnableWindow(_In_ HWND, _In_ BOOL)
HRESULT(* DLLREGISTER)(void)
Definition: insobjdlg.c:71
static void UIINSERTOBJECTDLG_InitDialog(InsertObjectDlgInfo *pdlgInfo)
Definition: insobjdlg.c:214
#define S_OK
Definition: intsafe.h:59
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 GetOpenFileNameA(OPENFILENAMEA *ofn)
Definition: filedlg.c:4542
#define LB_GETCURSEL
Definition: winuser.h:2021
unsigned int UINT
Definition: ndis.h:50
BOOL WINAPI IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
Definition: compobj.c:4112
HANDLE WINAPI GetPropW(_In_ HWND, _In_ LPCWSTR)
#define BST_CHECKED
Definition: winuser.h:197
#define msg(x)
Definition: auth_time.c:54
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
HRESULT WINAPI CLSIDFromString(LPCOLESTR idstr, LPCLSID id)
Definition: compobj.c:2338
#define HIWORD(l)
Definition: typedefs.h:246
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
Definition: reg.c:3366
#define GetProcAddress(x, y)
Definition: compat.h:419
#define IOF_SELECTCREATECONTROL
Definition: oledlg.h:213
#define IDC_CREATENEW
Definition: resource.h:35
#define HKEY_CLASSES_ROOT
Definition: winreg.h:10
static void UIINSERTOBJECTDLG_SelectCreateNew(InsertObjectDlgInfo *pdlgInfo)
Definition: insobjdlg.c:278
#define IDC_FILELBL
Definition: resource.h:43
#define IDCANCEL
Definition: winuser.h:825
LONG_PTR LRESULT
Definition: windef.h:209
#define IDS_RESULTOBJDESC
Definition: resource.h:25
#define WM_INITDIALOG
Definition: winuser.h:1721
LPARAM lParam
Definition: combotst.c:139
static char title[]
Definition: ps.c:92
#define LOWORD(l)
Definition: pedump.c:82
static void UIINSERTOBJECTDLG_BrowseFile(InsertObjectDlgInfo *pdlgInfo)
Definition: insobjdlg.c:513
#define HeapFree(x, y, z)
Definition: compat.h:403
WINE_DEFAULT_DEBUG_CHANNEL(oledlg)
#define IDC_CREATECONTROL
Definition: resource.h:36
#define SUCCEEDED(hr)
Definition: intsafe.h:57