223 lines
6.7 KiB
C
223 lines
6.7 KiB
C
#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
|