windows-nt/Source/XPSP1/NT/sdktools/pdh/pdhui/expldlg.c

195 lines
4.3 KiB
C
Raw Permalink Normal View History

2020-09-26 03:20:57 -05:00
/*++
Copyright (C) 1996-1999 Microsoft Corporation
Module Name:
expldlg.c
Abstract:
explain dialog box functions
Revision History
Bob Watson (bobw) mar-97 Created
--*/
#include <windows.h>
#include <tchar.h>
#include <pdh.h>
#include "pdhidef.h"
#include "pdhdlgs.h"
#include "expldlg.h"
#include "pdhui.h"
//
// Constants used in this module
//
WCHAR PdhiszTitleString[MAX_PATH+1];
STATIC_BOOL
ExplainTextDlg_WM_INITDIALOG (
IN HWND hDlg,
IN WPARAM wParam,
IN LPARAM lParam
)
{
RECT ParentRect;
RECT rectDeskTop;
RECT rectDlg;
BOOL bResult = FALSE;
UNREFERENCED_PARAMETER (lParam);
UNREFERENCED_PARAMETER (wParam);
bResult = GetWindowRect(GetDesktopWindow(), & rectDeskTop)
&& GetWindowRect(hDlg, & rectDlg);
GetWindowTextW (hDlg, PdhiszTitleString, MAX_PATH);
if (GetWindowRect (GetParent(hDlg), & ParentRect)) {
int x = ParentRect.left;
int y = ParentRect.bottom + 1;
if (bResult) {
if ( y + (rectDlg.bottom - rectDlg.top)
> (rectDeskTop.bottom - rectDeskTop.top)) {
// Explain dialog will be off-screen at the bottom, so
// reposition it to top of AddCounter dialog
//
y = ParentRect.top - (rectDlg.bottom - rectDlg.top) - 1;
if (y < 0) {
// Explain dialog will be off-screen at the top, use
// original calculation
//
y = ParentRect.bottom + 1;
}
}
}
SetWindowPos (hDlg, HWND_TOP, x, y, 0, 0, SWP_SHOWWINDOW | SWP_NOSIZE);
} else {
ShowWindow (hDlg, SW_SHOW);
}
return FALSE;
}
STATIC_BOOL
ExplainTextDlg_WM_COMMAND (
IN HWND hDlg,
IN WPARAM wParam,
IN LPARAM lParam
)
{
WORD wNotifyMsg;
UNREFERENCED_PARAMETER (lParam);
UNREFERENCED_PARAMETER (hDlg);
wNotifyMsg = HIWORD(wParam);
switch (LOWORD(wParam)) { // select on the control ID
default:
return FALSE;
}
}
STATIC_BOOL
ExplainTextDlg_WM_SYSCOMMAND (
IN HWND hDlg,
IN WPARAM wParam,
IN LPARAM lParam
)
{
UNREFERENCED_PARAMETER (lParam);
switch (wParam) {
case SC_CLOSE:
PostMessageW (GetParent(hDlg), EDM_EXPLAIN_DLG_CLOSING, 0, 0);
EndDialog (hDlg, IDOK);
return TRUE;
default:
return FALSE;
}
}
STATIC_BOOL
ExplainTextDlg_WM_CLOSE (
IN HWND hDlg,
IN WPARAM wParam,
IN LPARAM lParam
)
{
UNREFERENCED_PARAMETER (lParam);
UNREFERENCED_PARAMETER (wParam);
UNREFERENCED_PARAMETER (hDlg);
return TRUE;
}
STATIC_BOOL
ExplainTextDlg_WM_DESTROY (
IN HWND hDlg,
IN WPARAM wParam,
IN LPARAM lParam
)
{
UNREFERENCED_PARAMETER (lParam);
UNREFERENCED_PARAMETER (wParam);
UNREFERENCED_PARAMETER (hDlg);
return TRUE;
}
BOOL
ExplainTextDlgProc (
IN HWND hDlg,
IN UINT message,
IN WPARAM wParam,
IN LPARAM lParam
)
{
WCHAR szCaption[MAX_PATH*2];
switch (message) {
case WM_INITDIALOG:
return ExplainTextDlg_WM_INITDIALOG (hDlg, wParam, lParam);
case WM_COMMAND:
return ExplainTextDlg_WM_COMMAND (hDlg, wParam, lParam);
case WM_SYSCOMMAND:
return ExplainTextDlg_WM_SYSCOMMAND (hDlg, wParam, lParam);
case WM_CLOSE:
return ExplainTextDlg_WM_CLOSE (hDlg, wParam, lParam);
case WM_DESTROY:
return ExplainTextDlg_WM_DESTROY (hDlg, wParam, lParam);
case EDM_UPDATE_EXPLAIN_TEXT:
if (lParam != 0) {
SetWindowTextW (GetDlgItem(hDlg, IDC_EXPLAIN_TEXT), (LPCWSTR)lParam);
} else {
SetWindowTextW (GetDlgItem(hDlg, IDC_EXPLAIN_TEXT), cszEmptyString);
}
return TRUE;
case EDM_UPDATE_TITLE_TEXT:
lstrcpyW (szCaption, PdhiszTitleString);
if (lParam != 0) {
if (*(LPWSTR)lParam != 0) {
lstrcatW (szCaption, cszSpacer);
lstrcatW (szCaption, (LPCWSTR)lParam);
}
}
SetWindowTextW (hDlg, (LPCWSTR)szCaption);
return TRUE;
default:
return FALSE;
}
}