imageCache.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #ifndef NULLSOFT_AUTH_LOGINBOX_IMAGECACHE_HEADER
  2. #define NULLSOFT_AUTH_LOGINBOX_IMAGECACHE_HEADER
  3. #if defined(_MSC_VER) && (_MSC_VER >= 1020)
  4. #pragma once
  5. #endif
  6. #include <wtypes.h>
  7. #include "../../ombrowser/ifc_omcachecallback.h"
  8. #include <commctrl.h>
  9. class ifc_omcachegroup;
  10. class ifc_omcacherecord;
  11. class LoginImageCache : public ifc_omcachecallback
  12. {
  13. protected:
  14. LoginImageCache(HWND hLoginbox);
  15. ~LoginImageCache();
  16. public:
  17. static HRESULT CreateInstance(HWND hLoginbox, LoginImageCache **instance);
  18. public:
  19. /* Dispatchable */
  20. size_t AddRef();
  21. size_t Release();
  22. int QueryInterface(GUID interface_guid, void **object);
  23. /* ifc_omcachecallback */
  24. void PathChanged(ifc_omcacherecord *record);
  25. void Finish();
  26. HRESULT GetImageListIndex(LPCWSTR pszPath, HIMAGELIST himl, UINT *index, UINT *indexActive, UINT *indexDisabled);
  27. HRESULT GetImageListIndexLocal(LPCWSTR pszPath, HIMAGELIST himl, UINT *index, UINT *indexActive, UINT *indexDisabled);
  28. private:
  29. HRESULT InitGroup();
  30. HBITMAP AdjustBitmapSize(HBITMAP hBitmap, INT forceWidth, INT forceHeight);
  31. protected:
  32. size_t ref;
  33. HWND hwnd;
  34. ifc_omcachegroup *group;
  35. CRITICAL_SECTION lock;
  36. private:
  37. RECVS_DISPATCH;
  38. };
  39. #endif // NULLSOFT_AUTH_LOGINBOX_IMAGECACHE_HEADER