Leaked source code of windows server 2003
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

/****************************** 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;
}