LMMS
Loading...
Searching...
No Matches
swell-win32.h
Go to the documentation of this file.
1#ifndef _SWELL_WIN32_H_
2#define _SWELL_WIN32_H_
3
4/*************
5** helpers to give swell-like functionality on win32
6*/
7
8#ifdef _WIN32
9void SWELL_DisableContextMenu(HWND h, bool dis);
10
11
12
13#ifndef SWELL_WIN32_DECLARE_ONLY
14
15#include <windows.h>
16#include "../wdltypes.h"
17
18#define SWELL_DISABLE_CTX_OLDPROC_NAME "SWELLDisableCtxOldProc"
19
20static LRESULT WINAPI swellDisableCtxNewWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
21{
22 HANDLE oldProc = uMsg != WM_CONTEXTMENU ? GetProp(hwnd,SWELL_DISABLE_CTX_OLDPROC_NAME) : NULL;
23 if (uMsg == WM_DESTROY)
24 {
25 RemoveProp(hwnd,SWELL_DISABLE_CTX_OLDPROC_NAME);
26 if (oldProc) SetWindowLongPtr(hwnd,GWLP_WNDPROC,(LPARAM)oldProc);
27 }
28 return oldProc ? CallWindowProc((WNDPROC)oldProc,hwnd,uMsg,wParam,lParam) : DefWindowProc(hwnd,uMsg,wParam,lParam);
29}
30
31void SWELL_DisableContextMenu(HWND h, bool dis)
32{
33 char classname[512];
34 if (WDL_NOT_NORMALLY(!h)) return;
35 if (GetClassName(h,classname,sizeof(classname)) && !strcmp(classname,"ComboBox"))
36 {
37 HWND h2 = FindWindowEx(h,NULL,"Edit",NULL);
38 if (h2) h = h2;
39 }
40
41 if (dis)
42 {
43 if (!GetProp(h,SWELL_DISABLE_CTX_OLDPROC_NAME))
44 SetProp(h,SWELL_DISABLE_CTX_OLDPROC_NAME,(HANDLE)SetWindowLongPtr(h,GWLP_WNDPROC,(LPARAM)swellDisableCtxNewWndProc));
45 }
46 else
47 {
48 LPARAM op = (LPARAM)GetProp(h,SWELL_DISABLE_CTX_OLDPROC_NAME);
50 RemoveProp(h,SWELL_DISABLE_CTX_OLDPROC_NAME);
51 }
52}
53
54#endif // !SWELL_WIN32_DECLARE_ONLY
55
56#endif // _WIN32
57
58#endif // _SWELL_WIN32_H_
#define NULL
Definition CarlaBridgeFormat.cpp:30
#define WM_CONTEXTMENU
#define CallWindowProc(A, B, C, D, E)
#define WM_DESTROY
RECT const char void HWND hwnd
Definition swell-functions.h:1066
LONG_PTR LRESULT
Definition swell-types.h:171
unsigned int UINT
Definition swell-types.h:166
LONG_PTR LPARAM
Definition swell-types.h:170
ULONG_PTR WPARAM
Definition swell-types.h:169
LRESULT(* WNDPROC)(HWND, UINT, WPARAM, LPARAM)
Definition swell-types.h:587
#define WINAPI
Definition swell-types.h:631
void * HANDLE
Definition swell-types.h:212
struct HWND__ * HWND
Definition swell-types.h:210
LRESULT DefWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
Definition swell-wnd-generic.cpp:7223
int GetClassName(HWND hwnd, char *buf, int bufsz)
Definition swell-wnd-generic.cpp:8427
HWND FindWindowEx(HWND par, HWND lastw, const char *classname, const char *title)
Definition swell-wnd-generic.cpp:7773
void SWELL_DisableContextMenu(HWND hwnd, bool dis)
Definition swell-wnd-generic.cpp:8434
HANDLE RemoveProp(HWND hwnd, const char *name)
Definition swell-wnd-generic.cpp:7725
BOOL SetProp(HWND hwnd, const char *name, HANDLE val)
Definition swell-wnd-generic.cpp:7718
HANDLE GetProp(HWND hwnd, const char *name)
Definition swell-wnd-generic.cpp:7712
uch h[RAND_HEAD_LEN]
Definition crypt.c:459
#define WDL_NOT_NORMALLY(x)
Definition wdltypes.h:166
#define SetWindowLongPtr(a, b, c)
Definition wdltypes.h:62
#define GWLP_WNDPROC
Definition wdltypes.h:56