2012-02-07 17 views
1

對於簡單的消息框,檢查http://pinvoke.net/,我得到的如何使用PInvoke方法聲明以下內容?

[DllImport("user32.dll")] 
static extern MessageBoxResult MessageBox(IntPtr hWnd, string text, string caption, int type); 

但是編譯器報告MessageBoxResult找不到。如果我將MessageBoxResult更改爲int,那麼它編譯得很好。有關這個問題的任何暗示?

+0

因爲該方法返回一個int。 – Joe 2012-02-07 13:52:50

回答

0

只需添加

using System.Windows; 
1

MessageBoxResult這裏定義:

System.Windows.MessageBoxResult 
+1

如何知道MessageBoxResult的定義位置? – user705414 2012-02-07 14:10:10

+0

轉到查看 - >對象瀏覽器並在搜索框中輸入MessageBoxResult。順便說一下,如果你問我,這是最好的問題。 – 2012-02-07 15:20:28

0

如果你看一下the MSDN page for the function,你會看到它返回一個int,這是本機返回類型。我懷疑pinvoke.net與MessageBoxResult相比,儘管他們的頁面在兩個地方提到該函數返回一個int(就在messagebox結果下,它表示「uint 0-6」,在後面的例子中他們寫函數返回INT)。我建議只使用int並處理它(或者如果可能,轉換爲DialogResult)。

2

的定義也給出了關於pinvoke.net

enter image description here

/// <summary> 
/// Represents possible values returned by the MessageBox function. 
/// </summary> 
public enum MessageBoxResult : uint 
{ 
    Ok = 1, 
    Cancel, 
    Abort, 
    Retry, 
    Ignore, 
    Yes, 
    No, 
    Close, 
    Help, 
    TryAgain, 
    Continue, 
    Timeout = 32000 
} 

但是如前所述等,經常檢查on MSDN通過pinvoke.net給出的值是有效的。