comdlg32: Get rid of the 16-bit callback support.
This commit is contained in:
parent
6cb6862806
commit
0e00a61a38
|
@ -3740,7 +3740,7 @@ static void MemFree(void *mem)
|
||||||
* by a 32 bits application
|
* by a 32 bits application
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
static BOOL FD32_GetTemplate(PFD31_DATA lfs)
|
BOOL FD32_GetTemplate(PFD31_DATA lfs)
|
||||||
{
|
{
|
||||||
LPOPENFILENAMEW ofnW = lfs->ofnW;
|
LPOPENFILENAMEW ofnW = lfs->ofnW;
|
||||||
LPOPENFILENAMEA ofnA = lfs->ofnA;
|
LPOPENFILENAMEA ofnA = lfs->ofnA;
|
||||||
|
@ -3796,145 +3796,6 @@ static BOOL FD32_GetTemplate(PFD31_DATA lfs)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/************************************************************************
|
|
||||||
* FD32_Init [internal]
|
|
||||||
* called from the common 16/32 code to initialize 32 bit data
|
|
||||||
*/
|
|
||||||
static BOOL CALLBACK FD32_Init(LPARAM lParam, PFD31_DATA lfs, DWORD data)
|
|
||||||
{
|
|
||||||
BOOL IsUnicode = (BOOL) data;
|
|
||||||
|
|
||||||
if (IsUnicode)
|
|
||||||
{
|
|
||||||
lfs->ofnA = NULL;
|
|
||||||
lfs->ofnW = (LPOPENFILENAMEW) lParam;
|
|
||||||
if (lfs->ofnW->Flags & OFN_ENABLEHOOK)
|
|
||||||
if (lfs->ofnW->lpfnHook)
|
|
||||||
lfs->hook = TRUE;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
lfs->ofnA = (LPOPENFILENAMEA) lParam;
|
|
||||||
if (lfs->ofnA->Flags & OFN_ENABLEHOOK)
|
|
||||||
if (lfs->ofnA->lpfnHook)
|
|
||||||
lfs->hook = TRUE;
|
|
||||||
lfs->ofnW = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*lfs->ofnW));
|
|
||||||
FD31_MapOfnStructA(lfs->ofnA, lfs->ofnW, lfs->open);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (! FD32_GetTemplate(lfs)) return FALSE;
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/***********************************************************************
|
|
||||||
* FD32_CallWindowProc [internal]
|
|
||||||
*
|
|
||||||
* called from the common 16/32 code to call the appropriate hook
|
|
||||||
*/
|
|
||||||
static BOOL CALLBACK FD32_CallWindowProc(const FD31_DATA *lfs, UINT wMsg, WPARAM wParam,
|
|
||||||
LPARAM lParam)
|
|
||||||
{
|
|
||||||
BOOL ret;
|
|
||||||
|
|
||||||
if (lfs->ofnA)
|
|
||||||
{
|
|
||||||
TRACE("Call hookA %p (%p, %04x, %08lx, %08lx)\n",
|
|
||||||
lfs->ofnA->lpfnHook, lfs->hwnd, wMsg, wParam, lParam);
|
|
||||||
ret = lfs->ofnA->lpfnHook(lfs->hwnd, wMsg, wParam, lParam);
|
|
||||||
TRACE("ret hookA %p (%p, %04x, %08lx, %08lx)\n",
|
|
||||||
lfs->ofnA->lpfnHook, lfs->hwnd, wMsg, wParam, lParam);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
TRACE("Call hookW %p (%p, %04x, %08lx, %08lx)\n",
|
|
||||||
lfs->ofnW->lpfnHook, lfs->hwnd, wMsg, wParam, lParam);
|
|
||||||
ret = lfs->ofnW->lpfnHook(lfs->hwnd, wMsg, wParam, lParam);
|
|
||||||
TRACE("Ret hookW %p (%p, %04x, %08lx, %08lx)\n",
|
|
||||||
lfs->ofnW->lpfnHook, lfs->hwnd, wMsg, wParam, lParam);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
/***********************************************************************
|
|
||||||
* FD32_UpdateResult [internal]
|
|
||||||
* update the real client structures if any
|
|
||||||
*/
|
|
||||||
static void CALLBACK FD32_UpdateResult(const FD31_DATA *lfs)
|
|
||||||
{
|
|
||||||
LPOPENFILENAMEW ofnW = lfs->ofnW;
|
|
||||||
LPOPENFILENAMEA ofnA = lfs->ofnA;
|
|
||||||
|
|
||||||
if (ofnA)
|
|
||||||
{
|
|
||||||
LPSTR lpszTemp;
|
|
||||||
if (ofnW->nMaxFile &&
|
|
||||||
!WideCharToMultiByte( CP_ACP, 0, ofnW->lpstrFile, -1,
|
|
||||||
ofnA->lpstrFile, ofnA->nMaxFile, NULL, NULL ))
|
|
||||||
ofnA->lpstrFile[ofnA->nMaxFile-1] = 0;
|
|
||||||
|
|
||||||
/* offsets are not guaranteed to be the same in WCHAR to MULTIBYTE conversion */
|
|
||||||
/* set filename offset */
|
|
||||||
lpszTemp = PathFindFileNameA(ofnA->lpstrFile);
|
|
||||||
ofnA->nFileOffset = (lpszTemp - ofnA->lpstrFile);
|
|
||||||
|
|
||||||
/* set extension offset */
|
|
||||||
lpszTemp = PathFindExtensionA(ofnA->lpstrFile);
|
|
||||||
ofnA->nFileExtension = (*lpszTemp) ? (lpszTemp - ofnA->lpstrFile) + 1 : 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/***********************************************************************
|
|
||||||
* FD32_UpdateFileTitle [internal]
|
|
||||||
* update the real client structures if any
|
|
||||||
*/
|
|
||||||
static void CALLBACK FD32_UpdateFileTitle(const FD31_DATA *lfs)
|
|
||||||
{
|
|
||||||
LPOPENFILENAMEW ofnW = lfs->ofnW;
|
|
||||||
LPOPENFILENAMEA ofnA = lfs->ofnA;
|
|
||||||
|
|
||||||
if (ofnA)
|
|
||||||
{
|
|
||||||
if (!WideCharToMultiByte( CP_ACP, 0, ofnW->lpstrFileTitle, -1,
|
|
||||||
ofnA->lpstrFileTitle, ofnA->nMaxFileTitle, NULL, NULL ))
|
|
||||||
ofnA->lpstrFileTitle[ofnA->nMaxFileTitle-1] = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/***********************************************************************
|
|
||||||
* FD32_SendLbGetCurSel [internal]
|
|
||||||
* retrieve selected listbox item
|
|
||||||
*/
|
|
||||||
static LRESULT CALLBACK FD32_SendLbGetCurSel(const FD31_DATA *lfs)
|
|
||||||
{
|
|
||||||
return SendDlgItemMessageW(lfs->hwnd, lst1, LB_GETCURSEL, 0, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/************************************************************************
|
|
||||||
* FD32_Destroy [internal]
|
|
||||||
* called from the common 16/32 code to cleanup 32 bit data
|
|
||||||
*/
|
|
||||||
static void CALLBACK FD32_Destroy(const FD31_DATA *lfs)
|
|
||||||
{
|
|
||||||
/* if ofnW has been allocated, have to free everything in it */
|
|
||||||
if (lfs->ofnA)
|
|
||||||
{
|
|
||||||
FD31_FreeOfnW(lfs->ofnW);
|
|
||||||
HeapFree(GetProcessHeap(), 0, lfs->ofnW);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void FD32_SetupCallbacks(PFD31_CALLBACKS callbacks)
|
|
||||||
{
|
|
||||||
callbacks->Init = FD32_Init;
|
|
||||||
callbacks->CWP = FD32_CallWindowProc;
|
|
||||||
callbacks->UpdateResult = FD32_UpdateResult;
|
|
||||||
callbacks->UpdateFileTitle = FD32_UpdateFileTitle;
|
|
||||||
callbacks->SendLbGetCurSel = FD32_SendLbGetCurSel;
|
|
||||||
callbacks->Destroy = FD32_Destroy;
|
|
||||||
}
|
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* FD32_WMMeasureItem [internal]
|
* FD32_WMMeasureItem [internal]
|
||||||
*/
|
*/
|
||||||
|
@ -4009,13 +3870,11 @@ static BOOL GetFileName31A(LPOPENFILENAMEA lpofn, /* address of structure with d
|
||||||
HINSTANCE hInst;
|
HINSTANCE hInst;
|
||||||
BOOL bRet = FALSE;
|
BOOL bRet = FALSE;
|
||||||
PFD31_DATA lfs;
|
PFD31_DATA lfs;
|
||||||
FD31_CALLBACKS callbacks;
|
|
||||||
|
|
||||||
if (!lpofn || !FD31_Init()) return FALSE;
|
if (!lpofn || !FD31_Init()) return FALSE;
|
||||||
|
|
||||||
TRACE("ofn flags %08x\n", lpofn->Flags);
|
TRACE("ofn flags %08x\n", lpofn->Flags);
|
||||||
FD32_SetupCallbacks(&callbacks);
|
lfs = FD31_AllocPrivate((LPARAM) lpofn, dlgType, FALSE);
|
||||||
lfs = FD31_AllocPrivate((LPARAM) lpofn, dlgType, &callbacks, (DWORD) FALSE);
|
|
||||||
if (lfs)
|
if (lfs)
|
||||||
{
|
{
|
||||||
hInst = (HINSTANCE)GetWindowLongPtrW( lpofn->hwndOwner, GWLP_HINSTANCE );
|
hInst = (HINSTANCE)GetWindowLongPtrW( lpofn->hwndOwner, GWLP_HINSTANCE );
|
||||||
|
@ -4040,12 +3899,10 @@ static BOOL GetFileName31W(LPOPENFILENAMEW lpofn, /* address of structure with d
|
||||||
HINSTANCE hInst;
|
HINSTANCE hInst;
|
||||||
BOOL bRet = FALSE;
|
BOOL bRet = FALSE;
|
||||||
PFD31_DATA lfs;
|
PFD31_DATA lfs;
|
||||||
FD31_CALLBACKS callbacks;
|
|
||||||
|
|
||||||
if (!lpofn || !FD31_Init()) return FALSE;
|
if (!lpofn || !FD31_Init()) return FALSE;
|
||||||
|
|
||||||
FD32_SetupCallbacks(&callbacks);
|
lfs = FD31_AllocPrivate((LPARAM) lpofn, dlgType, TRUE);
|
||||||
lfs = FD31_AllocPrivate((LPARAM) lpofn, dlgType, &callbacks, (DWORD) TRUE);
|
|
||||||
if (lfs)
|
if (lfs)
|
||||||
{
|
{
|
||||||
hInst = (HINSTANCE)GetWindowLongPtrW( lpofn->hwndOwner, GWLP_HINSTANCE );
|
hInst = (HINSTANCE)GetWindowLongPtrW( lpofn->hwndOwner, GWLP_HINSTANCE );
|
||||||
|
|
|
@ -109,7 +109,24 @@ static void FD31_StripEditControl(HWND hwnd)
|
||||||
BOOL FD31_CallWindowProc(const FD31_DATA *lfs, UINT wMsg, WPARAM wParam,
|
BOOL FD31_CallWindowProc(const FD31_DATA *lfs, UINT wMsg, WPARAM wParam,
|
||||||
LPARAM lParam)
|
LPARAM lParam)
|
||||||
{
|
{
|
||||||
return lfs->callbacks->CWP(lfs, wMsg, wParam, lParam);
|
BOOL ret;
|
||||||
|
|
||||||
|
if (lfs->ofnA)
|
||||||
|
{
|
||||||
|
TRACE("Call hookA %p (%p, %04x, %08lx, %08lx)\n",
|
||||||
|
lfs->ofnA->lpfnHook, lfs->hwnd, wMsg, wParam, lParam);
|
||||||
|
ret = lfs->ofnA->lpfnHook(lfs->hwnd, wMsg, wParam, lParam);
|
||||||
|
TRACE("ret hookA %p (%p, %04x, %08lx, %08lx)\n",
|
||||||
|
lfs->ofnA->lpfnHook, lfs->hwnd, wMsg, wParam, lParam);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
TRACE("Call hookW %p (%p, %04x, %08lx, %08lx)\n",
|
||||||
|
lfs->ofnW->lpfnHook, lfs->hwnd, wMsg, wParam, lParam);
|
||||||
|
ret = lfs->ofnW->lpfnHook(lfs->hwnd, wMsg, wParam, lParam);
|
||||||
|
TRACE("Ret hookW %p (%p, %04x, %08lx, %08lx)\n",
|
||||||
|
lfs->ofnW->lpfnHook, lfs->hwnd, wMsg, wParam, lParam);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
|
@ -300,6 +317,7 @@ static void FD31_UpdateResult(const FD31_DATA *lfs, const WCHAR *tmpstr)
|
||||||
{
|
{
|
||||||
int lenstr2;
|
int lenstr2;
|
||||||
LPOPENFILENAMEW ofnW = lfs->ofnW;
|
LPOPENFILENAMEW ofnW = lfs->ofnW;
|
||||||
|
LPOPENFILENAMEA ofnA = lfs->ofnA;
|
||||||
WCHAR tmpstr2[BUFFILE];
|
WCHAR tmpstr2[BUFFILE];
|
||||||
WCHAR *p;
|
WCHAR *p;
|
||||||
|
|
||||||
|
@ -329,7 +347,23 @@ static void FD31_UpdateResult(const FD31_DATA *lfs, const WCHAR *tmpstr)
|
||||||
debugstr_w(ofnW->lpstrFile), ofnW->nFileOffset, ofnW->nFileExtension);
|
debugstr_w(ofnW->lpstrFile), ofnW->nFileOffset, ofnW->nFileExtension);
|
||||||
|
|
||||||
/* update the real client structures if any */
|
/* update the real client structures if any */
|
||||||
lfs->callbacks->UpdateResult(lfs);
|
if (ofnA)
|
||||||
|
{
|
||||||
|
LPSTR lpszTemp;
|
||||||
|
if (ofnW->nMaxFile &&
|
||||||
|
!WideCharToMultiByte( CP_ACP, 0, ofnW->lpstrFile, -1,
|
||||||
|
ofnA->lpstrFile, ofnA->nMaxFile, NULL, NULL ))
|
||||||
|
ofnA->lpstrFile[ofnA->nMaxFile-1] = 0;
|
||||||
|
|
||||||
|
/* offsets are not guaranteed to be the same in WCHAR to MULTIBYTE conversion */
|
||||||
|
/* set filename offset */
|
||||||
|
lpszTemp = PathFindFileNameA(ofnA->lpstrFile);
|
||||||
|
ofnA->nFileOffset = (lpszTemp - ofnA->lpstrFile);
|
||||||
|
|
||||||
|
/* set extension offset */
|
||||||
|
lpszTemp = PathFindExtensionA(ofnA->lpstrFile);
|
||||||
|
ofnA->nFileExtension = (*lpszTemp) ? (lpszTemp - ofnA->lpstrFile) + 1 : 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
|
@ -340,12 +374,19 @@ static void FD31_UpdateFileTitle(const FD31_DATA *lfs)
|
||||||
{
|
{
|
||||||
LONG lRet;
|
LONG lRet;
|
||||||
LPOPENFILENAMEW ofnW = lfs->ofnW;
|
LPOPENFILENAMEW ofnW = lfs->ofnW;
|
||||||
|
LPOPENFILENAMEA ofnA = lfs->ofnA;
|
||||||
|
|
||||||
if (ofnW->lpstrFileTitle != NULL)
|
if (ofnW->lpstrFileTitle != NULL)
|
||||||
{
|
{
|
||||||
lRet = SendDlgItemMessageW(lfs->hwnd, lst1, LB_GETCURSEL, 0, 0);
|
lRet = SendDlgItemMessageW(lfs->hwnd, lst1, LB_GETCURSEL, 0, 0);
|
||||||
SendDlgItemMessageW(lfs->hwnd, lst1, LB_GETTEXT, lRet,
|
SendDlgItemMessageW(lfs->hwnd, lst1, LB_GETTEXT, lRet,
|
||||||
(LPARAM)ofnW->lpstrFileTitle );
|
(LPARAM)ofnW->lpstrFileTitle );
|
||||||
lfs->callbacks->UpdateFileTitle(lfs);
|
if (ofnA)
|
||||||
|
{
|
||||||
|
if (!WideCharToMultiByte( CP_ACP, 0, ofnW->lpstrFileTitle, -1,
|
||||||
|
ofnA->lpstrFileTitle, ofnA->nMaxFileTitle, NULL, NULL ))
|
||||||
|
ofnA->lpstrFileTitle[ofnA->nMaxFileTitle-1] = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -396,7 +437,7 @@ static LRESULT FD31_FileListSelect( const FD31_DATA *lfs )
|
||||||
HWND hWnd = lfs->hwnd;
|
HWND hWnd = lfs->hwnd;
|
||||||
LPWSTR pstr;
|
LPWSTR pstr;
|
||||||
|
|
||||||
lRet = lfs->callbacks->SendLbGetCurSel(lfs);
|
lRet = SendDlgItemMessageW(lfs->hwnd, lst1, LB_GETCURSEL, 0, 0);
|
||||||
if (lRet == LB_ERR)
|
if (lRet == LB_ERR)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
|
@ -774,7 +815,13 @@ void FD31_DestroyPrivate(PFD31_DATA lfs)
|
||||||
if (!lfs) return;
|
if (!lfs) return;
|
||||||
hwnd = lfs->hwnd;
|
hwnd = lfs->hwnd;
|
||||||
TRACE("destroying private allocation %p\n", lfs);
|
TRACE("destroying private allocation %p\n", lfs);
|
||||||
lfs->callbacks->Destroy(lfs);
|
|
||||||
|
/* if ofnW has been allocated, have to free everything in it */
|
||||||
|
if (lfs->ofnA)
|
||||||
|
{
|
||||||
|
FD31_FreeOfnW(lfs->ofnW);
|
||||||
|
HeapFree(GetProcessHeap(), 0, lfs->ofnW);
|
||||||
|
}
|
||||||
HeapFree(GetProcessHeap(), 0, lfs);
|
HeapFree(GetProcessHeap(), 0, lfs);
|
||||||
RemovePropA(hwnd, FD31_OFN_PROP);
|
RemovePropA(hwnd, FD31_OFN_PROP);
|
||||||
}
|
}
|
||||||
|
@ -787,8 +834,7 @@ void FD31_DestroyPrivate(PFD31_DATA lfs)
|
||||||
* On entry : type = dialog procedure type (16,32A,32W)
|
* On entry : type = dialog procedure type (16,32A,32W)
|
||||||
* dlgType = dialog type (open or save)
|
* dlgType = dialog type (open or save)
|
||||||
*/
|
*/
|
||||||
PFD31_DATA FD31_AllocPrivate(LPARAM lParam, UINT dlgType,
|
PFD31_DATA FD31_AllocPrivate(LPARAM lParam, UINT dlgType, BOOL IsUnicode)
|
||||||
PFD31_CALLBACKS callbacks, DWORD data)
|
|
||||||
{
|
{
|
||||||
PFD31_DATA lfs = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(FD31_DATA));
|
PFD31_DATA lfs = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(FD31_DATA));
|
||||||
|
|
||||||
|
@ -797,8 +843,26 @@ PFD31_DATA FD31_AllocPrivate(LPARAM lParam, UINT dlgType,
|
||||||
lfs->hook = FALSE;
|
lfs->hook = FALSE;
|
||||||
lfs->lParam = lParam;
|
lfs->lParam = lParam;
|
||||||
lfs->open = (dlgType == OPEN_DIALOG);
|
lfs->open = (dlgType == OPEN_DIALOG);
|
||||||
lfs->callbacks = callbacks;
|
|
||||||
if (! lfs->callbacks->Init(lParam, lfs, data))
|
if (IsUnicode)
|
||||||
|
{
|
||||||
|
lfs->ofnA = NULL;
|
||||||
|
lfs->ofnW = (LPOPENFILENAMEW) lParam;
|
||||||
|
if (lfs->ofnW->Flags & OFN_ENABLEHOOK)
|
||||||
|
if (lfs->ofnW->lpfnHook)
|
||||||
|
lfs->hook = TRUE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
lfs->ofnA = (LPOPENFILENAMEA) lParam;
|
||||||
|
if (lfs->ofnA->Flags & OFN_ENABLEHOOK)
|
||||||
|
if (lfs->ofnA->lpfnHook)
|
||||||
|
lfs->hook = TRUE;
|
||||||
|
lfs->ofnW = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*lfs->ofnW));
|
||||||
|
FD31_MapOfnStructA(lfs->ofnA, lfs->ofnW, lfs->open);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! FD32_GetTemplate(lfs))
|
||||||
{
|
{
|
||||||
FD31_DestroyPrivate(lfs);
|
FD31_DestroyPrivate(lfs);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
|
@ -21,21 +21,7 @@
|
||||||
|
|
||||||
#define FD31_OFN_PROP "FILEDLG_OFN"
|
#define FD31_OFN_PROP "FILEDLG_OFN"
|
||||||
|
|
||||||
/* Forward declare */
|
typedef struct tagFD31_DATA
|
||||||
typedef struct tagFD31_DATA FD31_DATA, *PFD31_DATA;
|
|
||||||
|
|
||||||
typedef struct tagFD31_CALLBACKS
|
|
||||||
{
|
|
||||||
BOOL (CALLBACK *Init)(LPARAM lParam, PFD31_DATA lfs, DWORD data);
|
|
||||||
BOOL (CALLBACK *CWP)(const FD31_DATA *lfs, UINT wMsg, WPARAM wParam,
|
|
||||||
LPARAM lParam); /* CWP instead of CallWindowProc to avoid macro expansion */
|
|
||||||
void (CALLBACK *UpdateResult)(const FD31_DATA *lfs);
|
|
||||||
void (CALLBACK *UpdateFileTitle)(const FD31_DATA *lfs);
|
|
||||||
LRESULT (CALLBACK *SendLbGetCurSel)(const FD31_DATA *lfs);
|
|
||||||
void (CALLBACK *Destroy)(const FD31_DATA *lfs);
|
|
||||||
} FD31_CALLBACKS, *PFD31_CALLBACKS;
|
|
||||||
|
|
||||||
struct tagFD31_DATA
|
|
||||||
{
|
{
|
||||||
HWND hwnd; /* file dialog window handle */
|
HWND hwnd; /* file dialog window handle */
|
||||||
BOOL hook; /* TRUE if the dialog is hooked */
|
BOOL hook; /* TRUE if the dialog is hooked */
|
||||||
|
@ -47,12 +33,12 @@ struct tagFD31_DATA
|
||||||
LPOPENFILENAMEW ofnW; /* pointer either to the original structure or
|
LPOPENFILENAMEW ofnW; /* pointer either to the original structure or
|
||||||
a W copy for A/16 API */
|
a W copy for A/16 API */
|
||||||
LPOPENFILENAMEA ofnA; /* original structure if 32bits ansi dialog */
|
LPOPENFILENAMEA ofnA; /* original structure if 32bits ansi dialog */
|
||||||
PFD31_CALLBACKS callbacks; /* callbacks to handle 16/32 bit differences */
|
} FD31_DATA, *PFD31_DATA;
|
||||||
};
|
|
||||||
|
extern BOOL FD32_GetTemplate(PFD31_DATA lfs);
|
||||||
|
|
||||||
extern BOOL FD31_Init(void);
|
extern BOOL FD31_Init(void);
|
||||||
extern PFD31_DATA FD31_AllocPrivate(LPARAM lParam, UINT dlgType,
|
extern PFD31_DATA FD31_AllocPrivate(LPARAM lParam, UINT dlgType, BOOL IsUnicode);
|
||||||
PFD31_CALLBACKS callbacks, DWORD data);
|
|
||||||
extern void FD31_DestroyPrivate(PFD31_DATA lfs);
|
extern void FD31_DestroyPrivate(PFD31_DATA lfs);
|
||||||
extern void FD31_MapOfnStructA(const OPENFILENAMEA *ofnA, LPOPENFILENAMEW ofnW, BOOL open);
|
extern void FD31_MapOfnStructA(const OPENFILENAMEA *ofnA, LPOPENFILENAMEW ofnW, BOOL open);
|
||||||
extern void FD31_FreeOfnW(OPENFILENAMEW *ofnW);
|
extern void FD31_FreeOfnW(OPENFILENAMEW *ofnW);
|
||||||
|
|
Loading…
Reference in New Issue