如何创建 Windows MessageBox 并且确定操作员按下的是哪个按钮?
intouchmsgbox用户确认窗口脚本说明

In touch在做按钮动作和调试脚本时,经常需要用户确认窗口,根据用户点击的是”否”确认”取消”“0等取得返回值,从而根据用户二次确认以获得最终结果,下面给出两种MessageBox窗口的脚本,给大家参考:方案A:采用In touch系统自带的OLE控件自行编写MsgBox。
缺点是创建的用户界面对话框可能会被其他窗口覆盖,不易别察觉。
下面是一个例子:1. 创建用户界面对话框2. 在脚本中,使用以下命令产生用户界面对话框:3.3. dim DlgBody as message;4. dim DlgTitle as message;5. dim Style as in teger;6. dim Result as in teger;8.7. OLE_CreateObject(%WS,"");8. result = %(DlgBody,1,DlgTitle,Style);11.9. 本例创建以下用户界面对话框10. Style标记名确定有哪些图标与按钮出现在对话框上。
使用以下值:复制代码1. 图标样式值2. (无图标)无图标03. 错误图标164. 问号图标325. 警告图标486. 信息图标647.7. 要使用特定的按钮,请将以下值之一添加到Style值:8. 值样式9. 0仅确定按钮10. 1确定与取消按钮11. 2放弃、重试及忽略按钮12. 3是、否及取消按钮13. 4是与否按钮14. 5重试与取消按钮15. 6取消、重试及继续按钮17.16. Result标记名包含用户单击的按钮编号。
这可用作In Touch脚本中的条件分支。
可能的结果码如下:17. 结果值含义18. 1按了确定按钮19. 2按了取消按钮20. 3按了放弃按钮21. 4按了重试按钮22. 5按了忽略按钮23. 6按了是按钮24. 7按了否按钮25. 10按了重试按钮26. 11按了继续按钮复制代码代码说明:DlgBody是消息变量写需要显示的字符串;DlgTitle是消息变量写窗口的标题; Style是整形变量定义格式。
扩展WINFORM的MessageBox功能,自定义按钮文字

扩展WINFORM的MessageBox功能,⾃定义按钮⽂字最近在公司⼀项⽬中,客户要求在截图功能操作中加⼊⼀个⽤户确认的动作,是“发送截图”,还是“保存⽂件”,还是“取消”。
这个需求⾸先想到的就是MessageBox.Show(),可是Show出来的对话框上的⽂字是固定的,不能修改成⾃⼰需要的⽂字。
怎么办呢?⾃⼰做⼀个FORM来Show?办法太笨且重⽤性不⾼。
直接Show个MessageBox,加些提⽰内容,告诉⽤户哪个按钮代表什么意思?太不以⼈为本了看来还是得动⽤WIN32 API这把宝⼑。
⽤SPY++研究了⼀下Show出来的MessageBox,看来不复杂,把窗⼝中⼦控件的类名为“Button”的⽂字给替换为想要的内容就OK了。
说⼲就⼲,卷起裤管,拿上锄头,三下五除⼆封装了⼀个“MessageBoxEx”的类,在MessageBox.Show的参数基础上加了⼀个“buttonTitles”的字符串数组参数,是想修改的内容数组。
具体实现就不描述了,见所附代码。
其中获取对话框窗体句柄的⽅法是参考了⼀个关于扩展OpenFileDialog窗体的代码,具体出处不记得了。
其实有了这个基础,可以在Show 出来的窗体上做很多事情,如加⼀个图⽚、按钮或是*****,这就要看具体的需求了。
抛砖引⽟,希望能引出点啥。
代码:class MessageBoxEx{//测试样例static void test(){Show("提⽰消息", "提⽰标题", MessageBoxButtons.YesNoCancel, new string[] { "按钮⼀(&O)", "按钮⼆(&T)", "按钮三(&H)" });}public static DialogResult Show(string text, string caption, MessageBoxButtons buttons, string[] buttonTitles){DummyForm frm = new DummyForm(buttons, buttonTitles);frm.Show();frm.WatchForActivate = true;DialogResult result = MessageBox.Show(frm, text, caption, buttons);frm.Close();return result;}class DummyForm : Form{IntPtr _handle;MessageBoxButtons _buttons;string[] _buttonTitles = null;bool _watchForActivate = false;public bool WatchForActivate{get { return _watchForActivate; }set { _watchForActivate = value; }}public DummyForm(MessageBoxButtons buttons, string[] buttonTitles){_buttons = buttons;_buttonTitles = buttonTitles;//让⾃⼰在界⾯上看不到this.Text = "";this.StartPosition = FormStartPosition.Manual;this.Location = new Point(-32000, -32000);this.ShowInTaskbar = false;}protected override void OnShown(EventArgs e){base.OnShown(e);//把⾃⼰藏起来,在任务列表⾥也看不到NativeWin32API.SetWindowPos(this.Handle, IntPtr.Zero, 0, 0, 0, 0, 659);}protected override void WndProc(ref System.Windows.Forms.Message m){if (_watchForActivate && m.Msg == 0x0006){_watchForActivate = false;_handle = m.LParam;CheckMsgbox();}base.WndProc(ref m);}private void CheckMsgbox(){if (_buttonTitles == null || _buttonTitles.Length == 0)return;//按钮标题的索引int buttonTitleIndex = 0;//获取⼦控件的句柄IntPtr h = NativeWin32API.GetWindow(_handle, OCCommon.Message.GW_CHILD);while (h != IntPtr.Zero){//按顺序把按钮标题赋上if (NativeWin32API.GetWindowClassName(h).Equals("Button")){if (_buttonTitles.Length > buttonTitleIndex){NativeWin32API.SetWindowText(h, _buttonTitles[buttonTitleIndex]);buttonTitleIndex++;}}h = NativeWin32API.GetWindow(h, OCCommon.Message.GW_HWNDNEXT);}}}}⽤到的消息:public const int GW_CHILD = 5;public const int GW_HWNDNEXT = 2;⽤到的WIN32 API:[DllImport("user32.dll", CharSet = CharSet.Auto)]public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int x, int y, int Width, int Height, int flags);[DllImport("user32.dll")]public static extern IntPtr GetWindow(IntPtr hWnd, long wCmd);[DllImport("user32.dll")]public static extern bool SetWindowText(IntPtr hWnd, string lpString);[DllImport("user32.dll")]public static extern int GetClassNameW(IntPtr hWnd, [MarshalAs(UnmanagedType.LPWStr)]StringBuilder lpString, int nMaxCount); public static string GetWindowClassName(IntPtr handle){StringBuilder sb = new StringBuilder(256);GetClassNameW(handle, sb, sb.Capacity); //得到窗⼝类名并保存在strClass中return sb.ToString();}。
messageboxa用法

messageboxa用法你提到的`MessageBoxA` 看起来是一个Windows API 函数,用于显示消息框(message box)的一种形式。
在Windows 操作系统中,`MessageBoxA` 函数是用于创建和显示标准消息框的函数之一。
以下是`MessageBoxA` 函数的基本用法:```c#include <windows.h>int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {// 函数参数依次为:父窗口句柄,消息框中显示的文本,消息框标题,消息框风格// 返回值是用户单击的按钮的标识符int result = MessageBoxA(NULL, "Hello, this is a message box!", "MessageBoxA Example", MB_OK | MB_ICONINFORMATION);// 根据用户的选择执行相应的操作if (result == IDOK) {// 用户单击了确定按钮} else if (result == IDCANCEL) {// 用户单击了取消按钮}return 0;}```上述代码是一个Windows GUI 应用程序的基本结构,并使用`MessageBoxA` 函数在应用程序启动时显示一个简单的消息框。
以下是一些常用的参数说明:- `hWnd`: 父窗口的句柄,如果为`NULL`,则消息框没有父窗口。
- `lpText`: 要在消息框中显示的文本。
- `lpCaption`: 消息框的标题。
- `uType`: 消息框的风格,可以是`MB_OK`、`MB_YESNO`、`MB_ICONINFORMATION` 等组合。
请注意,这是一个简单的示例,实际应用中可能需要更多的处理逻辑和错误检查。
QT新建一个窗口控制程序以实现添加按钮点击弹出信息提示框为例

QT新建一个窗口控制程序以实现添加按钮点击弹出信息提示框为例为了实现添加按钮点击弹出信息提示框的功能,我们可以使用Qt来创建一个窗口控制程序。
首先,我们需要创建一个Qt窗口应用程序项目。
在Qt Creator中选择"新建项目",然后选择"C++"和"Qt Widgets应用",填写项目名称和路径,然后点击"下一步"。
在下一个界面,可以选择使用预设的窗口模板。
选择一个适合的窗口模板,例如"MainWindow",然后点击"下一步"。
接下来,在"项目管理器"中,展开源文件夹,找到"mainwindow.cpp"文件。
双击打开该文件。
在"mainwindow.cpp"文件中,我们需要添加按钮和相应的点击事件。
如果不存在"MainWindow"类的构造函数,则需要手动创建构造函数。
我们可以在构造函数中添加按钮。
```cpp#include "mainwindow.h"#include "ui_mainwindow.h"#include <QMessageBox>MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)ui->setupUi(this);//创建按钮QPushButton *btn = new QPushButton("添加按钮", this);btn->setGeometry(100, 100, 100, 30);//连接按钮的点击事件到槽函数connect(btn, SIGNAL(clicked(), this, SLOT(showMessageBox());MainWindow::~MainWindowdelete ui;//槽函数:点击按钮弹出信息提示框void MainWindow::showMessageBoxQMessageBox::information(this, "提示", "按钮已点击");```在上面的代码中,我们首先在构造函数中创建了一个按钮,并设置了按钮的位置和尺寸。
messagebox实现方法

(原创实用版4篇)编制人员:_______________审核人员:_______________审批人员:_______________编制单位:_______________编制时间:____年___月___日序言下面是本店铺为大家精心编写的4篇《messagebox实现方法》,供大家借鉴与参考。
下载后,可根据实际需要进行调整和使用,希望能够帮助到大家,谢射!(4篇)《messagebox实现方法》篇1MessageBox 是一个常用于显示消息框的控件,可以在多种编程语言和框架中使用。
以下是使用 MessageBox 的一些实现方法:在 Python 中,可以使用 PyQt5 框架中的 MessageBox 控件。
可以通过拖放控件或修改控件的属性来创建 MessageBox。
在代码中,可以使用MessageBox.Show() 方法来显示消息框。
例如,在 C# 中,可以使用System.Windows.Forms 命名空间中的 MessageBox 控件。
在代码中,可以使用MessageBox.Show() 方法来显示消息框,并传递相应的参数来设置消息框的标题、消息、图标等属性。
在 C# 中,还可以使用 Windows Form 应用程序中的 MessageBox 控件。
在代码中,可以使用 MessageBox.Show() 方法来显示消息框,并传递相应的参数来设置消息框的标题、消息、图标等属性。
在 Java 中,可以使用 javax.swing 命名空间中的 JOptionPane 控件来实现 MessageBox 功能。
在代码中,可以使用 JOptionPane.showMessageDialog() 方法来显示消息框,并传递相应的参数来设置消息框的标题、消息、图标等属性。
在 JavaScript 中,可以使用 Alert 语句来显示消息框。
例如,在 HTML 页面中,可以使用 JavaScript 代码来显示 Alert 消息框。
windows电脑使用简单命令实现个性化弹窗的技巧

windows电脑使⽤简单命令实现个性化弹窗的技巧如果要实现Windows启动后的⾃动信息提醒,有许多⽅法可以实现。
例如,将记事本编写的TXT⽂件放⼊启动⽂件夹,随系统⾃动启动;或⽤桌⾯精灵等专⽤软件来提醒等。
但如果要实现带有⽇期、时间甚⾄⾃定义内容的标题栏和特殊选择按钮的⾃动弹窗,⼜该如何实现呢?其实,只需⼀句简单的系统命令,即可创建⼀个随系统启动⽽⾃动弹出的个性化窗⼝。
个性化弹窗的实现原理⾮常简单,⼤体的思路是:⽤记事本编写⼀句由Msgbox函数构成的弹出信息显⽰命令,然后将这个⽂件保存为Windows可以直接运⾏的.VBS脚本⽂件。
最后,再利⽤shell:startup命令打开系统启动⽂件夹,将这个⼩程序⽂件放⼊该⽂件夹,实现在Windows启动时对该⽂件的⾃动调⽤。
下⾯我们具体说明其实现过程。
1. ⼀句命令创建简单弹窗程序我们要使⽤如下格式的命令来构建⼀个提⽰窗⼝:X=Msgbox("MY_MESSAGE",number_of_buttons,"TITLE")为了形象直观,我们先不对该命令的参数做出解释,转⽽使⽤⼀个具体的实例通过操作来说明。
打开记事本⼯具,写⼊如下⼀句代码(图1):X=Msgbox("今天轮你值班,设备都检查好了吗?",64,FormatDateTime(Now, vbLongDate))输⼊完毕后,在记事本窗⼝内点选“⽂件→保存”命令,在随后弹出的保存⽂件窗⼝中,将保存类型选择为“所有⽂件(*.*)”,为⽂件起名(如“TiShi.vbs”),注意扩展名必须为.vbs,⽂件类型⼀定不能沿⽤默认的TXT类型,否则将⽆法运⾏(图2)。
这样,需要的弹窗程序就建好了。
下⾯就上述命令中⽤到的⼏个参数做具体解释,以便做到更加灵活地运⽤。
在上述命令中,“MY_MESSAGE”表⽰要提醒的内容,具体使⽤时要替换为⾃⼰需要的个性化内容,例如“今天轮你值班,设备都检查好了吗?”。
vb创建对话框的方法

VB创建对话框的方法1. 简介对话框是一种常见的用户界面元素,用于与用户进行交互和获取输入。
在VB (Visual Basic)中,创建对话框是一项重要的任务,可以通过几种不同的方法实现。
本文将介绍在VB中创建对话框的几种常用方法,并提供详细的步骤和示例代码。
2. VB中创建对话框的方法在VB中,创建对话框的方法主要包括以下几种:2.1 使用MessageBox.Show方法创建消息框MessageBox.Show方法是VB中创建对话框最简单和常用的方法之一。
该方法可以创建一个简单的消息框,用于显示一条消息并等待用户响应。
步骤:1.打开VB开发环境,创建一个新的Windows Forms应用程序项目。
2.在Form1的代码文件中,添加一个按钮控件,并为按钮的Click事件添加以下代码:Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Cl ickMessageBox.Show("Hello, World!", "提示", MessageBoxButtons.OK, MessageBoxI rmation)End Sub解释:上述代码中,MessageBox.Show方法的第一个参数是要显示的消息文本,第二个参数是对话框的标题,第三个参数指定了按钮的类型(这里使用了OK按钮),第四个参数指定了消息框的图标(这里使用了信息图标)。
结果:当用户点击按钮时,将显示一个带有消息文本”Hello, World!“的消息框,标题为”提示”,并包含一个OK按钮和一个信息图标。
2.2 使用InputBox函数创建输入框InputBox函数是VB中另一种创建对话框的方法,它可以显示一个输入框,用于获取用户的输入。
步骤:1.打开VB开发环境,创建一个新的Windows Forms应用程序项目。
Intouch MsgBox用户确认窗口 脚本说明

Intouch在做按钮动作和调试脚本时,经常需要用户确认窗口,根据用户点击的“是”“否”“确认”“取消”“OK”等取得返回值,从而根据用户二次确认以获得最终结果,下面给出两种MessageBox窗口的脚本,给大家参考:方案A:采用Intouch系统自带的OLE控件自行编写MsgBox。
缺点是创建的用户界面对话框可能会被其他窗口覆盖,不易别察觉。
下面是一个例子:1.创建用户界面对话框2.在脚本中,使用以下命令产生用户界面对话框:3.4.dim DlgBody as message;5.dim DlgTitle as message;6.dim Style as integer;7.dim Result as integer;8.9.OLE_CreateObject(%WS,"Wscript.Shell");10.result = %WS.Popup(DlgBody,1,DlgTitle,Style);11.12.本例创建以下用户界面对话框13.Style 标记名确定有哪些图标与按钮出现在对话框上。
使用以下值:复制代码1.图标样式值2.(无图标)无图标 03.错误图标 164.问号图标 325.警告图标 486.信息图标 647.8.要使用特定的按钮,请将以下值之一添加到 Style 值:9.值样式10.0 仅确定按钮11.1 确定与取消按钮12.2 放弃、重试及忽略按钮13.3 是、否及取消按钮14.4 是与否按钮15.5 重试与取消按钮16.6 取消、重试及继续按钮17.18.Result 标记名包含用户单击的按钮编号。
这可用作 InTouch 脚本中的条件分支。
可能的结果码如下:19.结果值含义20.1 按了确定按钮21.2 按了取消按钮22.3 按了放弃按钮23.4 按了重试按钮24.5 按了忽略按钮25.6 按了是按钮26.7 按了否按钮27.10 按了重试按钮28.11 按了继续按钮复制代码代码说明:DlgBody是消息变量写需要显示的字符串;DlgTitle是消息变量写窗口的标题;Style是整形变量定义格式。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
如何创建 Windows MessageBox 并且确定操作员按下的是哪个按钮?
显示订货号
6AV637.. WINCC SIMATIC HMI Software
6AV6371-1.. SIMATIC WinCC Optionen/Powerpacks
6AV638.. WINCC SIMATIC HMI Software 2
6AV6381-1.. SIMATIC WinCC Software
6ES7650.. SIMATIC PCS 7 PC
6ES7658.. SIMATIC PCS7 SW-Packages (BLE, ES, OS)
说明:
使用动态向导“Picture Functions > Display error box”可以创建在 WinCC 运行系统中显示 Windows MessageBox 的 C 脚本。
使用该向导生成的 C 脚本使用的是 Windows API 函数“MessageBox()”。
关于这个函数的详细信息可从 Microsoft 的“MSDN Library”中获得。
MessageBox() 函数的参数:
MessageBox 的显示受以下这些参数的影响。
参数描述
HWND hWnd 父窗口的处理
零 = 消息没有父窗口
LPCTSTR
lpText
消息文本
LPCTSTR lpCaption 文本的标题
如果该参数设为零,标题将使用默认的文本“Error”。
MessageBox 的类型;
这个参数定义了 MessageBox 的外观和行为。
它是不同“Flags”的组合(逐位进行“或”操作)。
以下列出了一些主要的标记:
MB_OK,
MB_OKCANCEL,
MB_YESNO,
MB_YESNOCANCEL,
MB_ABORTRETRYIGNORE,
MB_CANCELTRYCONTINUE,
MB_HELP,
MB_RETRYCANCEL
使用这些标记中的一个可以定义 MessageBox 中
显示哪些按钮。
MB_ICONEXCLAMATION,
MB_ICONQUESTION,
MB_ICONWARNING,
MB_ICONINFORMATION,
MB_ICONQUESTION,
MB_ICONASTERISK,
MB_ICONSTOP,
MB_ICONERROR,
MB_ICONHAND
使用这些标记中的一个可以定义 MessageBox 中
显示的图标。
MB_DEFBUTTON1,
MB_DEFBUTTON2,
MB_DEFBUTTON3,
MB_DEFBUTTON4
使用这些标记中的一个可以定义默认的按钮。
MB_SETFOREGROUND MessageBox 显示在最前面。
UINT uType
MB_SYSTEMMODAL MessageBox 定义为系统模式。
消息直到确认之
前一直显示在最前面。
下图显示了如何使用“MessageBox()”
( 26 KB )
How can you create a Windows MessageBox and have the button pressed by an operator evaluated? Display part number
6AV637.. WINCC SIMATIC HMI Software
6AV6371-1.. SIMATIC WinCC Optionen/Powerpacks
6AV638.. WINCC SIMATIC HMI Software 2
6AV6381-1.. SIMATIC WinCC Software
6ES7650.. SIMATIC PCS 7 PC
6ES7658.. SIMATIC PCS7 SW-Packages (BLE, ES, OS)
Instructions:
With the Dynamic Wizard "Picture Functions > Display error box" you can create a C script that displays a Windows MessageBox in WinCC Runtime. The C script generated with the wizard uses the Windows API function "MessageBox()". Detailed information on this function is available in the Microsoft "MSDN Library".
Parameters of the MessageBox() function:
The display of the MessageBox is influenced by the following parameters.
Parameter Description
HWND hWnd Handle of the parent window
ZERO = Message has no parent window
LPCTSTR
lpText
Text of the message
LPCTSTR lpCaption Text of the title
If the parameter is ZERO, the default text "Error" is used in the title.
return value.
( 26 KB ) Fig. 01。