【问题标题】:Access Win32/MFC "Stuff" from C#从 C# 访问 Win32/MFC “Stuff”
【发布时间】:2010-07-20 15:54:20
【问题描述】:

这篇文章中有一个很棒的代码示例:

DateTimePicker automatically move to next datepart

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

WM_KEYUP = 0x0101;

但我真的无法让 NMHDR 和 WM_REFLECT 正常工作。我需要将某种 Win32 程序集添加到我的项目中以使所有这些工作正常吗?

谢谢!

【问题讨论】:

    标签: c# .net mfc


    【解决方案1】:

    您需要使用所谓的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;
    }
    

    【讨论】:

      【解决方案2】:

      访问 pinvoke.net 了解这些声明。或使用PInvoke Interop Assistant

      【讨论】:

        猜你喜欢
        • 2013-06-21
        • 2010-09-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-29
        • 1970-01-01
        • 1970-01-01
        • 2012-01-19
        相关资源
        最近更新 更多