2010-07-20 25 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