|
|
#ifndef _SAUTIL_H
#define _SAUTIL_H
#include "resource.h"
#define TRACE(a)
#define TRACE1(a,b)
#define TRACE2(a,b,c)
#define TRACE3(a,b,c,d)
extern HINSTANCE g_hinstDll; // in saui.cpp
/* Heap allocation macros allowing easy substitution of alternate heap. These
** are used by the other utility sections. */ #ifndef EXCL_HEAPDEFS
#define Malloc(c) (void*)GlobalAlloc(0,(c))
#define Realloc(p,c) (void*)GlobalReAlloc((p),(c),GMEM_MOVEABLE)
#define Free(p) (void*)GlobalFree(p)
#endif
VOID ContextHelp( IN const DWORD* padwMap, IN HWND hwndDlg, IN UINT unMsg, IN WPARAM wparam, IN LPARAM lparam);
VOID AddContextHelpButton (IN HWND hwnd);
/* Extended arguments for the MsgDlgUtil routine. Designed so zeroed gives
** default behaviors. */ #define MSGARGS struct tagMSGARGS
MSGARGS { /* Insertion strings for arguments %1 to %9 in the 'dwMsg' string, or
** NULLs if none. */ TCHAR* apszArgs[ 9 ];
/* Currently, as for MessageBox, where defaults if 0 are MB_OK and
** MB_ICONINFORMATION. */ DWORD dwFlags;
/* If non-NULL, specifies a string overriding the loading of the 'dwMsg'
** parameter string. */ TCHAR* pszString;
/* If 'fStringOutput' is true, the MsgDlgUtil returns the formatted text
** string that would otherwise be displayed in the popup in 'pszOutput'. ** It is caller's responsibility to LocalFree the returned string. */ BOOL fStringOutput; TCHAR* pszOutput; };
int MsgDlgUtil( IN HWND hwndOwner, IN DWORD dwMsg, IN OUT MSGARGS* pargs, IN HINSTANCE hInstance, IN DWORD dwTitle );
VOID UnclipWindow (IN HWND hwnd); VOID CenterWindow (IN HWND hwnd, IN HWND hwndRef); LRESULT CALLBACK CenterDlgOnOwnerCallWndProc (int code, WPARAM wparam, LPARAM lparam); TCHAR* PszFromId (IN HINSTANCE hInstance, IN DWORD dwStringId); TCHAR* GetText (IN HWND hwnd); BOOL GetErrorText (DWORD dwError, TCHAR** ppszError);
#define ERRORARGS struct tagERRORARGS
ERRORARGS { /* Insertion strings for arguments %1 to %9 in the 'dwOperation' string,
** or NULLs if none. */ TCHAR* apszOpArgs[ 9 ];
/* Insertion strings for auxillary arguments %4 to %6 in the 'dwFormat'
** string, or NULLs if none. (The standard arguments are %1=the ** 'dwOperation' string, %2=the decimal error number, and %3=the ** 'dwError'string.) */ TCHAR* apszAuxFmtArgs[ 3 ];
/* If 'fStringOutput' is true, the ErrorDlgUtil returns the formatted text
** string that would otherwise be displayed in the popup in 'pszOutput'. ** It is caller's responsibility to LocalFree the returned string. */ BOOL fStringOutput; TCHAR* pszOutput; };
int ErrorDlgUtil( IN HWND hwndOwner, IN DWORD dwOperation, IN DWORD dwError, IN OUT ERRORARGS* pargs, IN HINSTANCE hInstance, IN DWORD dwTitle, IN DWORD dwFormat ); int MsgDlgUtil(IN HWND hwndOwner, IN DWORD dwMsg, IN OUT MSGARGS* pargs, IN HINSTANCE hInstance, IN DWORD dwTitle); #define MsgDlg(h,m,a) \
MsgDlgUtil(h,m,a,g_hinstDll,SID_PopupTitle)
#define ErrorDlg(h,o,e,a) \
ErrorDlgUtil(h,o,e,a,g_hinstDll,SID_PopupTitle,SID_FMT_ErrorMsg)
// LVX stuff (cut-n-paste'd from ...\net\rras\ras\ui\common\uiutil\lvx.c, etc.
/* Text indents within a column in pixels. If you mess with the dx, you're
** asking for misalignment problems with the header labels. BTW, the first ** column doesn't line up with it's header if there are no icons. Regular ** list view has this problem, too. If you try to fix this you'll wind up ** duplicating the AUTOSIZE_USEHEADER option of ListView_SetColumnWidth. ** Should be able to change the dy without causing problems. */ #define LVX_dxColText 4
#define LVX_dyColText 1
/* Guaranteed vertical space between icons. Should be able to mess with this
** without causing problems. */ #define LVX_dyIconSpacing 1
#define SI_Unchecked 1
#define SI_Checked 2
#define SI_DisabledUnchecked 3
#define SI_DisabledChecked 4
#define LVXN_SETCHECK (LVN_LAST + 1)
#define LVXN_DBLCLK (LVN_LAST + 2)
/* The extended list view control calls the owner back to find out the layout
** and desired characteristics of the enhanced list view. */ #define LVX_MaxCols 10
#define LVX_MaxColTchars 512
/* 'dwFlags' option bits.
*/ #define LVXDI_DxFill 1 // Auto-fill wasted space on right (recommended)
#define LVXDI_Blend50Sel 2 // Dither small icon if selected (not recommended)
#define LVXDI_Blend50Dis 4 // Dither small icon if disabled (recommended)
/* 'adwFlags' option bits.
*/ #define LVXDIA_3dFace 1 // Column is not editable but other columns are
#define LVXDIA_Static 2 // Emulates static text control w/icon if disabled
/* Returned by owner at draw item time.
*/ #define LVXDRAWINFO struct tagLVXDRAWINFO
LVXDRAWINFO { /* The number of columns. The list view extensions require that your
** columns are numbered sequentially from left to right where 0 is the ** item column and 1 is the first sub-item column. Required always. */ INT cCols;
/* Pixels to indent this item, or -1 to indent a "small icon" width. Set
** 0 to disable. */ INT dxIndent;
/* LVXDI_* options applying to all columns.
*/ DWORD dwFlags;
/* LVXDIA_* options applying to individual columns.
*/ DWORD adwFlags[ LVX_MaxCols ]; }; typedef LVXDRAWINFO* (*PLVXCALLBACK)( IN HWND, IN DWORD dwItem );
BOOL ListView_IsCheckDisabled (IN HWND hwndLv, IN INT iItem); VOID ListView_SetCheck (IN HWND hwndLv, IN INT iItem, IN BOOL fCheck); VOID* ListView_GetParamPtr(IN HWND hwndLv, IN INT iItem); BOOL ListView_GetCheck(IN HWND hwndLv, IN INT iItem); LRESULT APIENTRY LvxcbProc( IN HWND hwnd, IN UINT unMsg, IN WPARAM wparam, IN LPARAM lparam ); BOOL ListView_InstallChecks(IN HWND hwndLv, IN HINSTANCE hinst); VOID ListView_InsertSingleAutoWidthColumn (HWND hwndLv); TCHAR* Ellipsisize( IN HDC hdc, IN TCHAR* psz, IN INT dxColumn, IN INT dxColText OPTIONAL); BOOL LvxDrawItem(IN DRAWITEMSTRUCT* pdis, IN PLVXCALLBACK pLvxCallback); BOOL LvxMeasureItem(IN HWND hwnd, IN OUT MEASUREITEMSTRUCT* pmis); BOOL ListView_OwnerHandler( IN HWND hwnd, IN UINT unMsg, IN WPARAM wparam, IN LPARAM lparam, IN PLVXCALLBACK pLvxCallback );
TCHAR* _StrDup(LPCTSTR psz); TCHAR* StrDupTFromW (LPCWSTR psz); WCHAR* StrDupWFromT (LPCTSTR psz); void IpHostAddrToPsz(IN DWORD dwAddr, OUT LPTSTR pszBuffer); DWORD IpPszToHostAddr(IN LPCTSTR cp);
VOID* Free0 (VOID* p);
HRESULT ActivateLuna(HANDLE* phActivationContext, ULONG_PTR* pulCookie); HRESULT DeactivateLuna(HANDLE hActivationContext, ULONG_PTR ulCookie);
#endif
|