You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
86 lines
2.7 KiB
86 lines
2.7 KiB
/****************************** Module Header ******************************\
|
|
* Module Name: getset.c
|
|
*
|
|
* Copyright (c) 1985 - 1999, Microsoft Corporation
|
|
*
|
|
* This module contains window manager information routines
|
|
*
|
|
* History:
|
|
* 10-22-90 MikeHar Ported functions from Win 3.0 sources.
|
|
* 13-Feb-1991 mikeke Added Revalidation code (None)
|
|
* 08-Feb-1991 IanJa Unicode/ANSI aware and neutral
|
|
\***************************************************************************/
|
|
|
|
/***************************************************************************\
|
|
* MapServerToClientPfn
|
|
*
|
|
* Returns the client wndproc representing the server wndproc passed in
|
|
*
|
|
* 01-13-92 ScottLu Created.
|
|
\***************************************************************************/
|
|
|
|
ULONG_PTR MapServerToClientPfn(
|
|
KERNEL_ULONG_PTR dw,
|
|
BOOL bAnsi)
|
|
{
|
|
int i;
|
|
|
|
for (i = FNID_WNDPROCSTART; i <= FNID_WNDPROCEND; i++) {
|
|
if ((WNDPROC_PWND)dw == STOCID(i)) {
|
|
if (bAnsi) {
|
|
return FNID_TO_CLIENT_PFNA_CLIENT(i);
|
|
} else {
|
|
return FNID_TO_CLIENT_PFNW_CLIENT(i);
|
|
}
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
/***************************************************************************\
|
|
* MapClientNeuterToClientPfn
|
|
*
|
|
* Maps client Neuter routines like editwndproc to Ansi or Unicode versions
|
|
* and back again.
|
|
*
|
|
* 01-13-92 ScottLu Created.
|
|
\***************************************************************************/
|
|
|
|
ULONG_PTR MapClientNeuterToClientPfn(
|
|
PCLS pcls,
|
|
KERNEL_ULONG_PTR dw,
|
|
BOOL bAnsi)
|
|
{
|
|
/*
|
|
* Default to the class window proc.
|
|
*/
|
|
if (dw == 0) {
|
|
dw = (KERNEL_ULONG_PTR)pcls->lpfnWndProc;
|
|
}
|
|
|
|
/*
|
|
* If this is one of our controls and it hasn't been subclassed, try
|
|
* to return the correct ANSI/Unicode function.
|
|
*/
|
|
if (pcls->fnid >= FNID_CONTROLSTART && pcls->fnid <= FNID_CONTROLEND) {
|
|
if (!bAnsi) {
|
|
if (FNID_TO_CLIENT_PFNA_KERNEL(pcls->fnid) == dw)
|
|
return FNID_TO_CLIENT_PFNW_CLIENT(pcls->fnid);
|
|
} else {
|
|
if (FNID_TO_CLIENT_PFNW_KERNEL(pcls->fnid) == dw)
|
|
return FNID_TO_CLIENT_PFNA_CLIENT(pcls->fnid);
|
|
}
|
|
#ifdef BUILD_WOW6432
|
|
if (!bAnsi) {
|
|
if (FNID_TO_CLIENT_PFNW_KERNEL(pcls->fnid) == dw)
|
|
return FNID_TO_CLIENT_PFNW_CLIENT(pcls->fnid);
|
|
} else {
|
|
if (FNID_TO_CLIENT_PFNA_KERNEL(pcls->fnid) == dw)
|
|
return FNID_TO_CLIENT_PFNA_CLIENT(pcls->fnid);
|
|
}
|
|
dw = (KERNEL_ULONG_PTR)MapKernelClientFnToClientFn((WNDPROC_PWND)dw);
|
|
#endif
|
|
}
|
|
|
|
return (ULONG_PTR)dw;
|
|
}
|