对于简单的Messagebox,检查http://pinvoke.net/,我得到了
[DllImport("user32.dll")]
static extern MessageBoxResult MessageBox(IntPtr hWnd, string text, string caption, int type);
但是无法找到编译器报告的MessageBoxResult。如果我将MessageBoxResult更改为int,那么它编译得很好。关于这个问题的任何提示?
答案 0 :(得分:2)
该定义也在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
}
但正如其他人提到的,请始终检查on MSDN pinvoke.net给出的值是否有效。
答案 1 :(得分:1)
MessageBoxResult在这里定义:
System.Windows.MessageBoxResult
答案 2 :(得分:0)
添加
using System.Windows;
答案 3 :(得分:0)
如果查看the MSDN page for the function,您会看到它确实返回一个int,这是本机返回类型。我怀疑pinvoke.net正在使用MessageBoxResult
来掩盖它,虽然他们的页面在两个地方提到该函数返回一个int(在messageboxresult下面,它表示“uint 0-6”,后来在示例中他们写了作为返回int)的函数。我建议只使用一个int并处理它(或者如果可能的话转换为DialogResult)。