Windows NT 4.0 source code leak
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.
 
 
 
 
 
 

70 lines
2.1 KiB

/****************************** Module Header ******************************\
* Module Name: help.c
*
* Copyright (c) 1985-91, Microsoft Corporation
*
* This module contains the various rectangle manipulation APIs.
*
* History:
* 23-May-95 BradG Created for Kernel mode
\***************************************************************************/
BOOL FIsParentDude(PWND pwnd)
{
return(TestWF(pwnd, WEFCONTROLPARENT) || TestWF(pwnd, WFDIALOGWINDOW) ||
((GETFNID(pwnd) == FNID_BUTTON) &&
(TestWF(pwnd, BFTYPEMASK) == BS_GROUPBOX)));
}
/***************************************************************************\
* GetContextHelpId()
* Given a pwnd, this returns the Help Context Id for that window;
* Note: If a window does not have a Context Id of its own, then it inherits
* the ContextId of it's parent, if it is a child window; else, from its owner,
* it is a owned popup.
\***************************************************************************/
DWORD GetContextHelpId(
PWND pwnd)
{
DWORD dwContextId;
while (!(dwContextId = (DWORD)_GetProp(pwnd,
MAKEINTATOM(gpsi->atomContextHelpIdProp), PROPF_INTERNAL))) {
pwnd = (TestwndChild(pwnd) ?
REBASEPWND(pwnd, spwndParent) :
REBASEPWND(pwnd, spwndOwner));
if (!pwnd || (GETFNID(pwnd) == FNID_DESKTOP))
break;
}
return dwContextId;
}
/*
* Dialog Child enumeration proc
*
* Enumerates children of a dialog looking for the child under the mouse.
*
*/
BOOL CALLBACK EnumPwndDlgChildProc(PWND pwnd, LPARAM lParam)
{
PDLGENUMDATA pDlgEnumData = (PDLGENUMDATA)lParam;
if (pwnd != pDlgEnumData->pwndDialog && IsVisible(pwnd) &&
PtInRect(&pwnd->rcWindow, pDlgEnumData->ptCurHelp)) {
/*
* If it's a group box, keep enumerating. This takes care of
* the case where we have a disabled control in a group box.
* We'll find the group box first, and keep enumerating until we
* hit the disabled control.
*/
pDlgEnumData->pwndControl = pwnd;
return (FIsParentDude(pwnd));
}
return TRUE;
}