SetWindowLongPtr is not generated
Open
Nobody has claimed this yet.
bug
- Dominant language
- C#
- Stars
- 2.5k
- Forks
- 124
- Avg merge
- 1d 3h
- Merged PRs (30d)
- 9
Description
Actual behavior
SetWindowLong is generated, but SetWindowLongPtr is not.
Expected behavior
SetWindowLongPtr should be generated to be able to set a pointer value on window.
Repro steps
NativeMethods.txtcontent:
Windows.Win32.UI.WindowsAndMessaging
-
NativeMethods.jsoncontent (if present):
N/A -
Any of your own code that should be shared?
unsafe private static LRESULT WindowProcedure(HWND window, uint message, WPARAM wparam, LPARAM lparam)
{
if (message == PInvoke.WM_CREATE)
{
var createStruct = (CREATESTRUCTW*)lparam.Value;
PInvoke.SetWindowLongPtr(window, WINDOW_LONG_PTR_INDEX.GWLP_USERDATA, (IntPtr)(*createStruct).lpCreateParams);
}
return PInvoke.DefWindowProc(window, message, wparam, lparam);
}
Context
- CsWin32 version: 0.1.635-beta
- Win32Metadata version (if explicitly set by project): N/A
- Target Framework: net6.0
LangVersion(if explicitly set by project): 10.0
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the Windows.Win32.UI.WindowsAndMessaging entry from NativeMethods.txt and compare how SetWindowLong is generated with the missing SetWindowLongPtr declaration. Reproduce the sample generation and verify that the resulting API supports setting the pointer value shown in the WindowProcedure example.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp
- Domain
- devtools, operating-systems
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100