From fc98d1568663d6bdf5dca257b41d02352e09315a Mon Sep 17 00:00:00 2001 From: Steven Edwards Date: Wed, 14 Jan 2004 01:55:00 +0000 Subject: [PATCH] Ported oledlg.dll from WINE svn path=/trunk/; revision=7619 --- reactos/lib/oledlg/.cvsignore | 20 + reactos/lib/oledlg/Makefile.in | 16 + reactos/lib/oledlg/Makefile.ros-template | 21 + reactos/lib/oledlg/insobjdlg.c | 628 +++++++++++++++++++++++ reactos/lib/oledlg/makefile | 9 + reactos/lib/oledlg/oledlg.spec | 23 + reactos/lib/oledlg/oledlg_En.rc | 55 ++ reactos/lib/oledlg/oledlg_It.rc | 56 ++ reactos/lib/oledlg/oledlg_Nl.rc | 56 ++ reactos/lib/oledlg/oledlg_main.c | 309 +++++++++++ reactos/lib/oledlg/resource.h | 40 ++ reactos/lib/oledlg/rsrc.rc | 36 ++ 12 files changed, 1269 insertions(+) create mode 100644 reactos/lib/oledlg/.cvsignore create mode 100644 reactos/lib/oledlg/Makefile.in create mode 100644 reactos/lib/oledlg/Makefile.ros-template create mode 100644 reactos/lib/oledlg/insobjdlg.c create mode 100644 reactos/lib/oledlg/makefile create mode 100644 reactos/lib/oledlg/oledlg.spec create mode 100644 reactos/lib/oledlg/oledlg_En.rc create mode 100644 reactos/lib/oledlg/oledlg_It.rc create mode 100644 reactos/lib/oledlg/oledlg_Nl.rc create mode 100644 reactos/lib/oledlg/oledlg_main.c create mode 100644 reactos/lib/oledlg/resource.h create mode 100644 reactos/lib/oledlg/rsrc.rc diff --git a/reactos/lib/oledlg/.cvsignore b/reactos/lib/oledlg/.cvsignore new file mode 100644 index 00000000000..9edd5cbe53b --- /dev/null +++ b/reactos/lib/oledlg/.cvsignore @@ -0,0 +1,20 @@ +*.coff +*.dll +*.d +*.a +*.o +*.sym +*.map +*.tmp +Makefile.ros +idb_hist_large.bmp +idb_hist_small.bmp +idb_std_small.bmp +idb_std_large.bmp +idb_view_large.bmp +idb_view_small.bmp +idc_divider.cur +idc_divideropen.cur +idi_dragarrow.ico +idt_check.bmp +comctl32.spec.def diff --git a/reactos/lib/oledlg/Makefile.in b/reactos/lib/oledlg/Makefile.in new file mode 100644 index 00000000000..9f0a1e1858e --- /dev/null +++ b/reactos/lib/oledlg/Makefile.in @@ -0,0 +1,16 @@ +TOPSRCDIR = @top_srcdir@ +TOPOBJDIR = ../.. +SRCDIR = @srcdir@ +VPATH = @srcdir@ +MODULE = oledlg.dll +IMPORTS = ole32 comdlg32 user32 advapi32 kernel32 ntdll + +C_SRCS = \ + insobjdlg.c \ + oledlg_main.c + +RC_SRCS = rsrc.rc + +@MAKE_DLL_RULES@ + +### Dependencies: diff --git a/reactos/lib/oledlg/Makefile.ros-template b/reactos/lib/oledlg/Makefile.ros-template new file mode 100644 index 00000000000..e72ae92cc1c --- /dev/null +++ b/reactos/lib/oledlg/Makefile.ros-template @@ -0,0 +1,21 @@ +# $Id: Makefile.ros-template,v 1.1 2004/01/14 01:55:00 sedwards Exp $ + +TARGET_NAME = oledlg + +TARGET_OBJECTS = @C_SRCS@ + +TARGET_CFLAGS = @EXTRADEFS@ + +TARGET_SDKLIBS = @IMPORTS@ libwine.a wine_uuid.a ntdll.a + +TARGET_BASE = 0x76160000 + +TARGET_RC_SRCS = @RC_SRCS@ +TARGET_RC_BINSRC = @RC_BINSRC@ +TARGET_RC_BINARIES = @RC_BINARIES@ + +default: all + +DEP_OBJECTS = $(TARGET_OBJECTS) + +include $(TOOLS_PATH)/depend.mk diff --git a/reactos/lib/oledlg/insobjdlg.c b/reactos/lib/oledlg/insobjdlg.c new file mode 100644 index 00000000000..e5cdfdb45dc --- /dev/null +++ b/reactos/lib/oledlg/insobjdlg.c @@ -0,0 +1,628 @@ +/* + * OLEDLG library + * + * Copyright 2003 Ulrich Czekalla for CodeWeavers + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include +#include + +#include "windef.h" +#include "winbase.h" +#include "winreg.h" +#include "winternl.h" +#include "winnls.h" +#include "winerror.h" +#include "wingdi.h" +#include "winuser.h" +#include "wine/debug.h" +#include "wine/unicode.h" + +#include "oledlg.h" +#include "resource.h" + +WINE_DEFAULT_DEBUG_CHANNEL(oledlg); + +typedef struct +{ + HWND hwndSelf; + BOOL bObjListInit; /* Object list has been initialized */ + LPOLEUIINSERTOBJECTA lpOleUIInsertObject; + + HWND hwndObjTypeLBL; + HWND hwndObjTypeLB; + HWND hwndFileLBL; + HWND hwndFileTB; + HWND hwndCreateCtrlCB; + HWND hwndCreateNewCB; + HWND hwndCreateFromFileCB; + HWND hwndDisplayIconCB; + HWND hwndAddCtrlBTN; + HWND hwndBrowseBTN; + HWND hwndResultDesc; + +} InsertObjectDlgInfo; + +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); + +typedef HRESULT (*DLLREGISTER) (void); + +extern HINSTANCE OLEDLG_hInstance; +const char *OleUIInsertObjectInfoStr = "OleUIInsertObjectInfoStr"; + +/*********************************************************************** + * OleUIInsertObjectA (OLEDLG.3) + */ +UINT WINAPI OleUIInsertObjectA(LPOLEUIINSERTOBJECTA lpOleUIInsertObject) +{ + LRESULT lRes; + LPCVOID template; + HRSRC hRes; + InsertObjectDlgInfo dlgInfo; + HANDLE hDlgTmpl = 0; + + if (lpOleUIInsertObject->lpszTemplate || lpOleUIInsertObject->hResource) + FIXME("Customized template not supported\n"); + + /* Create the dialog from a template */ + if(!(hRes = FindResourceA(OLEDLG_hInstance,MAKEINTRESOURCEA(UIINSERTOBJECT), + (LPSTR)RT_DIALOG))) + { + return OLEUI_ERR_FINDTEMPLATEFAILURE; + } + + if (!(hDlgTmpl = LoadResource(OLEDLG_hInstance, hRes )) || + !(template = LockResource( hDlgTmpl ))) + { + return OLEUI_ERR_LOADTEMPLATEFAILURE; + } + + /* Initialize InsertObjectDlgInfo structure */ + dlgInfo.lpOleUIInsertObject = lpOleUIInsertObject; + dlgInfo.bObjListInit = FALSE; + + lRes = DialogBoxIndirectParamA(OLEDLG_hInstance, (LPDLGTEMPLATEA) template, + lpOleUIInsertObject->hWndOwner, UIInsertObjectDlgProc, + (LPARAM) &dlgInfo); + + /* Unable to create the dialog */ + if( lRes == -1) + return OLEUI_ERR_DIALOGFAILURE; + + return lRes; +} + + +/*********************************************************************** + * UIInsertObjectDlgProc + * + * OLE UI Insert Object dialog procedure + */ +INT_PTR CALLBACK UIInsertObjectDlgProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) +{ + InsertObjectDlgInfo* pdlgInfo = (InsertObjectDlgInfo*) GetPropA(hwnd,OleUIInsertObjectInfoStr); + + switch(uMsg) + { + case WM_INITDIALOG: + { + InsertObjectDlgInfo* pdlgInfo = (InsertObjectDlgInfo*)lParam; + + pdlgInfo->hwndSelf = hwnd; + + SetPropA(hwnd, OleUIInsertObjectInfoStr, (HANDLE) pdlgInfo); + + UIINSERTOBJECTDLG_InitDialog(pdlgInfo); + + return 0; + } + + case WM_COMMAND: + return UIINSOBJDLG_OnWMCommand(hwnd, wParam, lParam); + + case WM_DESTROY: + if (pdlgInfo) + UIINSERTOBJECTDLG_FreeObjectTypes(pdlgInfo); + RemovePropA(hwnd, OleUIInsertObjectInfoStr); + return FALSE; + + default : + return FALSE; + } +} + + +/*********************************************************************** + * UIINSOBJDLG_OnWMCommand + * + * WM_COMMAND message handler + */ +static LRESULT UIINSOBJDLG_OnWMCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) +{ + WORD wNotifyCode = HIWORD(wParam); + WORD wID = LOWORD(wParam); + InsertObjectDlgInfo* pdlgInfo = (InsertObjectDlgInfo*) GetPropA(hwnd,OleUIInsertObjectInfoStr); + + switch(wID) + { + case IDOK: + EndDialog(hwnd, UIINSERTOBJECTDLG_OnOpen(pdlgInfo)); + break; + + case IDCANCEL: + EndDialog(hwnd, FALSE); + break; + + case IDC_CREATECONTROL: + UIINSERTOBJECTDLG_SelectCreateCtrl(pdlgInfo); + break; + + case IDC_CREATENEW: + UIINSERTOBJECTDLG_SelectCreateNew(pdlgInfo); + break; + + case IDC_CREATEFROMFILE: + UIINSERTOBJECTDLG_SelectCreateFromFile(pdlgInfo); + break; + + case IDC_BROWSE: + UIINSERTOBJECTDLG_BrowseFile(pdlgInfo); + break; + + case IDC_ADDCONTROL: + UIINSERTOBJECTDLG_AddControl(pdlgInfo); + + case IDC_OBJTYPELIST: + { + if (wNotifyCode == LBN_SELCHANGE) + UIINSERTOBJECTDLG_SelChange(pdlgInfo); + break; + } + } + return 0; +} + + +/*********************************************************************** + * UIINSERTOBJECTDLG_InitDialog + * + * Initialize dialog display + */ +static void UIINSERTOBJECTDLG_InitDialog(InsertObjectDlgInfo* pdlgInfo) +{ + /* Initialize InsertObjectDlgInfo data structure */ + pdlgInfo->hwndObjTypeLB = GetDlgItem(pdlgInfo->hwndSelf, IDC_OBJTYPELIST); + pdlgInfo->hwndObjTypeLBL = GetDlgItem(pdlgInfo->hwndSelf, IDC_OBJTYPELBL); + pdlgInfo->hwndFileLBL = GetDlgItem(pdlgInfo->hwndSelf, IDC_FILELBL); + pdlgInfo->hwndFileTB = GetDlgItem(pdlgInfo->hwndSelf, IDC_FILE); + pdlgInfo->hwndCreateCtrlCB = GetDlgItem(pdlgInfo->hwndSelf, IDC_CREATECONTROL); + pdlgInfo->hwndCreateNewCB = GetDlgItem(pdlgInfo->hwndSelf, IDC_CREATENEW); + pdlgInfo->hwndCreateFromFileCB = GetDlgItem(pdlgInfo->hwndSelf, IDC_CREATEFROMFILE); + pdlgInfo->hwndDisplayIconCB = GetDlgItem(pdlgInfo->hwndSelf, IDC_ASICON); + pdlgInfo->hwndAddCtrlBTN = GetDlgItem(pdlgInfo->hwndSelf, IDC_ADDCONTROL); + pdlgInfo->hwndBrowseBTN = GetDlgItem(pdlgInfo->hwndSelf, IDC_BROWSE); + pdlgInfo->hwndResultDesc = GetDlgItem(pdlgInfo->hwndSelf, IDC_RESULTDESC); + + /* Setup dialog controls based on flags */ + if (pdlgInfo->lpOleUIInsertObject->lpszCaption) + SetWindowTextA(pdlgInfo->hwndSelf, pdlgInfo->lpOleUIInsertObject->lpszCaption); + + ShowWindow(pdlgInfo->hwndCreateCtrlCB, (pdlgInfo->lpOleUIInsertObject->dwFlags & + IOF_SHOWINSERTCONTROL) ? SW_SHOW : SW_HIDE); + ShowWindow(pdlgInfo->hwndDisplayIconCB, (pdlgInfo->lpOleUIInsertObject->dwFlags & + IOF_CHECKDISPLAYASICON) ? SW_SHOW : SW_HIDE); + EnableWindow(pdlgInfo->hwndDisplayIconCB, (pdlgInfo->lpOleUIInsertObject->dwFlags & + IOF_DISABLEDISPLAYASICON) ? FALSE : TRUE); + + if (pdlgInfo->lpOleUIInsertObject->dwFlags & IOF_SELECTCREATECONTROL) + UIINSERTOBJECTDLG_SelectCreateCtrl(pdlgInfo); + else if (pdlgInfo->lpOleUIInsertObject->dwFlags & IOF_SELECTCREATEFROMFILE) + UIINSERTOBJECTDLG_SelectCreateFromFile(pdlgInfo); + else /* (pdlgInfo->lpOleUIInsertObject->dwFlags & IOF_SELECTCREATENEW) */ + UIINSERTOBJECTDLG_SelectCreateNew(pdlgInfo); +} + + +/*********************************************************************** + * UIINSERTOBJECTDLG_SelectCreateCtrl + * + * Select Create Control Radio Button + */ +static void UIINSERTOBJECTDLG_SelectCreateCtrl(InsertObjectDlgInfo* pdlgInfo) +{ + ShowWindow(pdlgInfo->hwndDisplayIconCB, SW_HIDE); + ShowWindow(pdlgInfo->hwndFileLBL, SW_HIDE); + ShowWindow(pdlgInfo->hwndFileTB, SW_HIDE); + ShowWindow(pdlgInfo->hwndBrowseBTN, SW_HIDE); + + ShowWindow(pdlgInfo->hwndObjTypeLBL, SW_SHOW); + ShowWindow(pdlgInfo->hwndObjTypeLB, SW_SHOW); + ShowWindow(pdlgInfo->hwndAddCtrlBTN, SW_SHOW); + + SendMessageA(pdlgInfo->hwndCreateCtrlCB, BM_SETCHECK, BST_CHECKED, 0); + + /* Populate object type listbox */ + if (!pdlgInfo->bObjListInit) + UIINSERTOBJECTDLG_PopulateObjectTypes(pdlgInfo); +} + + +/*********************************************************************** + * UIINSERTOBJECTDLG_SelectCreateNew + * + * Select Create New Radio Button + */ +static void UIINSERTOBJECTDLG_SelectCreateNew(InsertObjectDlgInfo* pdlgInfo) +{ + ShowWindow(pdlgInfo->hwndFileLBL, SW_HIDE); + ShowWindow(pdlgInfo->hwndFileTB, SW_HIDE); + ShowWindow(pdlgInfo->hwndAddCtrlBTN, SW_HIDE); + ShowWindow(pdlgInfo->hwndBrowseBTN, SW_HIDE); + + if (pdlgInfo->lpOleUIInsertObject->dwFlags & IOF_CHECKDISPLAYASICON) + ShowWindow(pdlgInfo->hwndDisplayIconCB, SW_SHOW); + + ShowWindow(pdlgInfo->hwndObjTypeLBL, SW_SHOW); + ShowWindow(pdlgInfo->hwndObjTypeLB, SW_SHOW); + + SendMessageA(pdlgInfo->hwndCreateNewCB, BM_SETCHECK, BST_CHECKED, 0); + + if (!pdlgInfo->bObjListInit) + UIINSERTOBJECTDLG_PopulateObjectTypes(pdlgInfo); + + UIINSERTOBJECTDLG_SelChange(pdlgInfo); +} + + +/*********************************************************************** + * UIINSERTOBJECTDLG_SelectCreateFromFile + * + * Select Create From File Radio Button + */ +static void UIINSERTOBJECTDLG_SelectCreateFromFile(InsertObjectDlgInfo* pdlgInfo) +{ + char resstr[MAX_PATH]; + + ShowWindow(pdlgInfo->hwndAddCtrlBTN, SW_HIDE); + ShowWindow(pdlgInfo->hwndObjTypeLBL, SW_HIDE); + ShowWindow(pdlgInfo->hwndObjTypeLB, SW_HIDE); + + if (pdlgInfo->lpOleUIInsertObject->dwFlags & IOF_CHECKDISPLAYASICON) + ShowWindow(pdlgInfo->hwndDisplayIconCB, SW_SHOW); + + ShowWindow(pdlgInfo->hwndFileLBL, SW_SHOW); + ShowWindow(pdlgInfo->hwndFileTB, SW_SHOW); + ShowWindow(pdlgInfo->hwndBrowseBTN, SW_SHOW); + + SendMessageA(pdlgInfo->hwndCreateFromFileCB, BM_SETCHECK, BST_CHECKED, 0); + + if (LoadStringA(OLEDLG_hInstance, IDS_RESULTFILEOBJDESC, resstr, MAX_PATH)) + SendMessageA(pdlgInfo->hwndResultDesc, WM_SETTEXT, 0, (LPARAM)resstr); +} + + +/*********************************************************************** + * UIINSERTOBJECTDLG_PopulateObjectTypes + * + * Populate Object Type listbox + */ +static BOOL UIINSERTOBJECTDLG_PopulateObjectTypes(InsertObjectDlgInfo* pdlgInfo) +{ + DWORD i, len; + HKEY hkclsids; + HKEY hkey; + CLSID clsid; + HRESULT ret; + CHAR szclsid[128]; + CHAR keydesc[MAX_PATH]; + CHAR keyname[MAX_PATH]; + WCHAR wszclsid[128]; + DWORD index = 0; + + UIINSERTOBJECTDLG_FreeObjectTypes(pdlgInfo); + + RegOpenKeyExA(HKEY_CLASSES_ROOT, "CLSID", 0, KEY_READ, &hkclsids); + + while (ERROR_SUCCESS == (ret = RegEnumKeyA(hkclsids, index, szclsid, MAX_PATH))) + { + index++; + + RegOpenKeyExA(hkclsids, szclsid, 0, KEY_READ, &hkey); + + len = MAX_PATH; + if (ERROR_SUCCESS != RegQueryValueA(hkey, "Insertable", keyname, &len)) + continue; + + len = MAX_PATH; + if (ERROR_SUCCESS == RegQueryValueA(hkey, "NotInsertable", keyname, &len)) + continue; + + RtlMultiByteToUnicodeN(wszclsid, MAX_PATH, NULL, szclsid, MAX_PATH); + CLSIDFromString(wszclsid, &clsid); + + for (i = 0; i < pdlgInfo->lpOleUIInsertObject->cClsidExclude; i++) + if (IsEqualGUID(&pdlgInfo->lpOleUIInsertObject->lpClsidExclude[i], &clsid)) + break; + + if (i < pdlgInfo->lpOleUIInsertObject->cClsidExclude) + continue; + + len = MAX_PATH; + if (ERROR_SUCCESS == RegQueryValueA(hkey, NULL, keydesc, &len)) + { + CLSID* lpclsid = (CLSID*) HeapAlloc(GetProcessHeap(), 0, sizeof(CLSID)); + memcpy(lpclsid, &clsid, sizeof(CLSID)); + + len = SendMessageA(pdlgInfo->hwndObjTypeLB, LB_ADDSTRING, 0, (LPARAM)keydesc); + SendMessageA(pdlgInfo->hwndObjTypeLB, LB_SETITEMDATA, (WPARAM)len, (LPARAM)lpclsid); + } + } + + pdlgInfo->bObjListInit = (ret == ERROR_NO_MORE_ITEMS); + + return pdlgInfo->bObjListInit; +} + + +/*********************************************************************** + * UIINSERTOBJECTDLG_FreeObjectTypes + * + * Free Object Types listbox + */ +static void UIINSERTOBJECTDLG_FreeObjectTypes(InsertObjectDlgInfo* pdlgInfo) +{ + UINT i, count; + + count = SendMessageA(pdlgInfo->hwndObjTypeLB, LB_GETCOUNT, (WPARAM)0, (LPARAM)0); + + for (i = 0; i < count; i++) + { + CLSID* lpclsid = (CLSID*) SendMessageA(pdlgInfo->hwndObjTypeLB, + LB_GETITEMDATA, (WPARAM)i, (LPARAM)0); + HeapFree(GetProcessHeap(), 0, lpclsid); + } +} + + +/*********************************************************************** + * UIINSERTOBJECTDLG_SelChange + * + * Handle object type selection change + */ +static void UIINSERTOBJECTDLG_SelChange(InsertObjectDlgInfo* pdlgInfo) +{ + INT index; + CHAR objname[MAX_PATH]; + CHAR objdesc[MAX_PATH]; + CHAR resstr[MAX_PATH]; + + TRACE("\n"); + + if (LoadStringA(OLEDLG_hInstance, IDS_RESULTOBJDESC, resstr, MAX_PATH) && + ((index = SendMessageA(pdlgInfo->hwndObjTypeLB, LB_GETCURSEL, 0, 0)) >= 0) && + SendMessageA(pdlgInfo->hwndObjTypeLB, LB_GETTEXT, (WPARAM)index, (LPARAM)objname)) + sprintf(objdesc, resstr, objname); + else + objdesc[0] = 0; + + SendMessageA(pdlgInfo->hwndResultDesc, WM_SETTEXT, 0, (LPARAM)objdesc); +} + + +/*********************************************************************** + * UIINSERTOBJECTDLG_SelChange + * + * Handle OK Button + */ +static BOOL UIINSERTOBJECTDLG_OnOpen(InsertObjectDlgInfo* pdlgInfo) +{ + BOOL bret = FALSE; + + if (BST_CHECKED == SendMessageA(pdlgInfo->hwndCreateCtrlCB, BM_GETCHECK, 0, 0) || + BST_CHECKED == SendMessageA(pdlgInfo->hwndCreateNewCB, BM_GETCHECK, 0, 0)) + { + INT index = SendMessageA(pdlgInfo->hwndObjTypeLB, LB_GETCURSEL, 0, 0); + + if (index >= 0) + { + CLSID* clsid = (CLSID*) SendMessageA(pdlgInfo->hwndObjTypeLB, + LB_GETITEMDATA, (WPARAM)index, 0); + memcpy(&pdlgInfo->lpOleUIInsertObject->clsid, clsid, sizeof(CLSID)); + + if (pdlgInfo->lpOleUIInsertObject->dwFlags & IOF_CREATENEWOBJECT) + { + pdlgInfo->lpOleUIInsertObject->sc= OleCreate( + &pdlgInfo->lpOleUIInsertObject->clsid, + &pdlgInfo->lpOleUIInsertObject->iid, + pdlgInfo->lpOleUIInsertObject->oleRender, + pdlgInfo->lpOleUIInsertObject->lpFormatEtc, + pdlgInfo->lpOleUIInsertObject->lpIOleClientSite, + pdlgInfo->lpOleUIInsertObject->lpIStorage, + pdlgInfo->lpOleUIInsertObject->ppvObj); + } + + bret = TRUE; + } + } + else if (BST_CHECKED == SendMessageA(pdlgInfo->hwndCreateFromFileCB, BM_GETCHECK, 0, 0)) + { + char fname[MAX_PATH]; + + if (pdlgInfo->lpOleUIInsertObject->lpszFile) + { + HRESULT hres; + WCHAR wcsFile[MAX_PATH]; + + SendMessageA(pdlgInfo->hwndFileTB, WM_GETTEXT, (WPARAM)MAX_PATH, (LPARAM)fname); + strncpy(pdlgInfo->lpOleUIInsertObject->lpszFile, fname, pdlgInfo->lpOleUIInsertObject->cchFile); + + RtlMultiByteToUnicodeN(wcsFile, MAX_PATH, NULL, fname, MAX_PATH); + if (ERROR_SUCCESS == (hres = GetClassFile(wcsFile, &pdlgInfo->lpOleUIInsertObject->clsid))) + { + if (pdlgInfo->lpOleUIInsertObject->dwFlags & IOF_CREATEFILEOBJECT) + { + hres = OleCreateFromFile( + &pdlgInfo->lpOleUIInsertObject->clsid, + wcsFile, + &pdlgInfo->lpOleUIInsertObject->iid, + pdlgInfo->lpOleUIInsertObject->oleRender, + pdlgInfo->lpOleUIInsertObject->lpFormatEtc, + pdlgInfo->lpOleUIInsertObject->lpIOleClientSite, + pdlgInfo->lpOleUIInsertObject->lpIStorage, + pdlgInfo->lpOleUIInsertObject->ppvObj); + } + + bret = TRUE; + } + pdlgInfo->lpOleUIInsertObject->sc = hres; + } + } + + return bret; +} + + +/*********************************************************************** + * UIINSERTOBJECTDLG_BrowseFile + * + * Browse for the file + */ +static void UIINSERTOBJECTDLG_BrowseFile(InsertObjectDlgInfo* pdlgInfo) +{ + OPENFILENAMEA fn; + char fname[MAX_PATH]; + char title[32]; + + fn.lStructSize = sizeof(OPENFILENAMEA); + fn.hwndOwner = pdlgInfo->hwndSelf; + fn.hInstance = 0; + fn.lpstrFilter = "All Files\0*.*\0\0"; + fn.lpstrCustomFilter = NULL; + fn.nMaxCustFilter = 0; + fn.nFilterIndex = 0; + + SendMessageA(pdlgInfo->hwndFileTB, WM_GETTEXT, (WPARAM)MAX_PATH, (LPARAM)fname); + fn.lpstrFile = fname; + fn.nMaxFile = MAX_PATH; + + fn.lpstrFileTitle = NULL; + fn.nMaxFileTitle = 0; + fn.lpstrInitialDir = NULL; + + LoadStringA(OLEDLG_hInstance, IDS_BROWSE, title, 32); + fn.lpstrTitle = title; + + fn.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | + OFN_HIDEREADONLY | OFN_LONGNAMES; + fn.nFileOffset = 0; + fn.nFileExtension = 0; + fn.lpstrDefExt = NULL; + fn.lCustData = 0; + fn.lpfnHook = NULL; + fn.lpTemplateName = NULL; + + if (GetOpenFileNameA(&fn)) + SendMessageA(pdlgInfo->hwndFileTB, WM_SETTEXT, (WPARAM)0, (LPARAM)fn.lpstrFile); +} + + +/*********************************************************************** + * UIINSERTOBJECTDLG_AddControl + * + * Add control to Object Type + */ +static void UIINSERTOBJECTDLG_AddControl(InsertObjectDlgInfo* pdlgInfo) +{ + OPENFILENAMEA fn; + char fname[MAX_PATH]; + char title[32]; + + fn.lStructSize = sizeof(OPENFILENAMEA); + fn.hwndOwner = pdlgInfo->hwndSelf; + fn.hInstance = 0; + fn.lpstrFilter = "OLE Controls\0*.ocx\0Libraries\0*.dll\0All Files\0*.*\0\0"; + fn.lpstrCustomFilter = NULL; + fn.nMaxCustFilter = 0; + fn.nFilterIndex = 0; + + fname[0] = 0; + fn.lpstrFile = fname; + fn.nMaxFile = MAX_PATH; + + fn.lpstrFileTitle = NULL; + fn.nMaxFileTitle = 0; + fn.lpstrInitialDir = NULL; + + LoadStringA(OLEDLG_hInstance, IDS_BROWSE, title, 32); + fn.lpstrTitle = title; + + fn.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | + OFN_HIDEREADONLY | OFN_LONGNAMES; + fn.nFileOffset = 0; + fn.nFileExtension = 0; + fn.lpstrDefExt = NULL; + fn.lCustData = 0; + fn.lpfnHook = NULL; + fn.lpTemplateName = NULL; + + if (GetOpenFileNameA(&fn)) + { + HMODULE hMod; + BOOL bValid = FALSE; + + hMod = LoadLibraryA(fn.lpstrFile); + + if (hMod) + { + DLLREGISTER regproc; + + regproc = (DLLREGISTER) GetProcAddress(hMod, "DllRegisterServer"); + if (regproc) + { + if (S_OK == regproc()) + { + UIINSERTOBJECTDLG_PopulateObjectTypes(pdlgInfo); + bValid = TRUE; + } + } + + FreeLibrary(hMod); + } + + if (!bValid) + { + char title[32]; + char msg[256]; + + LoadStringA(OLEDLG_hInstance, IDS_NOTOLEMODCAPTION, title, 32); + LoadStringA(OLEDLG_hInstance, IDS_NOTOLEMOD, msg, 256); + + MessageBoxA(pdlgInfo->hwndSelf, msg, title, MB_ICONEXCLAMATION); + } + } +} diff --git a/reactos/lib/oledlg/makefile b/reactos/lib/oledlg/makefile new file mode 100644 index 00000000000..9b648b489ed --- /dev/null +++ b/reactos/lib/oledlg/makefile @@ -0,0 +1,9 @@ +# $Id: makefile,v 1.1 2004/01/14 01:55:00 sedwards Exp $ + +PATH_TO_TOP = ../.. + +TARGET_TYPE = winedll + +include $(PATH_TO_TOP)/rules.mak + +include $(TOOLS_PATH)/helper.mk diff --git a/reactos/lib/oledlg/oledlg.spec b/reactos/lib/oledlg/oledlg.spec new file mode 100644 index 00000000000..c4f35fd5778 --- /dev/null +++ b/reactos/lib/oledlg/oledlg.spec @@ -0,0 +1,23 @@ + 1 stdcall OleUIAddVerbMenuA(ptr str long long long long long long ptr) + 2 stdcall OleUICanConvertOrActivateAs(ptr long long) + 3 stdcall OleUIInsertObjectA(ptr) + 4 stdcall OleUIPasteSpecialA(ptr) + 5 stdcall OleUIEditLinksA(ptr) + 6 stdcall OleUIChangeIconA(ptr) + 7 stdcall OleUIConvertA(ptr) + 8 stdcall OleUIBusyA(ptr) + 9 stdcall OleUIUpdateLinksA(ptr long str long) + 10 varargs OleUIPromptUserA(long long) + 11 stdcall OleUIObjectPropertiesA(ptr) + 12 stdcall OleUIChangeSourceA(ptr) + 13 varargs OleUIPromptUserW(long long) + 14 stdcall OleUIAddVerbMenuW(ptr wstr long long long long long long ptr) + 15 stdcall OleUIBusyW(ptr) + 16 stdcall OleUIChangeIconW(ptr) + 17 stdcall OleUIChangeSourceW(ptr) + 18 stdcall OleUIConvertW(ptr) + 19 stdcall OleUIEditLinksW(ptr) + 20 stdcall OleUIInsertObjectW(ptr) + 21 stdcall OleUIObjectPropertiesW(ptr) + 22 stdcall OleUIPasteSpecialW(ptr) + 23 stdcall OleUIUpdateLinksW(ptr long wstr long) diff --git a/reactos/lib/oledlg/oledlg_En.rc b/reactos/lib/oledlg/oledlg_En.rc new file mode 100644 index 00000000000..d1458dda004 --- /dev/null +++ b/reactos/lib/oledlg/oledlg_En.rc @@ -0,0 +1,55 @@ +/* + * Copyright 2003 Ulrich Czekalla for CodeWeavers + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT + +UIINSERTOBJECT DIALOG DISCARDABLE 0, 0, 294, 151 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Insert Object" +FONT 8, "MS Sans Serif" +BEGIN + LISTBOX IDC_OBJTYPELIST,82,19,131,66,LBS_SORT | + LBS_NOINTEGRALHEIGHT | WS_VISIBLE | WS_VSCROLL | + WS_TABSTOP + LTEXT "Object Type:",IDC_OBJTYPELBL,82,7,53,8,WS_VISIBLE + DEFPUSHBUTTON "OK",IDOK,221,7,66,14 + PUSHBUTTON "Cancel",IDCANCEL,221,24,66,14 + GROUPBOX "Result",IDC_RESULT,7,103,208,41 + CONTROL "Create New",IDC_CREATENEW,"Button",BS_AUTORADIOBUTTON | + WS_GROUP,7,20,62,10 + CONTROL "Create Control",IDC_CREATECONTROL,"Button", + BS_AUTORADIOBUTTON | NOT WS_VISIBLE,7,54,62,10 + CONTROL "Create From File",IDC_CREATEFROMFILE,"Button", + BS_AUTORADIOBUTTON,7,37,67,10 + LTEXT "",IDC_RESULTDESC,49,112,159,23 + PUSHBUTTON "&Add Control...",IDC_ADDCONTROL,81,88,63,14,NOT WS_VISIBLE + CONTROL "Display As Icon",IDC_ASICON,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP | NOT WS_VISIBLE,223,58,64,10 + PUSHBUTTON "Browse...",IDC_BROWSE,83,53,50,14,NOT WS_VISIBLE + LTEXT "File:",IDC_FILELBL,83,27,20,8, NOT WS_VISIBLE + EDITTEXT IDC_FILE,83,37,132,13,ES_AUTOHSCROLL | NOT WS_VISIBLE +END + +STRINGTABLE DISCARDABLE +{ + IDS_RESULTOBJDESC "Insert a new %s object into your document" + IDS_RESULTFILEOBJDESC "Insert the contents of the file as an object into your document so that you may activate it using the program which created it." + IDS_BROWSE "Browse" + IDS_NOTOLEMOD "File does not appear to be a valid OLE module. Unable to register OLE control." + IDS_NOTOLEMODCAPTION "Add Control" +} diff --git a/reactos/lib/oledlg/oledlg_It.rc b/reactos/lib/oledlg/oledlg_It.rc new file mode 100644 index 00000000000..14181678402 --- /dev/null +++ b/reactos/lib/oledlg/oledlg_It.rc @@ -0,0 +1,56 @@ +/* + * Copyright 2003 Ulrich Czekalla for CodeWeavers + * Copyright 2003 Ivan Leo Murray-Smith + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +LANGUAGE LANG_ITALIAN, SUBLANG_DEFAULT + +UIINSERTOBJECT DIALOG DISCARDABLE 0, 0, 294, 151 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Insersci oggetto" +FONT 8, "MS Sans Serif" +BEGIN + LISTBOX IDC_OBJTYPELIST,82,19,131,66,LBS_SORT | + LBS_NOINTEGRALHEIGHT | WS_VISIBLE | WS_VSCROLL | + WS_TABSTOP + LTEXT "Tipo di oggetto:",IDC_OBJTYPELBL,82,7,53,8,WS_VISIBLE + DEFPUSHBUTTON "OK",IDOK,221,7,66,14 + PUSHBUTTON "Annulla",IDCANCEL,221,24,66,14 + GROUPBOX "Risultato",IDC_RESULT,7,103,208,41 + CONTROL "Crea Nuovo",IDC_CREATENEW,"Button",BS_AUTORADIOBUTTON | + WS_GROUP,7,20,62,10 + CONTROL "Crea Controllo",IDC_CREATECONTROL,"Tasto", + BS_AUTORADIOBUTTON | NOT WS_VISIBLE,7,54,62,10 + CONTROL "Crea da File",IDC_CREATEFROMFILE,"Tasto", + BS_AUTORADIOBUTTON,7,37,67,10 + LTEXT "",IDC_RESULTDESC,49,112,159,23 + PUSHBUTTON "&Aggiungi Controllo...",IDC_ADDCONTROL,81,88,63,14,NOT WS_VISIBLE + CONTROL "Visualizza come Icona",IDC_ASICON,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP | NOT WS_VISIBLE,223,58,64,10 + PUSHBUTTON "Esplora...",IDC_BROWSE,83,53,50,14,NOT WS_VISIBLE + LTEXT "File:",IDC_FILELBL,83,27,20,8, NOT WS_VISIBLE + EDITTEXT IDC_FILE,83,37,132,13,ES_AUTOHSCROLL | NOT WS_VISIBLE +END + +STRINGTABLE DISCARDABLE +{ + IDS_RESULTOBJDESC "Inserisci un nuovo oggetto %s nel documento" + IDS_RESULTFILEOBJDESC "Inserisci i contenuti del file come un oggetto nel documento in modo da poterlo attivare usando il programma che lo ha creato." + IDS_BROWSE "Esplora" + IDS_NOTOLEMOD "Il file non sembra essere un module OLE valido. Impossibile registrare il controllo OLE." + IDS_NOTOLEMODCAPTION "Aggiungi Controllo" +} diff --git a/reactos/lib/oledlg/oledlg_Nl.rc b/reactos/lib/oledlg/oledlg_Nl.rc new file mode 100644 index 00000000000..174a0a2998e --- /dev/null +++ b/reactos/lib/oledlg/oledlg_Nl.rc @@ -0,0 +1,56 @@ +/* + * Copyright 2003 Ulrich Czekalla for CodeWeavers + * Copyright 2003 Hans Leidekker + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +LANGUAGE LANG_DUTCH, SUBLANG_DEFAULT + +UIINSERTOBJECT DIALOG DISCARDABLE 0, 0, 294, 151 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Object invoegen" +FONT 8, "MS Sans Serif" +BEGIN + LISTBOX IDC_OBJTYPELIST,82,19,131,66,LBS_SORT | + LBS_NOINTEGRALHEIGHT | WS_VISIBLE | WS_VSCROLL | + WS_TABSTOP + LTEXT "Objecttype:",IDC_OBJTYPELBL,82,7,53,8,WS_VISIBLE + DEFPUSHBUTTON "OK",IDOK,221,7,66,14 + PUSHBUTTON "Annuleren",IDCANCEL,221,24,66,14 + GROUPBOX "Resultaat",IDC_RESULT,7,103,208,41 + CONTROL "Nieuw",IDC_CREATENEW,"Button",BS_AUTORADIOBUTTON | + WS_GROUP,7,20,62,10 + CONTROL "Creƫren",IDC_CREATECONTROL,"Button", + BS_AUTORADIOBUTTON | NOT WS_VISIBLE,7,54,62,10 + CONTROL "Bestand gebruiken",IDC_CREATEFROMFILE,"Button", + BS_AUTORADIOBUTTON,7,37,67,10 + LTEXT "",IDC_RESULTDESC,49,112,159,23 + PUSHBUTTON "Toevoegen...",IDC_ADDCONTROL,81,88,63,14,NOT WS_VISIBLE + CONTROL "Als pictogram weergeven",IDC_ASICON,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP | NOT WS_VISIBLE,223,58,64,10 + PUSHBUTTON "Bladeren...",IDC_BROWSE,83,53,50,14,NOT WS_VISIBLE + LTEXT "Bestandsnaam:",IDC_FILELBL,83,27,20,8, NOT WS_VISIBLE + EDITTEXT IDC_FILE,83,37,132,13,ES_AUTOHSCROLL | NOT WS_VISIBLE +END + +STRINGTABLE DISCARDABLE +{ + IDS_RESULTOBJDESC "Voeg een nieuw %s object in uw document" + IDS_RESULTFILEOBJDESC "Voeg de inhoud van het bestand als object in uw document zodat u het later kunt bewerken met het programma waarmee u het heeft gemaakt." + IDS_BROWSE "Bladeren" + IDS_NOTOLEMOD "Het bestand is geen geldig OLE bestand. Registratie is mislukt." + IDS_NOTOLEMODCAPTION "Toevoegen" +} diff --git a/reactos/lib/oledlg/oledlg_main.c b/reactos/lib/oledlg/oledlg_main.c new file mode 100644 index 00000000000..1157459d396 --- /dev/null +++ b/reactos/lib/oledlg/oledlg_main.c @@ -0,0 +1,309 @@ +/* + * OLEDLG library + * + * Copyright 1998 Patrik Stridvall + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#define COM_NO_WINDOWS_H +#include + +#include "windef.h" +#include "winbase.h" +#include "winerror.h" +#include "wingdi.h" +#include "winuser.h" +#include "oledlg.h" +#include "wine/debug.h" +#include "ole2.h" + +WINE_DEFAULT_DEBUG_CHANNEL(ole); + +HINSTANCE OLEDLG_hInstance = 0; + +/*********************************************************************** + * DllMain + */ +BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID fImpLoad) +{ + TRACE("%p 0x%lx %p\n", hinstDLL, fdwReason, fImpLoad); + + switch(fdwReason) { + case DLL_PROCESS_ATTACH: + DisableThreadLibraryCalls(hinstDLL); + OLEDLG_hInstance = hinstDLL; + break; + + case DLL_PROCESS_DETACH: + OLEDLG_hInstance = 0; + break; + } + return TRUE; +} + + +/*********************************************************************** + * OleUIAddVerbMenuA (OLEDLG.1) + */ +BOOL WINAPI OleUIAddVerbMenuA( + LPOLEOBJECT lpOleObj, LPCSTR lpszShortType, + HMENU hMenu, UINT uPos, UINT uIDVerbMin, UINT uIDVerbMax, + BOOL bAddConvert, UINT idConvert, HMENU *lphMenu) +{ + FIXME("(%p, %s, %p, %d, %d, %d, %d, %d, %p): stub\n", + lpOleObj, debugstr_a(lpszShortType), + hMenu, uPos, uIDVerbMin, uIDVerbMax, + bAddConvert, idConvert, lphMenu + ); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return FALSE; +} + +/*********************************************************************** + * OleUIAddVerbMenuW (OLEDLG.14) + */ +BOOL WINAPI OleUIAddVerbMenuW( + LPOLEOBJECT lpOleObj, LPCWSTR lpszShortType, + HMENU hMenu, UINT uPos, UINT uIDVerbMin, UINT uIDVerbMax, + BOOL bAddConvert, UINT idConvert, HMENU *lphMenu) +{ + FIXME("(%p, %s, %p, %d, %d, %d, %d, %d, %p): stub\n", + lpOleObj, debugstr_w(lpszShortType), + hMenu, uPos, uIDVerbMin, uIDVerbMax, + bAddConvert, idConvert, lphMenu + ); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return FALSE; +} + +/*********************************************************************** + * OleUICanConvertOrActivateAs (OLEDLG.2) + */ +BOOL WINAPI OleUICanConvertOrActivateAs( + REFCLSID rClsid, BOOL fIsLinkedObject, WORD wFormat) +{ + FIXME("(%p, %d, %hd): stub\n", + rClsid, fIsLinkedObject, wFormat + ); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return FALSE; +} + +/*********************************************************************** + * OleUIInsertObjectW (OLEDLG.20) + */ +UINT WINAPI OleUIInsertObjectW(LPOLEUIINSERTOBJECTW lpOleUIInsertObject) +{ + FIXME("(%p): stub\n", lpOleUIInsertObject); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return OLEUI_FALSE; +} + +/*********************************************************************** + * OleUIPasteSpecialA (OLEDLG.4) + */ +UINT WINAPI OleUIPasteSpecialA(LPOLEUIPASTESPECIALA lpOleUIPasteSpecial) +{ + FIXME("(%p): stub\n", lpOleUIPasteSpecial); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return OLEUI_FALSE; +} + +/*********************************************************************** + * OleUIPasteSpecialW (OLEDLG.22) + */ +UINT WINAPI OleUIPasteSpecialW(LPOLEUIPASTESPECIALW lpOleUIPasteSpecial) +{ + FIXME("(%p): stub\n", lpOleUIPasteSpecial); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return OLEUI_FALSE; +} + +/*********************************************************************** + * OleUIEditLinksA (OLEDLG.5) + */ +UINT WINAPI OleUIEditLinksA(LPOLEUIEDITLINKSA lpOleUIEditLinks) +{ + FIXME("(%p): stub\n", lpOleUIEditLinks); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return OLEUI_FALSE; +} + +/*********************************************************************** + * OleUIEditLinksW (OLEDLG.19) + */ +UINT WINAPI OleUIEditLinksW(LPOLEUIEDITLINKSW lpOleUIEditLinks) +{ + FIXME("(%p): stub\n", lpOleUIEditLinks); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return OLEUI_FALSE; +} + +/*********************************************************************** + * OleUIChangeIconA (OLEDLG.6) + */ +UINT WINAPI OleUIChangeIconA( + LPOLEUICHANGEICONA lpOleUIChangeIcon) +{ + FIXME("(%p): stub\n", lpOleUIChangeIcon); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return OLEUI_FALSE; +} + +/*********************************************************************** + * OleUIChangeIconW (OLEDLG.16) + */ +UINT WINAPI OleUIChangeIconW( + LPOLEUICHANGEICONW lpOleUIChangeIcon) +{ + FIXME("(%p): stub\n", lpOleUIChangeIcon); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return OLEUI_FALSE; +} + +/*********************************************************************** + * OleUIConvertA (OLEDLG.7) + */ +UINT WINAPI OleUIConvertA(LPOLEUICONVERTA lpOleUIConvert) +{ + FIXME("(%p): stub\n", lpOleUIConvert); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return OLEUI_FALSE; +} + +/*********************************************************************** + * OleUIConvertW (OLEDLG.18) + */ +UINT WINAPI OleUIConvertW(LPOLEUICONVERTW lpOleUIConvert) +{ + FIXME("(%p): stub\n", lpOleUIConvert); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return OLEUI_FALSE; +} + +/*********************************************************************** + * OleUIBusyA (OLEDLG.8) + */ +UINT WINAPI OleUIBusyA(LPOLEUIBUSYA lpOleUIBusy) +{ + FIXME("(%p): stub\n", lpOleUIBusy); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return OLEUI_FALSE; +} + +/*********************************************************************** + * OleUIBusyW (OLEDLG.15) + */ +UINT WINAPI OleUIBusyW(LPOLEUIBUSYW lpOleUIBusy) +{ + FIXME("(%p): stub\n", lpOleUIBusy); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return OLEUI_FALSE; +} + +/*********************************************************************** + * OleUIUpdateLinksA (OLEDLG.9) + */ +BOOL WINAPI OleUIUpdateLinksA( + LPOLEUILINKCONTAINERA lpOleUILinkCntr, + HWND hwndParent, LPSTR lpszTitle, INT cLinks) +{ + FIXME("(%p, %p, %s, %d): stub\n", + lpOleUILinkCntr, hwndParent, debugstr_a(lpszTitle), cLinks + ); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return FALSE; +} + +/*********************************************************************** + * OleUIUpdateLinksW (OLEDLG.23) + */ +BOOL WINAPI OleUIUpdateLinksW( + LPOLEUILINKCONTAINERW lpOleUILinkCntr, + HWND hwndParent, LPWSTR lpszTitle, INT cLinks) +{ + FIXME("(%p, %p, %s, %d): stub\n", + lpOleUILinkCntr, hwndParent, debugstr_w(lpszTitle), cLinks + ); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return FALSE; +} + +/*********************************************************************** + * OleUIPromptUserA (OLEDLG.10) + */ +INT __cdecl OleUIPromptUserA( + INT nTemplate, HWND hwndParent, ...) +{ + FIXME("(%d, %p, ...): stub\n", nTemplate, hwndParent); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return OLEUI_FALSE; +} + +/*********************************************************************** + * OleUIPromptUserW (OLEDLG.13) + */ +INT __cdecl OleUIPromptUserW( + INT nTemplate, HWND hwndParent, ...) +{ + FIXME("(%d, %p, ...): stub\n", nTemplate, hwndParent); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return OLEUI_FALSE; +} + +/*********************************************************************** + * OleUIObjectPropertiesA (OLEDLG.11) + */ +UINT WINAPI OleUIObjectPropertiesA( + LPOLEUIOBJECTPROPSA lpOleUIObjectProps) +{ + FIXME("(%p): stub\n", lpOleUIObjectProps); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return OLEUI_FALSE; +} + +/*********************************************************************** + * OleUIObjectPropertiesW (OLEDLG.21) + */ +UINT WINAPI OleUIObjectPropertiesW( + LPOLEUIOBJECTPROPSW lpOleUIObjectProps) +{ + FIXME("(%p): stub\n", lpOleUIObjectProps); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return OLEUI_FALSE; +} + +/*********************************************************************** + * OleUIChangeSourceA (OLEDLG.12) + */ +UINT WINAPI OleUIChangeSourceA( + LPOLEUICHANGESOURCEA lpOleUIChangeSource) +{ + FIXME("(%p): stub\n", lpOleUIChangeSource); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return OLEUI_FALSE; +} + +/*********************************************************************** + * OleUIChangeSourceW (OLEDLG.17) + */ +UINT WINAPI OleUIChangeSourceW( + LPOLEUICHANGESOURCEW lpOleUIChangeSource) +{ + FIXME("(%p): stub\n", lpOleUIChangeSource); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return OLEUI_FALSE; +} diff --git a/reactos/lib/oledlg/resource.h b/reactos/lib/oledlg/resource.h new file mode 100644 index 00000000000..a14f18534e3 --- /dev/null +++ b/reactos/lib/oledlg/resource.h @@ -0,0 +1,40 @@ +/* + * Definitions for OLE dialog resources + * + * Copyright 2003 Ulrich Czekalla for CodeWeavers + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#define IDS_RESULTOBJDESC 101 +#define IDS_RESULTFILEOBJDESC 102 +#define IDS_BROWSE 103 +#define IDS_NOTOLEMOD 104 +#define IDS_NOTOLEMODCAPTION 105 + +#define UIINSERTOBJECT 129 + +#define IDC_OBJTYPELIST 1000 +#define IDC_RESULT 1001 +#define IDC_CREATENEW 1002 +#define IDC_CREATECONTROL 1003 +#define IDC_CREATEFROMFILE 1004 +#define IDC_OBJTYPELBL 1005 +#define IDC_RESULTDESC 1006 +#define IDC_ADDCONTROL 1007 +#define IDC_ASICON 1008 +#define IDC_BROWSE 1009 +#define IDC_FILELBL 1010 +#define IDC_FILE 1011 diff --git a/reactos/lib/oledlg/rsrc.rc b/reactos/lib/oledlg/rsrc.rc new file mode 100644 index 00000000000..a9b05a76371 --- /dev/null +++ b/reactos/lib/oledlg/rsrc.rc @@ -0,0 +1,36 @@ +/* + * Top level resource file for OLE Dialogs + * + * Copyright 2003 Ulrich Czekalla for CodeWeavers + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "windef.h" +#include "winbase.h" +#include "winuser.h" +#include "winnls.h" +#include "resource.h" + +/* + * Everything specific to any language goes + * in one of the specific files. + * Note that you can and may override resources + * which also have a neutral version. This is to + * get localized bitmaps for example. + */ +#include "oledlg_En.rc" +#include "oledlg_It.rc" +#include "oledlg_Nl.rc"