421 lines
9.7 KiB
C
421 lines
9.7 KiB
C
|
/*++
|
|||
|
|
|||
|
Copyright (c) 1990-1995 Microsoft Corporation
|
|||
|
|
|||
|
|
|||
|
Module Name:
|
|||
|
|
|||
|
debug.c
|
|||
|
|
|||
|
|
|||
|
Abstract:
|
|||
|
|
|||
|
This module contains all debugging routines
|
|||
|
|
|||
|
|
|||
|
Author:
|
|||
|
|
|||
|
30-Aug-1995 Wed 19:01:07 created -by- Daniel Chou (danielc)
|
|||
|
|
|||
|
|
|||
|
[Environment:]
|
|||
|
|
|||
|
NT Windows - Common Printer Driver UI DLL.
|
|||
|
|
|||
|
|
|||
|
[Notes:]
|
|||
|
|
|||
|
|
|||
|
Revision History:
|
|||
|
|
|||
|
|
|||
|
--*/
|
|||
|
|
|||
|
|
|||
|
#include "precomp.h"
|
|||
|
#pragma hdrstop
|
|||
|
|
|||
|
#if DBG
|
|||
|
|
|||
|
|
|||
|
BOOL DoCPSUIWarn = TRUE;
|
|||
|
BOOL DoDbgMsg = TRUE;
|
|||
|
BOOL DoIntMsg = FALSE;
|
|||
|
|
|||
|
|
|||
|
LPSTR pTVOTName[] = { "TVOT_2STATES",
|
|||
|
"TVOT_3STATES",
|
|||
|
"TVOT_UDARROW",
|
|||
|
"TVOT_TRACKBAR",
|
|||
|
"TVOT_SCROLLBAR",
|
|||
|
"TVOT_LISTBOX",
|
|||
|
"TVOT_COMBOBOX",
|
|||
|
"TVOT_EDITBOX",
|
|||
|
"TVOT_PUSHBUTTON",
|
|||
|
"TVOT_CHKBOX" };
|
|||
|
|
|||
|
LPSTR pDMPubName[] = { "DMPUB_NONE",
|
|||
|
"DMPUB_ORIENTATION",
|
|||
|
"DMPUB_SCALE",
|
|||
|
"DMPUB_COPIES_COLLATE",
|
|||
|
"DMPUB_DEFSOURCE",
|
|||
|
"DMPUB_PRINTQUALITY",
|
|||
|
"DMPUB_COLOR",
|
|||
|
"DMPUB_DUPLEX",
|
|||
|
"DMPUB_TTOPTION",
|
|||
|
"DMPUB_FORMNAME",
|
|||
|
"DMPUB_ICMMETHOD",
|
|||
|
"DMPUB_ICMINTENT",
|
|||
|
"DMPUB_MEDIATYPE",
|
|||
|
"DMPUB_DITHERTYPE",
|
|||
|
"DMPUB_OUTPUTBIN",
|
|||
|
"DMPUB_QUALITY",
|
|||
|
"DMPUB_NUP",
|
|||
|
"DMPUB_PAGEORDER",
|
|||
|
"<DMPUB_USER>"
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
|
|||
|
VOID
|
|||
|
cdecl
|
|||
|
CPSUIDbgPrint(
|
|||
|
LPSTR pszFormat,
|
|||
|
...
|
|||
|
)
|
|||
|
|
|||
|
/*++
|
|||
|
|
|||
|
Routine Description:
|
|||
|
|
|||
|
This fucntion output the debug informat to the debugger
|
|||
|
|
|||
|
|
|||
|
Arguments:
|
|||
|
|
|||
|
pszFormat - format string
|
|||
|
|
|||
|
... - variable data
|
|||
|
|
|||
|
|
|||
|
Return Value:
|
|||
|
|
|||
|
|
|||
|
VOID
|
|||
|
|
|||
|
Author:
|
|||
|
|
|||
|
30-Aug-1995 Wed 19:10:34 updated -by- Daniel Chou (danielc)
|
|||
|
|
|||
|
|
|||
|
Revision History:
|
|||
|
|
|||
|
|
|||
|
--*/
|
|||
|
|
|||
|
{
|
|||
|
va_list vaList;
|
|||
|
static WCHAR OutBuf[768];
|
|||
|
static WCHAR FormatBuf[256];
|
|||
|
|
|||
|
//
|
|||
|
// We assume that UNICODE flag is turn on for the compilation, bug the
|
|||
|
// format string passed to here is ASCII version, so we need to convert
|
|||
|
// it to LPWSTR before the wvsprintf()
|
|||
|
//
|
|||
|
|
|||
|
va_start(vaList, pszFormat);
|
|||
|
|
|||
|
MultiByteToWideChar(CP_ACP, 0, pszFormat, -1, FormatBuf, ARRAYSIZE(FormatBuf));
|
|||
|
|
|||
|
wvnsprintf(OutBuf, ARRAYSIZE(OutBuf) - 1, FormatBuf, vaList);
|
|||
|
va_end(vaList);
|
|||
|
|
|||
|
OutputDebugString((LPTSTR)OutBuf);
|
|||
|
OutputDebugString(L"\n");
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
VOID
|
|||
|
CPSUIDbgType(
|
|||
|
INT Type
|
|||
|
)
|
|||
|
|
|||
|
/*++
|
|||
|
|
|||
|
Routine Description:
|
|||
|
|
|||
|
this function output the ERROR/WARNING message
|
|||
|
|
|||
|
|
|||
|
Arguments:
|
|||
|
|
|||
|
Type
|
|||
|
|
|||
|
Return Value:
|
|||
|
|
|||
|
|
|||
|
Author:
|
|||
|
|
|||
|
30-Aug-1995 Wed 19:10:42 updated -by- Daniel Chou (danielc)
|
|||
|
|
|||
|
Revision History:
|
|||
|
|
|||
|
|
|||
|
--*/
|
|||
|
|
|||
|
{
|
|||
|
static WCHAR DebugDLLName[] = L"ComPstUI";
|
|||
|
|
|||
|
|
|||
|
if (Type) {
|
|||
|
|
|||
|
OutputDebugString((Type < 0) ? L"ERROR: " : L"WARNING: ");
|
|||
|
}
|
|||
|
|
|||
|
OutputDebugString(DebugDLLName);
|
|||
|
OutputDebugString(L": ");
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
VOID
|
|||
|
_CPSUIAssert(
|
|||
|
LPSTR pMsg,
|
|||
|
LPSTR pFalseExp,
|
|||
|
LPSTR pFilename,
|
|||
|
UINT LineNo,
|
|||
|
LPVOID Exp,
|
|||
|
BOOL Stop
|
|||
|
)
|
|||
|
|
|||
|
/*++
|
|||
|
|
|||
|
Routine Description:
|
|||
|
|
|||
|
This function output assertion message and false expression to the debugger
|
|||
|
then break into the debugger
|
|||
|
|
|||
|
|
|||
|
Arguments:
|
|||
|
|
|||
|
pMsg - Message to displayed
|
|||
|
|
|||
|
pFlaseExp - false expression
|
|||
|
|
|||
|
pFilename - source filename
|
|||
|
|
|||
|
LineNo - line number of the flase expression
|
|||
|
|
|||
|
Return Value:
|
|||
|
|
|||
|
VOID
|
|||
|
|
|||
|
|
|||
|
Author:
|
|||
|
|
|||
|
30-Aug-1995 Wed 19:10:49 updated -by- Daniel Chou (danielc)
|
|||
|
|
|||
|
|
|||
|
Revision History:
|
|||
|
|
|||
|
|
|||
|
--*/
|
|||
|
|
|||
|
{
|
|||
|
OutputDebugString(L"\n");
|
|||
|
|
|||
|
if ((pMsg) && (*pMsg)) {
|
|||
|
|
|||
|
CPSUIDbgPrint(pMsg, Exp);
|
|||
|
}
|
|||
|
|
|||
|
CPSUIDbgPrint("Assertion failed (%hs) in %hs line %u",
|
|||
|
pFalseExp, pFilename, LineNo);
|
|||
|
|
|||
|
if (Stop) {
|
|||
|
|
|||
|
DebugBreak();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
VOID
|
|||
|
CPSUIDbgShowItem(
|
|||
|
PTVWND pTVWnd,
|
|||
|
LPSTR pTitle,
|
|||
|
UINT Level,
|
|||
|
POPTITEM pItem
|
|||
|
)
|
|||
|
{
|
|||
|
if (pItem) {
|
|||
|
|
|||
|
POPTTYPE pOptType;
|
|||
|
POPTPARAM pOptParam;
|
|||
|
PEXTCHKBOX pECB = pItem->pExtChkBox;
|
|||
|
UINT i;
|
|||
|
GSBUF_DEF(pItem, MAX_RES_STR_CHARS);
|
|||
|
|
|||
|
|
|||
|
if (pOptType = pItem->pOptType) {
|
|||
|
|
|||
|
pOptParam = pOptType->pOptParam;
|
|||
|
|
|||
|
} else {
|
|||
|
|
|||
|
pOptParam = NULL;
|
|||
|
}
|
|||
|
|
|||
|
CPSUIDbgPrint("\n---- %hs OPTITEM = %08lx -----", pTitle, pItem);
|
|||
|
CPSUIDbgPrint("cbSize = %ld", (DWORD)pItem->cbSize);
|
|||
|
CPSUIDbgPrint("pOptType = %08lx", pItem->pOptType);
|
|||
|
|
|||
|
GSBUF_GETSTR(pItem->pName);
|
|||
|
|
|||
|
CPSUIDbgPrint("pName = %ws", GSBUF_BUF);
|
|||
|
|
|||
|
GSBUF_RESET;
|
|||
|
|
|||
|
if ((pOptType) && (pOptParam)) {
|
|||
|
|
|||
|
switch (pOptType->Type) {
|
|||
|
|
|||
|
case TVOT_LISTBOX:
|
|||
|
case TVOT_2STATES:
|
|||
|
case TVOT_3STATES:
|
|||
|
case TVOT_COMBOBOX:
|
|||
|
|
|||
|
if ((pItem->Sel < 0) || (pItem->Sel > pOptType->Count)) {
|
|||
|
|
|||
|
GSBUF_GETSTR(pTVWnd->OptParamNone.pData);
|
|||
|
|
|||
|
} else {
|
|||
|
|
|||
|
GSBUF_GETSTR(pOptParam[pItem->Sel].pData);
|
|||
|
}
|
|||
|
|
|||
|
break;
|
|||
|
|
|||
|
case TVOT_EDITBOX:
|
|||
|
|
|||
|
GSBUF_GETSTR(pItem->pSel);
|
|||
|
break;
|
|||
|
|
|||
|
case TVOT_UDARROW:
|
|||
|
case TVOT_TRACKBAR:
|
|||
|
case TVOT_SCROLLBAR:
|
|||
|
case TVOT_PUSHBUTTON:
|
|||
|
case TVOT_CHKBOX:
|
|||
|
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
CPSUIDbgPrint("pSel = %ld, Name:<%ws> [%08lx]", pItem->pSel,
|
|||
|
GSBUF_BUF, pItem->pSel);
|
|||
|
CPSUIDbgPrint("UserData = %08lx", pItem->UserData);
|
|||
|
CPSUIDbgPrint("pExtChkBox = %08lx", pECB);
|
|||
|
|
|||
|
if ((Level > 0) && (pECB)) {
|
|||
|
|
|||
|
if (pItem->Flags & OPTIF_EXT_IS_EXTPUSH) {
|
|||
|
|
|||
|
PEXTPUSH pEP = (PEXTPUSH)pECB;
|
|||
|
|
|||
|
|
|||
|
CPSUIDbgPrint(" ---- PEXTPUSH ----");
|
|||
|
CPSUIDbgPrint(" cbSize = %ld", (DWORD)pEP->cbSize);
|
|||
|
CPSUIDbgPrint(" Flags = %02lx", (DWORD)pEP->Flags);
|
|||
|
|
|||
|
GSBUF_RESET;
|
|||
|
GSBUF_GETSTR(pEP->pTitle);
|
|||
|
CPSUIDbgPrint(" pTitle = %ws", GSBUF_BUF);
|
|||
|
CPSUIDbgPrint(" DlgProc/pfnCallBack = %08lx", pEP->DlgProc);
|
|||
|
CPSUIDbgPrint(" IconID = %0ld", pEP->IconID);
|
|||
|
CPSUIDbgPrint(" DlgTemplateID = %0ld", pEP->DlgTemplateID);
|
|||
|
CPSUIDbgPrint(" ~~~~~~~~~~~~~~~~~~~~");
|
|||
|
|
|||
|
} else {
|
|||
|
|
|||
|
CPSUIDbgPrint(" ---- PEXTCHKBOX ----");
|
|||
|
CPSUIDbgPrint(" cbSize = %ld", (DWORD)pECB->cbSize);
|
|||
|
CPSUIDbgPrint(" Flags = %02lx", (DWORD)pECB->Flags);
|
|||
|
|
|||
|
GSBUF_RESET;
|
|||
|
GSBUF_GETSTR(pECB->pTitle);
|
|||
|
CPSUIDbgPrint(" pTitle = %ws", GSBUF_BUF);
|
|||
|
|
|||
|
GSBUF_RESET;
|
|||
|
GSBUF_GETSTR(pECB->pSeparator);
|
|||
|
CPSUIDbgPrint(" pSeparator = %ws", GSBUF_BUF);
|
|||
|
|
|||
|
GSBUF_RESET;
|
|||
|
GSBUF_GETSTR(pECB->pCheckedName);
|
|||
|
CPSUIDbgPrint(" pCheckBoxName = %ws", GSBUF_BUF);
|
|||
|
CPSUIDbgPrint(" IconID = %0ld", pECB->IconID);
|
|||
|
CPSUIDbgPrint(" ~~~~~~~~~~~~~~~~~~~~");
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if ((i = pItem->DMPubID) > DMPUB_LAST) {
|
|||
|
|
|||
|
i = DMPUB_LAST + 1;
|
|||
|
}
|
|||
|
|
|||
|
CPSUIDbgPrint("Flags = 0x%08lx", (DWORD)pItem->Flags);
|
|||
|
CPSUIDbgPrint("HelpIndex = %ld", (DWORD)pItem->HelpIndex);
|
|||
|
CPSUIDbgPrint("Level = %ld", (DWORD)pItem->Level);
|
|||
|
CPSUIDbgPrint("DMPubID = %hs (%ld)", pDMPubName[i], (DWORD)pItem->DMPubID);
|
|||
|
CPSUIDbgPrint("DlgPageIdx = %ld", (DWORD)pItem->DlgPageIdx);
|
|||
|
|
|||
|
CPSUIDbgPrint("HTREEITEM = %08lx", _OI_HITEM(pItem));
|
|||
|
CPSUIDbgPrint("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
|
|||
|
|
|||
|
|
|||
|
if ((Level > 0) && (pOptType)) {
|
|||
|
|
|||
|
CPSUIDbgPrint(" ------- OPTTYPE --------");
|
|||
|
CPSUIDbgPrint(" cbSize = %ld", (DWORD)pOptType->cbSize);
|
|||
|
CPSUIDbgPrint(" Type = %hs", pTVOTName[pOptType->Type]);
|
|||
|
CPSUIDbgPrint(" Flags = %02lx", (DWORD)pOptType->Flags);
|
|||
|
CPSUIDbgPrint(" Count = %ld", (DWORD)pOptType->Count);
|
|||
|
CPSUIDbgPrint(" BegCtrlID = %ld", (DWORD)pOptType->BegCtrlID);
|
|||
|
CPSUIDbgPrint(" pOptParam = %08lx", pOptParam);
|
|||
|
CPSUIDbgPrint(" Style = %04lx", (DWORD)pOptType->Style);
|
|||
|
CPSUIDbgPrint(" ~~~~~~~~~~~~~~~~~~~~~~~~");
|
|||
|
|
|||
|
if ((Level > 1) && (pOptParam)) {
|
|||
|
|
|||
|
i = pOptType->Count;
|
|||
|
|
|||
|
for (i = 0; i < (UINT)pOptType->Count; i++, pOptParam++) {
|
|||
|
|
|||
|
GSBUF_RESET;
|
|||
|
GSBUF_GETSTR(pOptParam->pData);
|
|||
|
|
|||
|
CPSUIDbgPrint(" ------- OPTPARAM %ld -------", (DWORD)i);
|
|||
|
CPSUIDbgPrint(" cbSize = %ld ", (DWORD)pOptParam->cbSize);
|
|||
|
CPSUIDbgPrint(" Flags = %02lx", (DWORD)pOptParam->Flags);
|
|||
|
CPSUIDbgPrint(" Style = %ld", (DWORD)pOptParam->Style);
|
|||
|
CPSUIDbgPrint(" pData = %ws (%08lx)", GSBUF_BUF, pOptParam->pData);
|
|||
|
CPSUIDbgPrint(" IconID = %ld", (DWORD)pOptParam->IconID);
|
|||
|
CPSUIDbgPrint(" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
CPSUIDbgPrint("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
|
|||
|
|
|||
|
} else {
|
|||
|
|
|||
|
CPSUIDbgPrint("\n\n---- %hs OPTITEM = %08lx -----", pTitle, pItem);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
#endif // DBG
|