2010-07-20 20 views
2

有在这个岗位大的代码示例:访问的Win32/MFC“东西”从C#

DateTimePicker automatically move to next datepart

它展示了如何清理一些的DateTimePicker在.NET中的行为。不幸的是代码不会编译,因为.NET无法理解WM_KEYDOWN类型的东西。我能够谷歌并获得很多常量的值,如

WM_KEYUP = 0x0101;

但我真的坚持让NMHDR和WM_REFLECT工作。是否有某种Win32程序集需要添加到我的项目中才能使所有这些工作起作用?

谢谢!

回答

3

你需要使用什么被称为P/Invoke

[...]作为提高开发人员的基地移至 其生产应用管理 代码,似乎很自然的,有 将更加场合 开发商下来浸入 底层操作系统对于某些 功能的关键信息 - 至少在 暂时。谢天谢地, 通用 语言运行时(CLR)的互操作功能,称为 平台调用(P/Invoke),非常完整[...] 。

http://www.pinvoke.net/default.aspx/Constants/WM.html

private const UInt32 WM_KEYDOWN  = 0x0100; 

http://www.pinvoke.net/default.aspx/Structures/NMHDR.html

[StructLayout(LayoutKind.Sequential)] 
struct NMHDR 
{ 
    public IntPtr hwndFrom; 
    public IntPtr idFrom; 
    public int code; 
} 
+0

非常感谢! – 2010-07-20 18:16:34

+0

很高兴帮助... – 2010-07-21 17:17:50