//util.h - header file for utiltity functions #ifndef _UTIL_H_ #define _UTIL_H_ #include #include // Extended listview control class // This class adds the feature of setting focus to the listview window // on a left mouse button down event. class CListViewEx : public CWindowImpl { BEGIN_MSG_MAP(CListViewEx) MESSAGE_HANDLER(WM_LBUTTONDOWN, OnLButtonDown) END_MSG_MAP() LRESULT OnLButtonDown(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { SetFocus(); bHandled = 0; return TRUE; } }; HBITMAP GetBitmapFromStrip(HBITMAP hbmStrip, int nPos, int cSize); void ConfigSingleColumnListView(HWND hwndListView); BOOL ModifyStyleEx(HWND hWnd, DWORD dwRemove, DWORD dwAdd, UINT nFlags = 0); void EnableDlgItem(HWND hwndDialog, int iCtrlID, BOOL bEnable); void GetItemText(HWND hwnd, tstring& strText); void RemoveSpaces(LPWSTR pszBuf); VARIANT GetDomainPath(LPCTSTR lpServer); HRESULT ExpandDCWildCard(tstring& str); void EscapeSlashes(LPCWSTR pszIn, tstring& strOut); HRESULT ExpandEnvironmentParams(tstring& strIn, tstring& strOut); tstring StrLoadString( UINT nID ); // // Parameter substitution function // // CParamLookup - function object for looking up parameter values // // Looks up parameter replacement string value, returning a BOOL to // indicate iwhether a value was found. class CParamLookup { public: virtual BOOL operator()(tstring& strParm, tstring& strValue) = 0; }; HRESULT ReplaceParameters(tstring& str, CParamLookup& lookup, BOOL bRetainMarkers); // // MMC String table helpers // HRESULT StringTableWrite(IStringTable* pStringTable, LPCWSTR psz, MMC_STRING_ID* pID); HRESULT StringTableRead(IStringTable* pStringTable, MMC_STRING_ID ID, tstring& str); // // File/Directory validation functions // HRESULT ValidateFile(tstring& strFilePath); HRESULT ValidateDirectory(tstring& strDir); // // Message box helper // int DisplayMessageBox(HWND hWnd, UINT uTitleID, UINT uMsgID, UINT uStyle = MB_OK | MB_ICONEXCLAMATION, LPCWSTR pszP1 = NULL, LPCWSTR pszP2 = NULL); // // Event triggered callback // // CEventCallback - function object that performs a callback // // client who wants a callback derives a class from CEventCallback // and passes an instance of it to CallbackOnEvent class CEventCallback { public: virtual void Execute() = 0; }; HRESULT CallbackOnEvent(HANDLE handle, CEventCallback* pCallback); // // Helper class to register and create hidden message windows // class CMsgWindowClass { public: CMsgWindowClass(LPCWSTR pszClassName, WNDPROC pWndProc) : m_pszName(pszClassName), m_pWndProc(pWndProc), m_atom(NULL), m_hWnd(NULL) { } virtual ~CMsgWindowClass() { if( m_hWnd ) DestroyWindow(m_hWnd); if( m_atom ) UnregisterClass(m_pszName, _Module.GetModuleInstance()); } HWND Window(); private: LPCWSTR m_pszName; WNDPROC m_pWndProc; ATOM m_atom; HWND m_hWnd; }; #endif // _UTIL_H_