121 lines
4.5 KiB
C
121 lines
4.5 KiB
C
#ifndef __DBGCDRAW_H_INCLUDED
|
|
#define __DBGCDRAW_H_INCLUDED
|
|
|
|
#ifndef ARRAYSIZE
|
|
#define ARRAYSIZE(x) (sizeof(x)/sizeof(x[0]))
|
|
#endif
|
|
|
|
#define MKFLAG(x) { (x), TEXT(#x) }
|
|
|
|
struct FlagString
|
|
{
|
|
DWORD dwFlag;
|
|
LPCTSTR pszString;
|
|
};
|
|
|
|
inline LPCTSTR GetString( LPTSTR szString, FlagString *pFlagStrings, size_t nSize, DWORD dwValue, bool bFlag )
|
|
{
|
|
TCHAR szFlag[200] = TEXT("");
|
|
wsprintf( szFlag, TEXT("(0x%08X)"), dwValue );
|
|
|
|
TCHAR szText[256] = TEXT("");
|
|
|
|
lstrcpy( szString, TEXT("") );
|
|
|
|
if (bFlag)
|
|
{
|
|
|
|
for (size_t i=0;i<nSize;i++)
|
|
{
|
|
if (dwValue & pFlagStrings[i].dwFlag)
|
|
{
|
|
if (lstrlen(szText))
|
|
{
|
|
lstrcat(szText,TEXT("|"));
|
|
}
|
|
lstrcat( szText, pFlagStrings[i].pszString );
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
for (size_t i=0;i<nSize;i++)
|
|
{
|
|
if (dwValue == pFlagStrings[i].dwFlag)
|
|
{
|
|
lstrcpy( szText, pFlagStrings[i].pszString );
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
lstrcpy( szString, szText );
|
|
if (lstrlen(szString))
|
|
{
|
|
lstrcat( szString, TEXT(" ") );
|
|
}
|
|
lstrcat( szString, szFlag );
|
|
return szString;
|
|
}
|
|
|
|
inline void DumpCustomDraw( LPARAM lParam, LPCTSTR pszControlType=NULL, DWORD dwDrawStage=0 )
|
|
{
|
|
FlagString DrawStages[] =
|
|
{
|
|
MKFLAG(CDDS_PREPAINT),
|
|
MKFLAG(CDDS_POSTPAINT),
|
|
MKFLAG(CDDS_PREERASE),
|
|
MKFLAG(CDDS_POSTERASE),
|
|
MKFLAG(CDDS_ITEMPREPAINT),
|
|
MKFLAG(CDDS_ITEMPOSTPAINT),
|
|
MKFLAG(CDDS_ITEMPREERASE),
|
|
MKFLAG(CDDS_ITEMPOSTERASE)
|
|
};
|
|
FlagString ItemStates[] =
|
|
{
|
|
MKFLAG(CDIS_CHECKED),
|
|
MKFLAG(CDIS_DEFAULT),
|
|
MKFLAG(CDIS_DISABLED),
|
|
MKFLAG(CDIS_FOCUS),
|
|
MKFLAG(CDIS_GRAYED),
|
|
MKFLAG(CDIS_HOT),
|
|
MKFLAG(CDIS_INDETERMINATE),
|
|
MKFLAG(CDIS_MARKED),
|
|
MKFLAG(CDIS_SELECTED),
|
|
MKFLAG(CDIS_SHOWKEYBOARDCUES)
|
|
};
|
|
TCHAR szClassName[MAX_PATH];
|
|
|
|
if (GetClassName( reinterpret_cast<NMHDR*>(lParam)->hwndFrom, szClassName, sizeof(szClassName)/sizeof(szClassName[0]) ))
|
|
{
|
|
if (!pszControlType || !lstrcmp(pszControlType,szClassName))
|
|
{
|
|
if (!dwDrawStage || dwDrawStage == reinterpret_cast<NMCUSTOMDRAW*>(lParam)->dwDrawStage)
|
|
{
|
|
TCHAR szBuffer[MAX_PATH];
|
|
WIA_TRACE((TEXT("Dumping Custom Draw for control: [%s]"), szClassName ));
|
|
#if 0
|
|
WIA_TRACE((TEXT(" hwndFrom: 0x%p"),reinterpret_cast<NMHDR*>(lParam)->hwndFrom ));
|
|
WIA_TRACE((TEXT(" idFrom: %d"),reinterpret_cast<NMHDR*>(lParam)->idFrom ));
|
|
WIA_TRACE((TEXT(" code: %d"),reinterpret_cast<NMHDR*>(lParam)->code ));
|
|
#endif
|
|
WIA_TRACE((TEXT(" dwDrawStage: %s"),GetString(szBuffer,DrawStages,ARRAYSIZE(DrawStages),reinterpret_cast<NMCUSTOMDRAW*>(lParam)->dwDrawStage,false)));
|
|
WIA_TRACE((TEXT(" hdc: %p"),reinterpret_cast<NMCUSTOMDRAW*>(lParam)->hdc ));
|
|
WIA_TRACE((TEXT(" rc: (%d,%d), (%d,%d)"),reinterpret_cast<NMCUSTOMDRAW*>(lParam)->rc.left, reinterpret_cast<NMCUSTOMDRAW*>(lParam)->rc.top,reinterpret_cast<NMCUSTOMDRAW*>(lParam)->rc.right,reinterpret_cast<NMCUSTOMDRAW*>(lParam)->rc.bottom ));
|
|
WIA_TRACE((TEXT(" dwItemSpec: %d"),reinterpret_cast<NMCUSTOMDRAW*>(lParam)->dwItemSpec ));
|
|
WIA_TRACE((TEXT(" uItemState: %s"),GetString(szBuffer,ItemStates,ARRAYSIZE(ItemStates),reinterpret_cast<NMCUSTOMDRAW*>(lParam)->uItemState,true)));
|
|
WIA_TRACE((TEXT(" lItemlParam: 0x%p"),reinterpret_cast<NMCUSTOMDRAW*>(lParam)->lItemlParam ));
|
|
if (!lstrcmp(TEXT("SysListView32"),szClassName))
|
|
{
|
|
WIA_TRACE((TEXT(" clrText: RGB(0x%02X,0x%02X,0x%02X)"),GetRValue(reinterpret_cast<NMLVCUSTOMDRAW*>(lParam)->clrText),GetGValue(reinterpret_cast<NMLVCUSTOMDRAW*>(lParam)->clrText),GetBValue(reinterpret_cast<NMLVCUSTOMDRAW*>(lParam)->clrText) ));
|
|
WIA_TRACE((TEXT(" clrTextBk: RGB(0x%02X,0x%02X,0x%02X)"),GetRValue(reinterpret_cast<NMLVCUSTOMDRAW*>(lParam)->clrTextBk),GetGValue(reinterpret_cast<NMLVCUSTOMDRAW*>(lParam)->clrTextBk),GetBValue(reinterpret_cast<NMLVCUSTOMDRAW*>(lParam)->clrTextBk) ));
|
|
WIA_TRACE((TEXT(" iSubItem: %d"),reinterpret_cast<NMLVCUSTOMDRAW*>(lParam)->iSubItem ));
|
|
}
|
|
WIA_TRACE((TEXT("")));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
#endif //__DBGCDRAW_H_INCLUDED
|
|
|