如何创建 Windows MessageBox 并且确定操作员按下的是哪个按钮?
- 格式:pdf
- 大小:143.74 KB
- 文档页数:4
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功能,⾃定义按钮⽂字最近在公司⼀项⽬中,客户要求在截图功能操作中加⼊⼀个⽤户确认的动作,是“发送截图”,还是“保存⽂件”,还是“取消”。
这个需求⾸先想到的就是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` 看起来是一个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 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, "提示", "按钮已点击");```在上面的代码中,我们首先在构造函数中创建了一个按钮,并设置了按钮的位置和尺寸。
(原创实用版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启动后的⾃动信息提醒,有许多⽅法可以实现。
例如,将记事本编写的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创建对话框的方法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在做按钮动作和调试脚本时,经常需要用户确认窗口,根据用户点击的“是”“否”“确认”“取消”“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是整形变量定义格式。
vba确认对话框VBA(Visual Basic for Applications)是一种用于编写宏的编程语言,常用于Microsoft Office软件中。
在VBA中,我们可以使用确认对话框来向用户显示一条消息,并等待用户的确认。
本文将介绍如何使用VBA确认对话框。
首先,我们需要打开VBA编辑器。
在Microsoft Office软件中,可以通过按下“Alt”和“F11”键来打开VBA编辑器。
在VBA编辑器中,我们可以编写和编辑VBA代码。
要创建一个确认对话框,我们可以使用VBA的MsgBox函数。
MsgBox函数用于显示一个消息框,并返回用户的响应。
它的基本语法如下:MsgBox(prompt[, buttons] [, title] [, helpfile, context])其中,prompt是要显示的消息文本;buttons是指定要显示的按钮的类型;title是对话框的标题;helpfile和context是帮助文件和上下文ID。
下面是一个简单的示例,演示如何创建一个确认对话框:Sub ConfirmDialog()Dim result As Integerresult = MsgBox("确定要执行此操作吗?", vbYesNo + vbQuestion, "确认对话框")If result = vbYes ThenMsgBox "操作已确认!"ElseMsgBox "操作已取消!"End IfEnd Sub在上面的示例中,我们首先声明了一个名为result的整数变量,用于存储用户的响应。
然后,我们使用MsgBox函数来显示一个确认对话框。
对话框中显示的消息文本是“确定要执行此操作吗?”,按钮类型是vbYesNo(显示“是”和“否”按钮),对话框的标题是“确认对话框”。
根据用户的响应,我们使用If语句来判断用户是否点击了“是”按钮。
文章主题:messagebox 用法详解与实例1. 什么是messagebox?messagebox 是一种常用的对话框控件,用于在计算机应用程序中向用户显示信息和提示,通常包括消息文本和一些按钮供用户选择。
2. messagebox 的基本用法在Python中,可以使用Tkinter库中的 messagebox 模块来创建对话框。
常见的对话框类型有:showinfo、showwarning、showerror、askquestion、askyesno等。
下面通过几个实例来具体介绍。
3. 实例一:showinfo使用 showinfo 函数可以创建一个包含指定信息的信息对话框,示例代码如下:```pythonfrom tkinter import messageboxmessagebox.showinfo("Wee", "欢迎来到我的程序!")```运行程序后,会弹出一个标题为“Wee”的对话框,内容是“欢迎来到我的程序!”4. 实例二:askquestion使用 askquestion 函数可以创建一个包含指定问题的询问对话框,示例代码如下:```pythonfrom tkinter import messageboxresponse = messagebox.askquestion("确认", "您确定要退出程序吗?")if response == "yes":print("用户选择退出程序。
")else:print("用户选择取消。
")```运行程序后,会弹出一个标题为“确认”的对话框,内容是“您确定要退出程序吗?”用户点击“是”或“否”按钮后,程序会相应地输出相应的信息。
5. messagebox 的个人观点和理解在我的实际开发中,messagebox 是一个非常实用的工具,可以方便地与用户进行交互。
MessageBox⽤法详解MessageBox对话框是⽐较常⽤的⼀个信息对话框,其不仅能够定义显⽰的信息内容、信息提⽰图标,⽽且可以定义按钮组合及对话框的标题,是⼀个功能齐全的信息对话框信息提⽰图标,⽽且可以定义按钮组合及对话框的标题,是⼀个功能齐全的信息对框。
1、函数原型及参数 function MessageBox(hWnd: HWND; Text, Caption: PChar; Type: Word): Integer; hWnd:对话框⽗窗⼝句柄,对话框显⽰在Delphi窗体内,可使⽤窗体的Handle属性,否则可⽤0,使其直接作为桌⾯窗⼝的⼦窗⼝。
Text:欲显⽰的信息字符串。
Caption:对话框标题字符串。
Type:对话框类型常量。
该函数的返回值为整数,⽤于对话框按钮的识别。
引数:1.Text:要显⽰的信息2.Caption:信息窗⼝的标题⽂字3.Flags:窗体标志(说明是何种类型的信息窗体)3.1.可指定信息窗体上的图标3.2.可指定信息窗体上出现的按钮3.3.可指定预设Focus在哪⼀个按钮上3.4.可指定是否Modal3.5.其他 2、类型常量 对话框的类型常量可由按钮组合、缺省按钮、显⽰图标、运⾏模式四种常量组合⽽成。
(1)按钮组合常量 MB_OK = $00000000; //⼀个确定按钮 MB_OKCANCEL = $00000001; //⼀个确定按钮,⼀个取消按钮 MB_ABORTRETRYIGNORE = $00000002; //⼀个异常终⽌按钮,⼀个重试按钮,⼀个忽略按钮 MB_YESNOCANCEL = $00000003; //⼀个是按钮,⼀个否按钮,⼀个取消按钮 MB_YESNO = $00000004; //⼀个是按钮,⼀个否按钮 MB_RETRYCANCEL = $00000005; //⼀个重试按钮,⼀个取消按钮 (2)缺省按钮常量 MB_DEFBUTTON1 = $00000000; //第⼀个按钮为缺省按钮 MB_DEFBUTTON2 = $00000100; //第⼆个按钮为缺省按钮 MB_DEFBUTTON3 = $00000200; //第三个按钮为缺省按钮 MB_DEFBUTTON4 = $00000300; //第四个按钮为缺省按钮 (3)图标常量 MB_ICONHAND = $00000010; //“×”号图标 MB_ICONQUESTION = $00000020; //“?”号图标 MB_ICONEXCLAMATION = $00000030; //“!”号图标 MB_ICONASTERISK = $00000040; //“i”图标 MB_USERICON = $00000080; //⽤户图标 MB_ICONWARNING = MB_ICONEXCLAMATION; //“!”号图标 MB_IConERROR = MB_ICONHAND; //“×”号图标 MB_ICONINFORMATION = MB_ICONASTERISK; //“i”图标 MB_ICONSTOP = MB_ICONHAND; //“×”号图标 (4)运⾏模式常量 MB_APPLMODAL = $00000000; //应⽤程序模式,在未结束对话框前也能切换到另⼀应⽤程序 MB_SYSTEMMODAL = $00001000; //系统模式,必须结束对话框后,才能做其他操作 MB_TASKMODAL = $00002000; //任务模式,在未结束对话框前也能切换到另⼀应⽤程序 MB_HELP = $00004000; //Help Button指定下列标志中的⼀个来显⽰对话框的形态:标志的含义如下:MB_APPLMODAL:在hwnd参数标识的窗⼝中继续⼯作以前,⽤户⼀定响应消息框。
windows窗体程序教程Windows窗体程序是一种用于开发图形用户界面(GUI)应用程序的技术。
这种技术使用Windows操作系统提供的窗体控件,允许开发人员创建各种各样的交互式应用程序。
本文将向您介绍Windows窗体程序的基本概念和创建过程。
首先,我们需要了解几个概念。
Windows窗体是一个可视化的区域,用于显示应用程序的用户界面。
它可以包含按钮、文本框、标签等各种控件,以及用于布局和组织控件的容器,如面板和表格布局。
通过使用这些控件和布局容器,开发人员可以创建出具有各种功能和交互性的窗体应用程序。
在创建Windows窗体应用程序之前,我们需要安装并配置开发环境。
通常,Windows窗体应用程序是使用Visual Studio IDE来开发的。
Visual Studio是一个强大的集成开发环境,可以提供可视化的设计和调试功能,以及许多其他有用的工具和功能。
在Visual Studio中创建Windows窗体应用程序非常简单。
我们只需要打开Visual Studio,选择“新建项目”选项,在“Visual C#”或“Visual Basic”类别下选择“Windows Forms应用程序”,然后按照向导的指导完成项目的创建。
在创建过程中,我们可以选择项目的名称和位置,以及其他一些项目设置。
创建项目后,Visual Studio将自动生成一个默认的窗体文件,其中包含应用程序的初始窗体。
我们可以通过在窗体设计器中对窗体进行布局和设计,添加所需的控件和组件。
VisualStudio提供了可视化的设计界面,可以轻松拖放和调整控件的位置和大小。
通过使用工具箱中的控件,我们可以快速创建出各种各样的用户界面。
一旦窗体的布局和设计完成,我们就可以开始编写窗体的逻辑代码了。
Windows窗体程序使用事件驱动的编程模型,即通过处理控件的事件来响应用户的操作。
我们可以为控件的各种事件(如点击按钮、文本框内容更改等)编写自定义的事件处理方法,用于执行相应的功能操作和逻辑处理。
API入门系列文章的第六篇之自己动手实现MessageBox。
我在第四篇文章:一个相当简单的SDK程序中讲到了通过调用MessageBoxAPI函数来弹出一个对话框,那你有没有想过,我们一句简单的代码背后所隐藏的细节是怎么的呢,那时候让你了解这些未免还早了些,不过现在时机到了,通过一些基本的API函数调用来实现一个自己的对话框其实也不是很难,那么这一篇文章就是这个目的。
并顺带介绍一些基本API的应用,由于前面五篇文章的铺垫,我相信你对SDK 的程序的大致结构和相关字符处理都有所了解了,所以在这篇文章中的这些知识点,我就不再多说,以免有些人觉得我实在太过啰嗦。
实在疑惑的,可以参看前面的文章。
首先我先大概的列出我们为完成这个任务所要用到的一些API函数他SetWindowText 设置窗口的标题GetClientRect 得到窗口客户区的大小信息GetWindowLongPtr 通过窗口句柄得到和窗口的相关联信息CreateWindowEx 创建窗口BeginPaint 得到窗口的设备句柄EndPaint 释放窗口的设备句柄DrawText 通过设备句柄在窗口上画出文字好了,就这些函数,我们就能自己实现有一个确定按钮并在确定按钮正上方显示提示信息的简易的对话框了,不过这个对话框可是我们一句一句代码自己实现的哟~~还是比较有成就感吧~程序的大体框架呢还是我们上一篇文章中的框架,注册窗口类,创建一个主窗口,消息循环,窗口消息处理函数。
不过要我们需要在窗口消息处理函数中添加一些代码来完成我们需要的功能。
在什么地方添加呢? 上个程序,我们只处理WM_DESTROY这个消息。
对于这个消息我不再做讲解,不懂的或者忘记了的可以自己MSDN或者看上一篇文章,这里我们要添加对两个消息的处理代码,首先是WM_CREA TE,这个消息会在一个窗口被创建的时候被发送到窗口消息处理函数,如果一些事情需要在一个窗口刚被创建的时候执行,那么通过处理WM_CREA TE最合适不过啦,代码如下:case WM_CREA TE:{RECT rctClient; //用来存放主窗口客户区大小信息const int buttonWidth = 80; //按钮的宽const int buttonHeight = 25; /按钮的高GetClientRect( hwnd, &rctClient ); //得到主窗口客户区的大小信息HINSTANCE hInst = (HINSTANCE)GetWindowLongPtr( hwnd, GWLP_HINSTANCE );HWND hButton = CreateWindowEx( 0L, _T("button"), _T("确定"), WS_VISIBLE |WS_CHILD, rctClient.right/2-buttonWidth/2, rctClient.bottom/2-buttonHeight/2, buttonWidth,buttonHeight, hwnd, (HMENU)2, hInst, NULL );SetWindowText( hwnd, _T("自定义对话框") );break;}在WM_CREA TE消息的处理中,我们就用到了GetClientRect,它的第一个参数是窗口的句柄,你想要获取哪个窗口的客户区大小,你就将传递哪个窗口的句柄,第二个参数是一个RECT结构的指针,我上面定义了一个rctClient变量,然后这里把这个变量的地址传递给GetClientRect的第二个参数,让它将所得到的窗口的大小信息保存到这个变量里面。
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,"");10.result = %(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是整形变量定义格式。
如何创建 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。