mirror of
https://github.com/chibicitiberiu/rainmeter-studio.git
synced 2024-02-24 04:33:31 +00:00
Additional fix for r528.
This commit is contained in:
parent
07d5671707
commit
979117f623
@ -185,7 +185,7 @@ CMeterWindow::~CMeterWindow()
|
|||||||
int counter = 0;
|
int counter = 0;
|
||||||
do {
|
do {
|
||||||
// Wait for the window to die
|
// Wait for the window to die
|
||||||
Result = UnregisterClass(L"RainmeterMeterWindow", m_Rainmeter->GetInstance());
|
Result = UnregisterClass(METERWINDOW_CLASS_NAME, m_Rainmeter->GetInstance());
|
||||||
Sleep(100);
|
Sleep(100);
|
||||||
++counter;
|
++counter;
|
||||||
} while(!Result && counter < 10);
|
} while(!Result && counter < 10);
|
||||||
@ -211,7 +211,7 @@ int CMeterWindow::Initialize(CRainmeter& Rainmeter)
|
|||||||
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
|
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
|
||||||
wc.lpfnWndProc = WndProc;
|
wc.lpfnWndProc = WndProc;
|
||||||
wc.hInstance = m_Rainmeter->GetInstance();
|
wc.hInstance = m_Rainmeter->GetInstance();
|
||||||
wc.lpszClassName = L"RainmeterMeterWindow";
|
wc.lpszClassName = METERWINDOW_CLASS_NAME;
|
||||||
|
|
||||||
if(!RegisterClassEx(&wc))
|
if(!RegisterClassEx(&wc))
|
||||||
{
|
{
|
||||||
@ -224,7 +224,7 @@ int CMeterWindow::Initialize(CRainmeter& Rainmeter)
|
|||||||
}
|
}
|
||||||
|
|
||||||
m_Window = CreateWindowEx(WS_EX_TOOLWINDOW,
|
m_Window = CreateWindowEx(WS_EX_TOOLWINDOW,
|
||||||
L"RainmeterMeterWindow",
|
METERWINDOW_CLASS_NAME,
|
||||||
NULL,
|
NULL,
|
||||||
WS_POPUP,
|
WS_POPUP,
|
||||||
CW_USEDEFAULT,
|
CW_USEDEFAULT,
|
||||||
@ -2667,12 +2667,6 @@ LRESULT CMeterWindow::OnTimer(UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||||||
if (WindowFromPoint(pos) == m_Window)
|
if (WindowFromPoint(pos) == m_Window)
|
||||||
{
|
{
|
||||||
SetMouseLeaveEvent(false);
|
SetMouseLeaveEvent(false);
|
||||||
|
|
||||||
MapWindowPoints(NULL, m_Window, &pos, 1);
|
|
||||||
while (DoMoveAction(pos.x, pos.y, MOUSE_OVER)) ;
|
|
||||||
|
|
||||||
// Handle buttons
|
|
||||||
HandleButtons(pos, BUTTONPROC_MOVE, NULL, false);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -2797,11 +2791,14 @@ void CMeterWindow::ShowWindowIfAppropriate()
|
|||||||
|
|
||||||
POINT pos;
|
POINT pos;
|
||||||
GetCursorPos(&pos);
|
GetCursorPos(&pos);
|
||||||
if (GetWindowFromPoint(pos) == m_Window)
|
POINT posScr = pos;
|
||||||
{
|
|
||||||
MapWindowPoints(NULL, m_Window, &pos, 1);
|
|
||||||
|
|
||||||
|
MapWindowPoints(NULL, m_Window, &pos, 1);
|
||||||
inside = HitTest(pos.x, pos.y);
|
inside = HitTest(pos.x, pos.y);
|
||||||
|
|
||||||
|
if (inside)
|
||||||
|
{
|
||||||
|
inside = (GetWindowFromPoint(posScr) == m_Window);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_ClickThrough)
|
if (m_ClickThrough)
|
||||||
@ -2878,15 +2875,18 @@ HWND CMeterWindow::GetWindowFromPoint(POINT pos)
|
|||||||
MapWindowPoints(NULL, m_Window, &pos, 1);
|
MapWindowPoints(NULL, m_Window, &pos, 1);
|
||||||
|
|
||||||
if (HitTest(pos.x, pos.y))
|
if (HitTest(pos.x, pos.y))
|
||||||
|
{
|
||||||
|
if (hwndPos)
|
||||||
{
|
{
|
||||||
HWND hWnd = GetAncestor(hwndPos, GA_ROOT);
|
HWND hWnd = GetAncestor(hwndPos, GA_ROOT);
|
||||||
while (hWnd = ::GetNextWindow(hWnd, GW_HWNDNEXT))
|
while (hWnd = FindWindowEx(NULL, hWnd, METERWINDOW_CLASS_NAME, NULL))
|
||||||
{
|
{
|
||||||
if (hWnd == m_Window)
|
if (hWnd == m_Window)
|
||||||
{
|
{
|
||||||
return hwndPos;
|
return hwndPos;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return m_Window;
|
return m_Window;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -39,6 +39,8 @@
|
|||||||
#define WM_DELAYED_REFRESH WM_APP + 1
|
#define WM_DELAYED_REFRESH WM_APP + 1
|
||||||
#define WM_DELAYED_MOVE WM_APP + 3
|
#define WM_DELAYED_MOVE WM_APP + 3
|
||||||
|
|
||||||
|
#define METERWINDOW_CLASS_NAME L"RainmeterMeterWindow"
|
||||||
|
|
||||||
enum MOUSE
|
enum MOUSE
|
||||||
{
|
{
|
||||||
MOUSE_LMB_DOWN,
|
MOUSE_LMB_DOWN,
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
#include "System.h"
|
#include "System.h"
|
||||||
#include "Litestep.h"
|
#include "Litestep.h"
|
||||||
#include "Rainmeter.h"
|
#include "Rainmeter.h"
|
||||||
|
#include "MeterWindow.h"
|
||||||
#include "MeasureNet.h"
|
#include "MeasureNet.h"
|
||||||
#include "Error.h"
|
#include "Error.h"
|
||||||
|
|
||||||
@ -675,7 +676,7 @@ BOOL CALLBACK MyEnumWindowsProc(HWND hwnd, LPARAM lParam)
|
|||||||
CMeterWindow* Window;
|
CMeterWindow* Window;
|
||||||
|
|
||||||
if (GetClassName(hwnd, className, 128) > 0 &&
|
if (GetClassName(hwnd, className, 128) > 0 &&
|
||||||
wcscmp(className, L"RainmeterMeterWindow") == 0 &&
|
wcscmp(className, METERWINDOW_CLASS_NAME) == 0 &&
|
||||||
Rainmeter && (Window = Rainmeter->GetMeterWindow(hwnd)))
|
Rainmeter && (Window = Rainmeter->GetMeterWindow(hwnd)))
|
||||||
{
|
{
|
||||||
ZPOSITION zPos = Window->GetWindowZPosition();
|
ZPOSITION zPos = Window->GetWindowZPosition();
|
||||||
|
Loading…
Reference in New Issue
Block a user