致电时:
AfxMessageBox(strMsg, MB_YESNO);
Run Code Online (Sandbox Code Playgroud)
将显示一个带有"是"和"否"按钮的消息框.但是右上角的"X"(关闭按钮)被禁用,按ESC无效.
这是因为唯一有效的结果是IDYES和IDNO,而不是IDCANCEL.
是否有快速启用此行为的方法?我想避免的:
在vista中,删除文件时,要求确认的对话框只有"是"和"否",也可以通过关闭按钮或ESC取消.我猜这是一个自定义对话框.
我想向用户显示消息框,这样用户就不能拒绝确认消息框.在确认消息框之前,不应允许用户在屏幕上执行任何其他操作.
这是一个基于Windows的c#应用程序.
最重要的是,即使我使用Windows消息框.有时它隐藏在一些屏幕后面.但对于我的情况,我希望消息框在出现时最重要.
我正在使用其他一些第三方应用程序,这些应用程序超过了我的消息框.我想克服这一点.
这该怎么做...
我需要一个快速文本输入对话框(MessageBox中有一个文本框).有没有可用的控件或我应该使用表格?
我只想让用户输入一些ID.在其他场合我想要2个texbox用于用户名和密码.
要弹出一个消息框,我正在使用MessageBox.Show(...).我通常将调用包装在一个Invoke中:
BeginInvoke (new Action (() => {
MessageBox.Show ());
}));
Run Code Online (Sandbox Code Playgroud)
(我删除了其他地方回答的原问题的一部分)
Invoke如果我从非GUI线程调用,是否总是需要将MessageBox调用包装在(Begin-)中?
这个问题是关于下面列出的最佳解决方法,或者您知道的另一个问题.
这是问题的背景,它来自这样的代码......
Set scriptshell = CreateObject("wscript.shell")
Const TIMEOUT_IN_SECS = 60
Select Case scriptshell.popup("Yes or No? leaving this window for 1 min is the same as clicking Yes.", TIMEOUT_IN_SECS, "popup window", vbYesNo + vbQuestion)
Case vbYes
Call MethodFoo
Case -1
Call MethodFoo
End Select
Run Code Online (Sandbox Code Playgroud)
这是一种显示带有VBA或VB6超时的消息框的简单方法.问题是特别是在Excel 2007中(显然有时也会出现在Internet Explorer中),弹出窗口将意外地不会超时,而是等待用户输入.这个问题很难调试,因为它偶尔会发生,我不知道重现问题的步骤.到目前为止,我认为它是Office模式对话框的一个问题,并且excel不能识别超时已过期.
请看这里...
http://social.technet.microsoft.com/Forums/en-US/ITCG/thread/251143a6-e4ea-4359-b821-34877ddf91fb/
我在此处列出了此问题的解决方法.
A.使用Win32 API调用
Declare Function MessageBoxTimeout Lib "user32.dll" Alias "MessageBoxTimeoutA" ( _
ByVal hwnd As Long, _
ByVal lpText As String, _
ByVal lpCaption As String, _
ByVal uType As Long, _ …Run Code Online (Sandbox Code Playgroud) 我在哪里可以通过WinApi找到消息框的标准系统图标?我想创建一个高级对话框(带有详细信息扩展名)作为WinApi资源,但我想使用系统默认图标,如:

对于.NET我知道我会找到它们System.Drawing.SystemIcons,但是我在哪里可以找到它们使用原生C和WinApi?我怎么能应用它们?
请帮我创建一个始终位于顶部的消息框,用户不能使用其他窗口函数,如调用开始菜单或与其他窗口交互,直到他按下消息框上的确定按钮.
我保留的一些遗留代码卡在无限循环中(因此我自己似乎在一个); 但是,我无法弄清楚为什么/如何.
这是应用程序的入口点,它实例化主窗体(frmCentral):
代码展览A.
public static int Main(string [] args)
{
try
{
AppDomain currentDomain = AppDomain.CurrentDomain;
currentDomain.UnhandledException += new UnhandledExceptionEventHandler(GlobalExceptionHandler);
string name = Assembly.GetExecutingAssembly().GetName().Name;
MessageBox.Show(string.Format("Executing assembly is {0}", name)); // TODO: Remove after testing <= this one is seen
IntPtr mutexHandle = CreateMutex(IntPtr.Zero, true, name);
long error = GetLastError();
MessageBox.Show(string.Format("Last error int was {0}", error.ToString())); // TODO: Remove after testing <= this one is also seen
if (error == ERROR_ALREADY_EXISTS)
{
ReleaseMutex(mutexHandle);
IntPtr hWnd = FindWindow("#NETCF_AGL_BASE_", null);
if ((int) …Run Code Online (Sandbox Code Playgroud) c# messagebox infinite-loop mutual-recursion visual-studio-debugging
我找到了一个使用MVVM Light向用户显示消息的小例子.我猜测它是如何使用MVVM Light的,它尊重MVVM模式.
后面的视图代码:
namespace DialogosPruebas
{
/// <summary>
/// Lógica de interacción para MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
Messenger.Default.Register<DialogMessage>(
this,
msg =>
{
var result = MessageBox.Show(
msg.Content,
msg.Caption,
msg.Button);
// Send callback
msg.ProcessCallback(result);
});
}
}
}
Run Code Online (Sandbox Code Playgroud)
而且ViewModel是:
using System;
using System.Windows;
using GalaSoft.MvvmLight;
using GalaSoft.MvvmLight.Command;
using GalaSoft.MvvmLight.Messaging;
namespace DialogosPruebas.ViewModel
{
/// <summary>
/// This class contains properties that the main View can data bind to.
/// …Run Code Online (Sandbox Code Playgroud) 我有一个程序需要向用户显示图形错误消息.这是一个tkinter GUI,所以我正在使用tkinter.messagebox.showerror
当我调用showerror时,它会显示错误,但也会创建一个空白的"tk"窗口,这是在调用Tk类的实例时创建的类型root = Tk().
from tkinter.messagebox import showerror
showerror(title = "Error", message = "Something bad happened")
Run Code Online (Sandbox Code Playgroud)
产生

如何才能显示此空白窗口?