mirror of
https://github.com/chibicitiberiu/rainmeter-studio.git
synced 2024-02-24 04:33:31 +00:00
Switched to using SetWindowLongPtr/GetWindowLongPtr instead of SetProp/GetProp for faster retrieval of window pointer.
This commit is contained in:
parent
b8c1c77262
commit
a6a767d9ff
@ -246,7 +246,7 @@ int CMeterWindow::Initialize(CRainmeter& Rainmeter)
|
|||||||
// Register the windowclass
|
// Register the windowclass
|
||||||
WNDCLASSEX wc = {sizeof(WNDCLASSEX)};
|
WNDCLASSEX wc = {sizeof(WNDCLASSEX)};
|
||||||
wc.style = CS_NOCLOSE | CS_DBLCLKS;
|
wc.style = CS_NOCLOSE | CS_DBLCLKS;
|
||||||
wc.lpfnWndProc = WndProc;
|
wc.lpfnWndProc = InitialWndProc;
|
||||||
wc.hInstance = m_Rainmeter->GetInstance();
|
wc.hInstance = m_Rainmeter->GetInstance();
|
||||||
wc.hCursor = NULL; // The cursor should be controlled by using SetCursor() when needed.
|
wc.hCursor = NULL; // The cursor should be controlled by using SetCursor() when needed.
|
||||||
wc.lpszClassName = METERWINDOW_CLASS_NAME;
|
wc.lpszClassName = METERWINDOW_CLASS_NAME;
|
||||||
@ -3529,17 +3529,6 @@ LRESULT CMeterWindow::OnMouseLeave(UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
** OnCreate
|
|
||||||
**
|
|
||||||
** During window creation we do nothing.
|
|
||||||
**
|
|
||||||
*/
|
|
||||||
LRESULT CMeterWindow::OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** OnCommand
|
** OnCommand
|
||||||
**
|
**
|
||||||
@ -4077,17 +4066,6 @@ void CMeterWindow::SnapToWindow(CMeterWindow* window, LPWINDOWPOS wp)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
** OnDestroy
|
|
||||||
**
|
|
||||||
** During destruction of the window do nothing.
|
|
||||||
**
|
|
||||||
*/
|
|
||||||
LRESULT CMeterWindow::OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** OnDwmColorChange
|
** OnDwmColorChange
|
||||||
**
|
**
|
||||||
@ -4826,34 +4804,16 @@ LRESULT CMeterWindow::OnMove(UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||||||
/*
|
/*
|
||||||
** WndProc
|
** WndProc
|
||||||
**
|
**
|
||||||
** The window procedure for the Meter
|
** The main window procedure for the meter window.
|
||||||
**
|
**
|
||||||
*/
|
*/
|
||||||
LRESULT CALLBACK CMeterWindow::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
LRESULT CALLBACK CMeterWindow::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||||
{
|
{
|
||||||
CMeterWindow* Window = NULL;
|
CMeterWindow* window = (CMeterWindow*)GetWindowLongPtr(hWnd, GWLP_USERDATA);
|
||||||
|
|
||||||
if (uMsg == WM_CREATE)
|
|
||||||
{
|
|
||||||
// Fetch this window-object from the CreateStruct
|
|
||||||
Window=(CMeterWindow*)((LPCREATESTRUCT)lParam)->lpCreateParams;
|
|
||||||
|
|
||||||
SetProp(hWnd, L"RAINMETER", Window);
|
|
||||||
}
|
|
||||||
else if (uMsg == WM_DESTROY)
|
|
||||||
{
|
|
||||||
RemoveProp(hWnd, L"RAINMETER");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Window = (CMeterWindow*)GetProp(hWnd, L"RAINMETER");
|
|
||||||
}
|
|
||||||
|
|
||||||
BEGIN_MESSAGEPROC
|
BEGIN_MESSAGEPROC
|
||||||
MESSAGE(OnPaint, WM_PAINT)
|
MESSAGE(OnPaint, WM_PAINT)
|
||||||
MESSAGE(OnMove, WM_MOVE)
|
MESSAGE(OnMove, WM_MOVE)
|
||||||
MESSAGE(OnCreate, WM_CREATE)
|
|
||||||
MESSAGE(OnDestroy, WM_DESTROY)
|
|
||||||
MESSAGE(OnTimer, WM_TIMER)
|
MESSAGE(OnTimer, WM_TIMER)
|
||||||
MESSAGE(OnCommand, WM_COMMAND)
|
MESSAGE(OnCommand, WM_COMMAND)
|
||||||
MESSAGE(OnSysCommand, WM_SYSCOMMAND)
|
MESSAGE(OnSysCommand, WM_SYSCOMMAND)
|
||||||
@ -4897,6 +4857,27 @@ LRESULT CALLBACK CMeterWindow::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPAR
|
|||||||
END_MESSAGEPROC
|
END_MESSAGEPROC
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
** InitialWndProc
|
||||||
|
**
|
||||||
|
** The initial window procedure for the meter window. Passes control to WndProc after initial setup.
|
||||||
|
**
|
||||||
|
*/
|
||||||
|
LRESULT CALLBACK CMeterWindow::InitialWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||||
|
{
|
||||||
|
if (uMsg == WM_NCCREATE)
|
||||||
|
{
|
||||||
|
CMeterWindow* window = (CMeterWindow*)((LPCREATESTRUCT)lParam)->lpCreateParams;
|
||||||
|
SetWindowLongPtr(hWnd, GWLP_USERDATA, (LONG)window);
|
||||||
|
|
||||||
|
// Change the window procedure over to MainWndProc now that GWLP_USERDATA is set
|
||||||
|
SetWindowLongPtr(hWnd, GWLP_WNDPROC, (LONG)WndProc);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return DefWindowProc(hWnd, uMsg, wParam, lParam);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** OnDelayedExecute
|
** OnDelayedExecute
|
||||||
**
|
**
|
||||||
|
@ -27,10 +27,10 @@
|
|||||||
#include "ConfigParser.h"
|
#include "ConfigParser.h"
|
||||||
#include "Group.h"
|
#include "Group.h"
|
||||||
|
|
||||||
#define BEGIN_MESSAGEPROC if (Window) { switch (uMsg) {
|
#define BEGIN_MESSAGEPROC switch (uMsg) {
|
||||||
#define MESSAGE(handler, msg) case msg: return Window->handler(uMsg, wParam, lParam);
|
#define MESSAGE(handler, msg) case msg: return window->handler(uMsg, wParam, lParam);
|
||||||
#define REJECT_MESSAGE(msg) case msg: return 0;
|
#define REJECT_MESSAGE(msg) case msg: return 0;
|
||||||
#define END_MESSAGEPROC } } return DefWindowProc(hWnd, uMsg, wParam, lParam);
|
#define END_MESSAGEPROC } return DefWindowProc(hWnd, uMsg, wParam, lParam);
|
||||||
|
|
||||||
#define WM_DELAYED_EXECUTE WM_APP + 0
|
#define WM_DELAYED_EXECUTE WM_APP + 0
|
||||||
#define WM_DELAYED_REFRESH WM_APP + 1
|
#define WM_DELAYED_REFRESH WM_APP + 1
|
||||||
@ -254,11 +254,10 @@ public:
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
static LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
static LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
||||||
|
static LRESULT CALLBACK InitialWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
||||||
|
|
||||||
LRESULT OnPaint(UINT uMsg, WPARAM wParam, LPARAM lParam);
|
LRESULT OnPaint(UINT uMsg, WPARAM wParam, LPARAM lParam);
|
||||||
LRESULT OnMove(UINT uMsg, WPARAM wParam, LPARAM lParam);
|
LRESULT OnMove(UINT uMsg, WPARAM wParam, LPARAM lParam);
|
||||||
LRESULT OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam);
|
|
||||||
LRESULT OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam);
|
|
||||||
LRESULT OnTimer(UINT uMsg, WPARAM wParam, LPARAM lParam);
|
LRESULT OnTimer(UINT uMsg, WPARAM wParam, LPARAM lParam);
|
||||||
LRESULT OnCommand(UINT uMsg, WPARAM wParam, LPARAM lParam);
|
LRESULT OnCommand(UINT uMsg, WPARAM wParam, LPARAM lParam);
|
||||||
LRESULT OnSysCommand(UINT uMsg, WPARAM wParam, LPARAM lParam);
|
LRESULT OnSysCommand(UINT uMsg, WPARAM wParam, LPARAM lParam);
|
||||||
|
Loading…
Reference in New Issue
Block a user