mirror of
https://github.com/valinet/ExplorerPatcher.git
synced 2024-11-23 23:21:08 +01:00
Weather: Widget properly respects text size accessibility setting
This commit is contained in:
parent
26ec0df728
commit
dfc2057ec0
@ -3945,11 +3945,24 @@ SIZE WINAPI PeopleButton_CalculateMinimumSizeHook(void* _this, SIZE* pSz)
|
|||||||
mi.cbSize = sizeof(MONITORINFO);
|
mi.cbSize = sizeof(MONITORINFO);
|
||||||
if (GetMonitorInfoW(hMonitor, &mi))
|
if (GetMonitorInfoW(hMonitor, &mi))
|
||||||
{
|
{
|
||||||
|
DWORD dwTextScaleFactor = 0, dwSize = sizeof(DWORD);
|
||||||
|
if (SHRegGetValueFromHKCUHKLMFunc && SHRegGetValueFromHKCUHKLMFunc(
|
||||||
|
TEXT("SOFTWARE\\Microsoft\\Accessibility"),
|
||||||
|
TEXT("TextScaleFactor"),
|
||||||
|
SRRF_RT_REG_DWORD,
|
||||||
|
NULL,
|
||||||
|
&dwTextScaleFactor,
|
||||||
|
(LPDWORD)(&dwSize)
|
||||||
|
) != ERROR_SUCCESS)
|
||||||
|
{
|
||||||
|
dwTextScaleFactor = 100;
|
||||||
|
}
|
||||||
|
|
||||||
RECT rcWeatherFlyoutWindow;
|
RECT rcWeatherFlyoutWindow;
|
||||||
rcWeatherFlyoutWindow.left = mi.rcWork.left;
|
rcWeatherFlyoutWindow.left = mi.rcWork.left;
|
||||||
rcWeatherFlyoutWindow.top = mi.rcWork.top;
|
rcWeatherFlyoutWindow.top = mi.rcWork.top;
|
||||||
rcWeatherFlyoutWindow.right = rcWeatherFlyoutWindow.left + MulDiv(EP_WEATHER_WIDTH, dpiX, 96);
|
rcWeatherFlyoutWindow.right = rcWeatherFlyoutWindow.left + MulDiv(MulDiv(EP_WEATHER_WIDTH, dpiX, 96), dwTextScaleFactor, 100);
|
||||||
rcWeatherFlyoutWindow.bottom = rcWeatherFlyoutWindow.top + MulDiv(EP_WEATHER_HEIGHT, dpiX, 96);
|
rcWeatherFlyoutWindow.bottom = rcWeatherFlyoutWindow.top + MulDiv(MulDiv(EP_WEATHER_HEIGHT, dpiX, 96), dwTextScaleFactor, 100);
|
||||||
if (FAILED(epw->lpVtbl->Initialize(epw, wszEPWeatherKillswitch, bAllocConsole, EP_WEATHER_PROVIDER_GOOGLE, rt, rt, dwWeatherTemperatureUnit, dwWeatherUpdateSchedule * 1000, rcWeatherFlyoutWindow, dwWeatherTheme, dwWeatherGeolocationMode, &hWndWeatherFlyout)))
|
if (FAILED(epw->lpVtbl->Initialize(epw, wszEPWeatherKillswitch, bAllocConsole, EP_WEATHER_PROVIDER_GOOGLE, rt, rt, dwWeatherTemperatureUnit, dwWeatherUpdateSchedule * 1000, rcWeatherFlyoutWindow, dwWeatherTheme, dwWeatherGeolocationMode, &hWndWeatherFlyout)))
|
||||||
{
|
{
|
||||||
epw->lpVtbl->Release(epw);
|
epw->lpVtbl->Release(epw);
|
||||||
|
@ -4,6 +4,39 @@
|
|||||||
#include "ep_weather_error_html.h"
|
#include "ep_weather_error_html.h"
|
||||||
|
|
||||||
EPWeather* EPWeather_Instance;
|
EPWeather* EPWeather_Instance;
|
||||||
|
FARPROC SHRegGetValueFromHKCUHKLMFunc;
|
||||||
|
|
||||||
|
static void epw_Weather_SetTextScaleFactorFromRegistry(EPWeather* _this, HKEY hKey, BOOL bRefresh)
|
||||||
|
{
|
||||||
|
DWORD dwTextScaleFactor = 100, dwSize = sizeof(DWORD);
|
||||||
|
if (SHRegGetValueFromHKCUHKLMFunc && SHRegGetValueFromHKCUHKLMFunc(L"SOFTWARE\\Microsoft\\Accessibility", L"TextScaleFactor", SRRF_RT_REG_DWORD, NULL, &dwTextScaleFactor, (LPDWORD)(&dwSize)) != ERROR_SUCCESS)
|
||||||
|
{
|
||||||
|
dwTextScaleFactor = 100;
|
||||||
|
}
|
||||||
|
if (InterlockedExchange64(&_this->dwTextScaleFactor, dwTextScaleFactor) == dwTextScaleFactor)
|
||||||
|
{
|
||||||
|
bRefresh = FALSE;
|
||||||
|
}
|
||||||
|
if (hKey == HKEY_CURRENT_USER)
|
||||||
|
{
|
||||||
|
if (RegCreateKeyExW(HKEY_CURRENT_USER, L"SOFTWARE\\Microsoft\\Accessibility", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_READ | KEY_WOW64_64KEY | KEY_WRITE, NULL, &_this->hKCUAccessibility, NULL) == ERROR_SUCCESS)
|
||||||
|
{
|
||||||
|
RegNotifyChangeKeyValue(_this->hKCUAccessibility, FALSE, REG_NOTIFY_CHANGE_LAST_SET, _this->hSignalOnAccessibilitySettingsChangedFromHKCU, TRUE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (hKey == HKEY_LOCAL_MACHINE)
|
||||||
|
{
|
||||||
|
if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Accessibility", 0, KEY_READ | KEY_WOW64_64KEY | KEY_WRITE, NULL, &_this->hKLMAccessibility))
|
||||||
|
{
|
||||||
|
RegNotifyChangeKeyValue(_this->hKLMAccessibility, FALSE, REG_NOTIFY_CHANGE_LAST_SET, _this->hSignalOnAccessibilitySettingsChangedFromHKLM, TRUE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (bRefresh)
|
||||||
|
{
|
||||||
|
_this->cntResizeWindow = 0;
|
||||||
|
SetTimer(_this->hWnd, EP_WEATHER_TIMER_RESIZE_WINDOW, EP_WEATHER_TIMER_RESIZE_WINDOW_DELAY, NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
HRESULT STDMETHODCALLTYPE INetworkListManagerEvents_QueryInterface(void* _this, REFIID riid, void** ppv)
|
HRESULT STDMETHODCALLTYPE INetworkListManagerEvents_QueryInterface(void* _this, REFIID riid, void** ppv)
|
||||||
{
|
{
|
||||||
@ -108,7 +141,7 @@ HRESULT STDMETHODCALLTYPE _epw_Weather_NavigateToError(EPWeather* _this)
|
|||||||
_ep_weather_ReboundBrowser(_this, TRUE);
|
_ep_weather_ReboundBrowser(_this, TRUE);
|
||||||
InterlockedExchange64(&_this->bIsNavigatingToError, TRUE);
|
InterlockedExchange64(&_this->bIsNavigatingToError, TRUE);
|
||||||
UINT dpi = GetDpiForWindow(_this->hWnd);
|
UINT dpi = GetDpiForWindow(_this->hWnd);
|
||||||
int ch = MulDiv(305, dpi, 96);
|
int ch = MulDiv(MulDiv(305, dpi, 96), epw_Weather_GetTextScaleFactor(_this), 100);
|
||||||
RECT rc;
|
RECT rc;
|
||||||
GetWindowRect(_this->hWnd, &rc);
|
GetWindowRect(_this->hWnd, &rc);
|
||||||
if (rc.bottom - rc.top != ch)
|
if (rc.bottom - rc.top != ch)
|
||||||
@ -215,10 +248,11 @@ HRESULT STDMETHODCALLTYPE _ep_weather_ReboundBrowser(EPWeather* _this, LONG64 dw
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
bounds.left = 0 - MulDiv(167, dpi, 96);
|
DWORD dwTextScaleFactor = epw_Weather_GetTextScaleFactor(_this);
|
||||||
bounds.top = 0 - MulDiv(178, dpi, 96);
|
bounds.left = 0 - MulDiv(MulDiv(167, dpi, 96), dwTextScaleFactor, 100);
|
||||||
bounds.right = MulDiv(1333, dpi, 96);// 5560;
|
bounds.top = 0 - MulDiv(MulDiv(178, dpi, 96), dwTextScaleFactor, 100);
|
||||||
bounds.bottom = MulDiv(600, dpi, 96);// 15600;
|
bounds.right = MulDiv(MulDiv(1333, dpi, 96), dwTextScaleFactor, 100);// 5560;
|
||||||
|
bounds.bottom = MulDiv(MulDiv(600, dpi, 96), dwTextScaleFactor, 100);// 15600;
|
||||||
}
|
}
|
||||||
if (_this->pCoreWebView2Controller)
|
if (_this->pCoreWebView2Controller)
|
||||||
{
|
{
|
||||||
@ -451,7 +485,7 @@ HRESULT STDMETHODCALLTYPE ICoreWebView2_ExecuteScriptCompleted(ICoreWebView2Exec
|
|||||||
int h = _wtoi(wszHeight);
|
int h = _wtoi(wszHeight);
|
||||||
int ch = MulDiv(h, EP_WEATHER_HEIGHT, 367);
|
int ch = MulDiv(h, EP_WEATHER_HEIGHT, 367);
|
||||||
UINT dpi = GetDpiForWindow(_this->hWnd);
|
UINT dpi = GetDpiForWindow(_this->hWnd);
|
||||||
ch = MulDiv(ch, dpi, 96);
|
ch = MulDiv(MulDiv(ch, dpi, 96), epw_Weather_GetTextScaleFactor(_this), 100);
|
||||||
RECT rc;
|
RECT rc;
|
||||||
GetWindowRect(_this->hWnd, &rc);
|
GetWindowRect(_this->hWnd, &rc);
|
||||||
if (rc.bottom - rc.top != ch)
|
if (rc.bottom - rc.top != ch)
|
||||||
@ -516,9 +550,16 @@ ULONG STDMETHODCALLTYPE epw_Weather_Release(EPWeather* _this)
|
|||||||
{
|
{
|
||||||
if (_this->hMainThread)
|
if (_this->hMainThread)
|
||||||
{
|
{
|
||||||
SetEvent(_this->hSignalExitMainThread);
|
if (_this->hSignalExitMainThread)
|
||||||
WaitForSingleObject(_this->hMainThread, INFINITE);
|
{
|
||||||
|
SetEvent(_this->hSignalExitMainThread);
|
||||||
|
WaitForSingleObject(_this->hMainThread, INFINITE);
|
||||||
|
}
|
||||||
CloseHandle(_this->hMainThread);
|
CloseHandle(_this->hMainThread);
|
||||||
|
if (_this->hSignalExitMainThread)
|
||||||
|
{
|
||||||
|
CloseHandle(_this->hSignalExitMainThread);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (_this->hInitializeEvent)
|
if (_this->hInitializeEvent)
|
||||||
{
|
{
|
||||||
@ -534,6 +575,31 @@ ULONG STDMETHODCALLTYPE epw_Weather_Release(EPWeather* _this)
|
|||||||
{
|
{
|
||||||
FreeLibrary(_this->hUxtheme);
|
FreeLibrary(_this->hUxtheme);
|
||||||
}
|
}
|
||||||
|
if (_this->hShlwapi)
|
||||||
|
{
|
||||||
|
FreeLibrary(_this->hShlwapi);
|
||||||
|
}
|
||||||
|
if (_this->hKCUAccessibility)
|
||||||
|
{
|
||||||
|
RegCloseKey(_this->hKCUAccessibility);
|
||||||
|
}
|
||||||
|
if (_this->hKLMAccessibility)
|
||||||
|
{
|
||||||
|
RegCloseKey(_this->hKLMAccessibility);
|
||||||
|
}
|
||||||
|
if (_this->hSignalOnAccessibilitySettingsChangedFromHKCU)
|
||||||
|
{
|
||||||
|
CloseHandle(_this->hSignalOnAccessibilitySettingsChangedFromHKCU);
|
||||||
|
}
|
||||||
|
if (_this->hSignalOnAccessibilitySettingsChangedFromHKLM)
|
||||||
|
{
|
||||||
|
CloseHandle(_this->hSignalOnAccessibilitySettingsChangedFromHKLM);
|
||||||
|
}
|
||||||
|
if (_this->hSignalKillSwitch)
|
||||||
|
{
|
||||||
|
CloseHandle(_this->hSignalKillSwitch);
|
||||||
|
}
|
||||||
|
|
||||||
FREE(_this);
|
FREE(_this);
|
||||||
LONG dwOutstandingObjects = InterlockedDecrement(&epw_OutstandingObjects);
|
LONG dwOutstandingObjects = InterlockedDecrement(&epw_OutstandingObjects);
|
||||||
LONG dwOutstandingLocks = InterlockedAdd(&epw_LockCount, 0);
|
LONG dwOutstandingLocks = InterlockedAdd(&epw_LockCount, 0);
|
||||||
@ -642,6 +708,22 @@ LRESULT CALLBACK epw_Weather_WindowProc(_In_ HWND hWnd, _In_ UINT uMsg, _In_ WPA
|
|||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
else if (uMsg == WM_TIMER && wParam == EP_WEATHER_TIMER_RESIZE_WINDOW)
|
||||||
|
{
|
||||||
|
DWORD dwTextScaleFactor = epw_Weather_GetTextScaleFactor(_this);
|
||||||
|
UINT dpi = GetDpiForWindow(_this->hWnd);
|
||||||
|
SetWindowPos(_this->hWnd, NULL, 0, 0, MulDiv(MulDiv(EP_WEATHER_WIDTH, dpi, 96), dwTextScaleFactor, 100), MulDiv(MulDiv(EP_WEATHER_HEIGHT, dpi, 96), dwTextScaleFactor, 100), SWP_NOMOVE | SWP_NOSENDCHANGING);
|
||||||
|
if (_this->cntResizeWindow == 7)
|
||||||
|
{
|
||||||
|
_this->cntResizeWindow = 0;
|
||||||
|
KillTimer(_this->hWnd, EP_WEATHER_TIMER_RESIZE_WINDOW);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_this->cntResizeWindow++;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
else if (uMsg == EP_WEATHER_WM_REBOUND_BROWSER)
|
else if (uMsg == EP_WEATHER_WM_REBOUND_BROWSER)
|
||||||
{
|
{
|
||||||
LPWSTR uri = NULL;
|
LPWSTR uri = NULL;
|
||||||
@ -718,7 +800,7 @@ LRESULT CALLBACK epw_Weather_WindowProc(_In_ HWND hWnd, _In_ UINT uMsg, _In_ WPA
|
|||||||
else if (uMsg == WM_DPICHANGED)
|
else if (uMsg == WM_DPICHANGED)
|
||||||
{
|
{
|
||||||
UINT dpiX = LOWORD(wParam);
|
UINT dpiX = LOWORD(wParam);
|
||||||
int w = MulDiv(EP_WEATHER_WIDTH, dpiX, 96);
|
int w = MulDiv(MulDiv(EP_WEATHER_WIDTH, dpiX, 96), epw_Weather_GetTextScaleFactor(_this), 100);
|
||||||
RECT* rc = lParam;
|
RECT* rc = lParam;
|
||||||
SetWindowPos(_this->hWnd, NULL, rc->left, rc->top, w, rc->bottom - rc->top, 0);
|
SetWindowPos(_this->hWnd, NULL, rc->left, rc->top, w, rc->bottom - rc->top, 0);
|
||||||
return 0;
|
return 0;
|
||||||
@ -984,6 +1066,14 @@ DWORD WINAPI epw_Weather_MainThread(EPWeather* _this)
|
|||||||
CloseHandle(_this->hSignalKillSwitch);
|
CloseHandle(_this->hSignalKillSwitch);
|
||||||
TerminateProcess(GetCurrentProcess(), 0);
|
TerminateProcess(GetCurrentProcess(), 0);
|
||||||
}
|
}
|
||||||
|
else if (dwRes == WAIT_OBJECT_0 + 2)
|
||||||
|
{
|
||||||
|
epw_Weather_SetTextScaleFactorFromRegistry(_this, HKEY_CURRENT_USER, TRUE);
|
||||||
|
}
|
||||||
|
else if (dwRes == WAIT_OBJECT_0 + 3)
|
||||||
|
{
|
||||||
|
epw_Weather_SetTextScaleFactorFromRegistry(_this, HKEY_LOCAL_MACHINE, TRUE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (SUCCEEDED(hr))
|
if (SUCCEEDED(hr))
|
||||||
@ -1125,6 +1215,12 @@ HRESULT STDMETHODCALLTYPE epw_Weather_Initialize(EPWeather* _this, WCHAR wszName
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_this->hShlwapi = LoadLibraryW(L"Shlwapi.dll");
|
||||||
|
if (_this->hShlwapi)
|
||||||
|
{
|
||||||
|
SHRegGetValueFromHKCUHKLMFunc = GetProcAddress(_this->hShlwapi, "SHRegGetValueFromHKCUHKLM");
|
||||||
|
}
|
||||||
|
|
||||||
_this->hMutexData = CreateMutexW(NULL, FALSE, NULL);
|
_this->hMutexData = CreateMutexW(NULL, FALSE, NULL);
|
||||||
if (!_this->hMutexData)
|
if (!_this->hMutexData)
|
||||||
{
|
{
|
||||||
@ -1143,6 +1239,19 @@ HRESULT STDMETHODCALLTYPE epw_Weather_Initialize(EPWeather* _this, WCHAR wszName
|
|||||||
return HRESULT_FROM_WIN32(GetLastError());
|
return HRESULT_FROM_WIN32(GetLastError());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_this->hSignalOnAccessibilitySettingsChangedFromHKCU = CreateEventW(NULL, FALSE, FALSE, NULL);
|
||||||
|
if (!_this->hSignalOnAccessibilitySettingsChangedFromHKCU)
|
||||||
|
{
|
||||||
|
return HRESULT_FROM_WIN32(GetLastError());
|
||||||
|
}
|
||||||
|
_this->hSignalOnAccessibilitySettingsChangedFromHKLM = CreateEventW(NULL, FALSE, FALSE, NULL);
|
||||||
|
if (!_this->hSignalOnAccessibilitySettingsChangedFromHKLM)
|
||||||
|
{
|
||||||
|
return HRESULT_FROM_WIN32(GetLastError());
|
||||||
|
}
|
||||||
|
epw_Weather_SetTextScaleFactorFromRegistry(_this, HKEY_CURRENT_USER, FALSE);
|
||||||
|
epw_Weather_SetTextScaleFactorFromRegistry(_this, HKEY_LOCAL_MACHINE, FALSE);
|
||||||
|
|
||||||
_this->rc = rc;
|
_this->rc = rc;
|
||||||
|
|
||||||
_this->hMainThread = CreateThread(NULL, 0, epw_Weather_MainThread, _this, 0, NULL);
|
_this->hMainThread = CreateThread(NULL, 0, epw_Weather_MainThread, _this, 0, NULL);
|
||||||
|
@ -18,13 +18,15 @@
|
|||||||
DEFINE_GUID(IID_ITaskbarList,
|
DEFINE_GUID(IID_ITaskbarList,
|
||||||
0x56FDF342, 0xFD6D, 0x11d0, 0x95, 0x8A, 0x00, 0x60, 0x97, 0xC9, 0xA0, 0x90);
|
0x56FDF342, 0xFD6D, 0x11d0, 0x95, 0x8A, 0x00, 0x60, 0x97, 0xC9, 0xA0, 0x90);
|
||||||
|
|
||||||
#define EP_WEATHER_NUM_SIGNALS 2
|
#define EP_WEATHER_NUM_SIGNALS 4
|
||||||
|
|
||||||
#define EP_WEATHER_TIMER_REQUEST_REPAINT 1
|
#define EP_WEATHER_TIMER_REQUEST_REPAINT 1
|
||||||
#define EP_WEATHER_TIMER_REQUEST_REPAINT_DELAY 1000
|
#define EP_WEATHER_TIMER_REQUEST_REPAINT_DELAY 1000
|
||||||
#define EP_WEATHER_TIMER_REQUEST_REFRESH 10
|
#define EP_WEATHER_TIMER_REQUEST_REFRESH 10
|
||||||
#define EP_WEATHER_TIMER_REQUEST_REFRESH_DELAY 2000
|
#define EP_WEATHER_TIMER_REQUEST_REFRESH_DELAY 2000
|
||||||
#define EP_WEATHER_TIMER_SCHEDULE_REFRESH 11
|
#define EP_WEATHER_TIMER_SCHEDULE_REFRESH 11
|
||||||
|
#define EP_WEATHER_TIMER_RESIZE_WINDOW 15
|
||||||
|
#define EP_WEATHER_TIMER_RESIZE_WINDOW_DELAY 150
|
||||||
|
|
||||||
typedef interface EPWeather
|
typedef interface EPWeather
|
||||||
{
|
{
|
||||||
@ -60,7 +62,12 @@ typedef interface EPWeather
|
|||||||
char* pImage;
|
char* pImage;
|
||||||
DWORD cbLocation;
|
DWORD cbLocation;
|
||||||
LPCWSTR wszLocation;
|
LPCWSTR wszLocation;
|
||||||
|
LONG64 dwTextScaleFactor; // interlocked
|
||||||
HMODULE hUxtheme;
|
HMODULE hUxtheme;
|
||||||
|
HMODULE hShlwapi;
|
||||||
|
HKEY hKCUAccessibility;
|
||||||
|
HKEY hKLMAccessibility;
|
||||||
|
DWORD cntResizeWindow;
|
||||||
|
|
||||||
RECT rcBorderThickness; // local variables:
|
RECT rcBorderThickness; // local variables:
|
||||||
ITaskbarList* pTaskList;
|
ITaskbarList* pTaskList;
|
||||||
@ -72,6 +79,8 @@ typedef interface EPWeather
|
|||||||
|
|
||||||
HANDLE hSignalExitMainThread;
|
HANDLE hSignalExitMainThread;
|
||||||
HANDLE hSignalKillSwitch;
|
HANDLE hSignalKillSwitch;
|
||||||
|
HANDLE hSignalOnAccessibilitySettingsChangedFromHKCU;
|
||||||
|
HANDLE hSignalOnAccessibilitySettingsChangedFromHKLM;
|
||||||
} EPWeather;
|
} EPWeather;
|
||||||
|
|
||||||
ULONG STDMETHODCALLTYPE epw_Weather_AddRef(EPWeather* _this);
|
ULONG STDMETHODCALLTYPE epw_Weather_AddRef(EPWeather* _this);
|
||||||
@ -131,6 +140,9 @@ static const IEPWeatherVtbl IEPWeather_Vtbl = {
|
|||||||
.SetWindowCornerPreference = epw_Weather_SetWindowCornerPreference,
|
.SetWindowCornerPreference = epw_Weather_SetWindowCornerPreference,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static inline DWORD epw_Weather_GetTextScaleFactor(EPWeather* _this) { return InterlockedAdd64(&_this->dwTextScaleFactor, 0); }
|
||||||
|
static void epw_Weather_SetTextScaleFactorFromRegistry(EPWeather* _this, HKEY hKey, BOOL bRefresh);
|
||||||
|
|
||||||
HRESULT STDMETHODCALLTYPE epw_Weather_static_Stub(void* _this);
|
HRESULT STDMETHODCALLTYPE epw_Weather_static_Stub(void* _this);
|
||||||
ULONG STDMETHODCALLTYPE epw_Weather_static_AddRefRelease(EPWeather* _this);
|
ULONG STDMETHODCALLTYPE epw_Weather_static_AddRefRelease(EPWeather* _this);
|
||||||
HRESULT STDMETHODCALLTYPE epw_Weather_static_QueryInterface(EPWeather* _this, REFIID riid, void** ppv);
|
HRESULT STDMETHODCALLTYPE epw_Weather_static_QueryInterface(EPWeather* _this, REFIID riid, void** ppv);
|
||||||
|
Loading…
Reference in New Issue
Block a user