簡體   English   中英

如何使用PInvoke方法聲明以下內容?

[英]How to declare the following using PInvoke method?

對於簡單的Messagebox,請檢查http://pinvoke.net/

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

但是,找不到編譯器報告MessageBoxResult。 如果我將MessageBoxResult更改為int,則可以正常編譯。 關於這個問題的任何提示嗎?

該定義也在pinvoke.net給出

在此處輸入圖片說明

 /// <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
 }

但正如其他提到的那樣,請始終在MSDN上檢查pinvoke.net給出的值是否有效。

MessageBoxResult在此處定義:

System.Windows.MessageBoxResult

只需添加

using System.Windows;

如果查看該函數的MSDN頁面 ,您會看到它確實返回一個int,這是本機返回類型。 我懷疑pinvoke.net用MessageBoxResult掩蓋了這一點,盡管他們的頁面在兩個地方都提到了該函數返回一個int(在messageboxresult下,它說“ uint 0-6”,然后在示例中,他們將函數編寫為返回一個int)。 int)。 我建議只使用一個int並對其進行處理(或盡可能轉換為DialogResult)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM