i use this one all the time:
#define ARRAYSIZE(__a) (sizeof(__a)/sizeof(__a[0]))
int array[] = {5,3,2,5,6,2,1,5,7,9,0};
...
int sizeofarray = ARRAYSIZE(array);
and, this one is fun:
// instatiate one of these and it diables all child controls in a
// window. let it go out of scope and all the controls are re-enabled.
class CDisableChildControls
{
public :
CDisableChildControls() {ASSERT(0);}
CDisableChildControls(HWND h)
{
ASSERT(h);
m\_hWnd = h;
EnableChildWindows(m\_hWnd,FALSE);
}
~CDisableChildControls()
{
ASSERT(m\_hWnd);
EnableChildWindows(m\_hWnd, TRUE);
}
protected:
HWND m_hWnd;
};
BOOL CALLBACK EnumEnableChildWndProc( HWND hwnd, LPARAM lParam)
{
::EnableWindow(hwnd, (lParam ? TRUE : FALSE));
return TRUE;
}
BOOL EnableChildWindows(HWND hWndParent, BOOL bEnable)
{
return EnumChildWindows(hWndParent, EnumEnableChildWndProc, (bEnable ? 1 : 0));
}