Skip to content

Commit

Permalink
Minor fixes and additions to windowsx macros
Browse files Browse the repository at this point in the history
  • Loading branch information
David Hall committed Jan 29, 2025
1 parent a5eb0d1 commit 16ef623
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 24 deletions.
5 changes: 5 additions & 0 deletions PInvoke/User32/User32_WindowMessage.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13135,6 +13135,11 @@ public readonly struct WM_KEY_LPARAM
/// <param name="p">The lParam.</param>
/// <returns>The result of the conversion.</returns>
public static implicit operator WM_KEY_LPARAM(IntPtr p) => new(p);

/// <summary>Performs an implicit conversion from <see cref="WM_KEY_LPARAM"/> to <see cref="IntPtr"/>.</summary>
/// <param name="lp">The lParam.</param>
/// <returns>The result of the conversion.</returns>
public static implicit operator IntPtr(WM_KEY_LPARAM lp) => (IntPtr)unchecked((int)(lp.lp));
}

/// <summary>The state specified in the wParam value of WM_*MOUSEWHEEL* commands.</summary>
Expand Down
72 changes: 48 additions & 24 deletions PInvoke/User32/WindowsX.cs
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,12 @@ public static void FORWARD_WM_CANCELMODE(HWND hwnd, Func<HWND, uint, WPARAM, LPA
public static void FORWARD_WM_CHANGECBCHAIN(HWND hwnd, HWND hwndRemove, HWND hwndNext, Func<HWND, uint, WPARAM, LPARAM, LRESULT> fn)
=> fn(hwnd, (int)WindowMessage.WM_CHANGECBCHAIN, (WPARAM)hwndRemove, (LPARAM)hwndNext);

public static void FORWARD_WM_CHAR(HWND hwnd, ushort ch, int cRepeat, Func<HWND, uint, WPARAM, LPARAM, LRESULT> fn)
public static void FORWARD_WM_CHAR(HWND hwnd, char ch, ushort cRepeat, Func<HWND, uint, WPARAM, LPARAM, LRESULT> fn)
=> fn(hwnd, (int)WindowMessage.WM_CHAR, (WPARAM)ch, MAKELPARAM(cRepeat, 0));

public static void FORWARD_WM_CHAR(HWND hwnd, char ch, WM_KEY_LPARAM lp, Func<HWND, uint, WPARAM, LPARAM, LRESULT> fn)
=> fn(hwnd, (int)WindowMessage.WM_CHAR, (WPARAM)ch, lp);

public static int FORWARD_WM_CHARTOITEM(HWND hwnd, uint ch, HWND hwndListBox, int iCaret, Func<HWND, uint, WPARAM, LPARAM, LRESULT> fn)
=> (int)fn(hwnd, (int)WindowMessage.WM_CHARTOITEM, MAKELPARAM(ch, iCaret), (LPARAM)hwndListBox);

Expand Down Expand Up @@ -103,9 +106,12 @@ public static HBRUSH FORWARD_WM_CTLCOLORSTATIC(HWND hwnd, HDC hdc, HWND hwndChil
public static void FORWARD_WM_CUT(HWND hwnd, Func<HWND, uint, WPARAM, LPARAM, LRESULT> fn)
=> fn(hwnd, (int)WindowMessage.WM_CUT, IntPtr.Zero, IntPtr.Zero);

public static void FORWARD_WM_DEADCHAR(HWND hwnd, ushort ch, int cRepeat, Func<HWND, uint, WPARAM, LPARAM, LRESULT> fn)
public static void FORWARD_WM_DEADCHAR(HWND hwnd, char ch, ushort cRepeat, Func<HWND, uint, WPARAM, LPARAM, LRESULT> fn)
=> fn(hwnd, (int)WindowMessage.WM_DEADCHAR, (WPARAM)ch, MAKELPARAM(cRepeat, 0));

public static void FORWARD_WM_DEADCHAR(HWND hwnd, char ch, WM_KEY_LPARAM lp, Func<HWND, uint, WPARAM, LPARAM, LRESULT> fn)
=> fn(hwnd, (int)WindowMessage.WM_DEADCHAR, (WPARAM)ch, lp);

public static void FORWARD_WM_DELETEITEM(HWND hwnd, in DELETEITEMSTRUCT lpDeleteItem, Func<HWND, uint, WPARAM, LPARAM, LRESULT> fn)
=> fn(hwnd, (int)WindowMessage.WM_DELETEITEM, (WPARAM)lpDeleteItem.CtlID, (LPARAM)SafeCoTaskMemHandle.CreateFromStructure(lpDeleteItem));

Expand Down Expand Up @@ -184,12 +190,18 @@ public static void FORWARD_WM_INITMENU(HWND hwnd, HMENU hMenu, Func<HWND, uint,
public static void FORWARD_WM_INITMENUPOPUP(HWND hwnd, HMENU hMenu, uint item, bool fSystemMenu, Func<HWND, uint, WPARAM, LPARAM, LRESULT> fn)
=> fn(hwnd, (int)WindowMessage.WM_INITMENUPOPUP, (WPARAM)hMenu, MAKELPARAM(item, (uint)(BOOL)fSystemMenu));

public static void FORWARD_WM_KEYDOWN(HWND hwnd, uint vk, int cRepeat, uint flags, Func<HWND, uint, WPARAM, LPARAM, LRESULT> fn)
public static void FORWARD_WM_KEYDOWN(HWND hwnd, VK vk, ushort cRepeat, ushort flags, Func<HWND, uint, WPARAM, LPARAM, LRESULT> fn)
=> fn(hwnd, (int)WindowMessage.WM_KEYDOWN, (WPARAM)vk, MAKELPARAM(cRepeat, flags));

public static void FORWARD_WM_KEYUP(HWND hwnd, uint vk, int cRepeat, uint flags, Func<HWND, uint, WPARAM, LPARAM, LRESULT> fn)
public static void FORWARD_WM_KEYDOWN(HWND hwnd, VK vk, WM_KEY_LPARAM lp, Func<HWND, uint, WPARAM, LPARAM, LRESULT> fn)
=> fn(hwnd, (int)WindowMessage.WM_KEYDOWN, (WPARAM)vk, lp);

public static void FORWARD_WM_KEYUP(HWND hwnd, uint vk, ushort cRepeat, ushort flags, Func<HWND, uint, WPARAM, LPARAM, LRESULT> fn)
=> fn(hwnd, (int)WindowMessage.WM_KEYUP, (WPARAM)vk, MAKELPARAM(cRepeat, flags));

public static void FORWARD_WM_KEYUP(HWND hwnd, uint vk, WM_KEY_LPARAM lp, Func<HWND, uint, WPARAM, LPARAM, LRESULT> fn)
=> fn(hwnd, (int)WindowMessage.WM_KEYUP, (WPARAM)vk, lp);

public static void FORWARD_WM_KILLFOCUS(HWND hwnd, HWND hwndNewFocus, Func<HWND, uint, WPARAM, LPARAM, LRESULT> fn)
=> fn(hwnd, (int)WindowMessage.WM_KILLFOCUS, (WPARAM)hwndNewFocus, IntPtr.Zero);

Expand Down Expand Up @@ -379,22 +391,34 @@ public static void FORWARD_WM_SIZECLIPBOARD(HWND hwnd, HWND hwndCBViewer, in REC
public static void FORWARD_WM_SPOOLERSTATUS(HWND hwnd, uint status, ushort cJobInQueue, Func<HWND, uint, WPARAM, LPARAM, LRESULT> fn)
=> fn(hwnd, (int)WindowMessage.WM_SPOOLERSTATUS, (WPARAM)status, MAKELPARAM(cJobInQueue, 0));

public static void FORWARD_WM_SYSCHAR(HWND hwnd, ushort ch, int cRepeat, Func<HWND, uint, WPARAM, LPARAM, LRESULT> fn)
public static void FORWARD_WM_SYSCHAR(HWND hwnd, char ch, ushort cRepeat, Func<HWND, uint, WPARAM, LPARAM, LRESULT> fn)
=> fn(hwnd, (int)WindowMessage.WM_SYSCHAR, (WPARAM)ch, MAKELPARAM(cRepeat, 0));

public static void FORWARD_WM_SYSCHAR(HWND hwnd, char ch, WM_KEY_LPARAM klp, Func<HWND, uint, WPARAM, LPARAM, LRESULT> fn)
=> fn(hwnd, (int)WindowMessage.WM_SYSCHAR, (WPARAM)ch, klp);

public static void FORWARD_WM_SYSCOLORCHANGE(HWND hwnd, Func<HWND, uint, WPARAM, LPARAM, LRESULT> fn)
=> fn(hwnd, (int)WindowMessage.WM_SYSCOLORCHANGE, IntPtr.Zero, IntPtr.Zero);

public static void FORWARD_WM_SYSCOMMAND(HWND hwnd, uint cmd, int x, int y, Func<HWND, uint, WPARAM, LPARAM, LRESULT> fn)
=> fn(hwnd, (int)WindowMessage.WM_SYSCOMMAND, (WPARAM)cmd, MAKELPARAM(x, y));

public static void FORWARD_WM_SYSDEADCHAR(HWND hwnd, ushort ch, int cRepeat, Func<HWND, uint, WPARAM, LPARAM, LRESULT> fn)
public static void FORWARD_WM_SYSDEADCHAR(HWND hwnd, char ch, ushort cRepeat, Func<HWND, uint, WPARAM, LPARAM, LRESULT> fn)
=> fn(hwnd, (int)WindowMessage.WM_SYSDEADCHAR, (WPARAM)ch, MAKELPARAM(cRepeat, 0));

public static void FORWARD_WM_SYSKEYDOWN(HWND hwnd, uint vk, int cRepeat, uint flags, Func<HWND, uint, WPARAM, LPARAM, LRESULT> fn)
public static void FORWARD_WM_SYSDEADCHAR(HWND hwnd, char ch, WM_KEY_LPARAM klp, Func<HWND, uint, WPARAM, LPARAM, LRESULT> fn)
=> fn(hwnd, (int)WindowMessage.WM_SYSDEADCHAR, (WPARAM)ch, klp);

public static void FORWARD_WM_SYSKEYDOWN(HWND hwnd, VK vk, ushort cRepeat, ushort flags, Func<HWND, uint, WPARAM, LPARAM, LRESULT> fn)
=> fn(hwnd, (int)WindowMessage.WM_SYSKEYDOWN, (WPARAM)vk, MAKELPARAM(cRepeat, flags));

public static void FORWARD_WM_SYSKEYUP(HWND hwnd, uint vk, int cRepeat, uint flags, Func<HWND, uint, WPARAM, LPARAM, LRESULT> fn)
public static void FORWARD_WM_SYSKEYDOWN(HWND hwnd, VK vk, WM_KEY_LPARAM klp, Func<HWND, uint, WPARAM, LPARAM, LRESULT> fn)
=> fn(hwnd, (int)WindowMessage.WM_SYSKEYDOWN, (WPARAM)vk, klp);

public static void FORWARD_WM_SYSKEYUP(HWND hwnd, VK vk, WM_KEY_LPARAM klp, Func<HWND, uint, WPARAM, LPARAM, LRESULT> fn)
=> fn(hwnd, (int)WindowMessage.WM_SYSKEYUP, (WPARAM)vk, klp);

public static void FORWARD_WM_SYSKEYUP(HWND hwnd, VK vk, ushort cRepeat, ushort flags, Func<HWND, uint, WPARAM, LPARAM, LRESULT> fn)
=> fn(hwnd, (int)WindowMessage.WM_SYSKEYUP, (WPARAM)vk, MAKELPARAM(cRepeat, flags));

public static void FORWARD_WM_SYSTEMERROR(HWND hwnd, int errCode, Func<HWND, uint, WPARAM, LPARAM, LRESULT> fn)
Expand Down Expand Up @@ -573,9 +597,9 @@ public static LRESULT HANDLE_WM_CHANGECBCHAIN(HWND hwnd, WPARAM wParam, LPARAM l
return IntPtr.Zero;
}

public static LRESULT HANDLE_WM_CHAR(HWND hwnd, WPARAM wParam, LPARAM lParam, Action<HWND, ushort, int> fn)
public static LRESULT HANDLE_WM_CHAR(HWND hwnd, WPARAM wParam, LPARAM lParam, Action<HWND, char, WM_KEY_LPARAM> fn)
{
fn(hwnd, (ushort)wParam, (short)LOWORD(lParam));
fn(hwnd, (char)(int)wParam, new WM_KEY_LPARAM(lParam));
return IntPtr.Zero;
}

Expand Down Expand Up @@ -669,9 +693,9 @@ public static LRESULT HANDLE_WM_CUT(HWND hwnd, WPARAM wParam, LPARAM lParam, Act
return IntPtr.Zero;
}

public static LRESULT HANDLE_WM_DEADCHAR(HWND hwnd, WPARAM wParam, LPARAM lParam, Action<HWND, ushort, int> fn)
public static LRESULT HANDLE_WM_DEADCHAR(HWND hwnd, WPARAM wParam, LPARAM lParam, Action<HWND, char, WM_KEY_LPARAM> fn)
{
fn(hwnd, (ushort)wParam, (short)LOWORD(lParam));
fn(hwnd, (char)(int)wParam, new WM_KEY_LPARAM(lParam));
return IntPtr.Zero;
}

Expand Down Expand Up @@ -807,15 +831,15 @@ public static LRESULT HANDLE_WM_INITMENUPOPUP(HWND hwnd, WPARAM wParam, LPARAM l
return IntPtr.Zero;
}

public static LRESULT HANDLE_WM_KEYDOWN(HWND hwnd, WPARAM wParam, LPARAM lParam, Action<HWND, uint, bool, int, uint> fn)
public static LRESULT HANDLE_WM_KEYDOWN(HWND hwnd, WPARAM wParam, LPARAM lParam, Action<HWND, VK, WM_KEY_LPARAM> fn)
{
fn(hwnd, (uint)wParam, true, (short)LOWORD(lParam), HIWORD(lParam));
fn(hwnd, (VK)(int)wParam, lParam);
return IntPtr.Zero;
}

public static LRESULT HANDLE_WM_KEYUP(HWND hwnd, WPARAM wParam, LPARAM lParam, Action<HWND, uint, bool, int, uint> fn)
public static LRESULT HANDLE_WM_KEYUP(HWND hwnd, WPARAM wParam, LPARAM lParam, Action<HWND, VK, WM_KEY_LPARAM> fn)
{
fn(hwnd, (uint)wParam, false, (short)LOWORD(lParam), HIWORD(lParam));
fn(hwnd, (VK)(int)wParam, lParam);
return IntPtr.Zero;
}

Expand Down Expand Up @@ -1178,9 +1202,9 @@ public static LRESULT HANDLE_WM_SPOOLERSTATUS(HWND hwnd, WPARAM wParam, LPARAM l
return IntPtr.Zero;
}

public static LRESULT HANDLE_WM_SYSCHAR(HWND hwnd, WPARAM wParam, LPARAM lParam, Action<HWND, ushort, int> fn)
public static LRESULT HANDLE_WM_SYSCHAR(HWND hwnd, WPARAM wParam, LPARAM lParam, Action<HWND, char, WM_KEY_LPARAM> fn)
{
fn(hwnd, (ushort)wParam, (short)LOWORD(lParam));
fn(hwnd, (char)(int)wParam, new WM_KEY_LPARAM(lParam));
return IntPtr.Zero;
}

Expand All @@ -1196,21 +1220,21 @@ public static LRESULT HANDLE_WM_SYSCOMMAND(HWND hwnd, WPARAM wParam, LPARAM lPar
return IntPtr.Zero;
}

public static LRESULT HANDLE_WM_SYSDEADCHAR(HWND hwnd, WPARAM wParam, LPARAM lParam, Action<HWND, ushort, int> fn)
public static LRESULT HANDLE_WM_SYSDEADCHAR(HWND hwnd, WPARAM wParam, LPARAM lParam, Action<HWND, char, WM_KEY_LPARAM> fn)
{
fn(hwnd, (ushort)wParam, (short)LOWORD(lParam));
fn(hwnd, (char)(int)wParam, new WM_KEY_LPARAM(lParam));
return IntPtr.Zero;
}

public static LRESULT HANDLE_WM_SYSKEYDOWN(HWND hwnd, WPARAM wParam, LPARAM lParam, Action<HWND, uint, bool, int, uint> fn)
public static LRESULT HANDLE_WM_SYSKEYDOWN(HWND hwnd, WPARAM wParam, LPARAM lParam, Action<HWND, VK, WM_KEY_LPARAM> fn)
{
fn(hwnd, (uint)wParam, true, (short)LOWORD(lParam), HIWORD(lParam));
fn(hwnd, (VK)(int)wParam, new WM_KEY_LPARAM(lParam));
return IntPtr.Zero;
}

public static LRESULT HANDLE_WM_SYSKEYUP(HWND hwnd, WPARAM wParam, LPARAM lParam, Action<HWND, uint, bool, int, uint> fn)
public static LRESULT HANDLE_WM_SYSKEYUP(HWND hwnd, WPARAM wParam, LPARAM lParam, Action<HWND, VK, WM_KEY_LPARAM> fn)
{
fn(hwnd, (uint)wParam, false, (short)LOWORD(lParam), HIWORD(lParam));
fn(hwnd, (VK)(int)wParam, new WM_KEY_LPARAM(lParam));
return IntPtr.Zero;
}

Expand Down

0 comments on commit 16ef623

Please sign in to comment.