winCE/Windows 应用程序消息提示框自动消失功能

近期在做winCE系统的扫描枪应用程序,遇到了一些问题,其中包括消失提示框在手持终端显示过小,

用户要求提示框提示几秒后自动关闭,Windows平台可以通过调用系统API以定时器的方式进行自动销毁。

不过在winCE上存在不同,由于winCE系统属于精简版的windows系统,所以在API上也是属于精简后的,

Windows平台销毁消息框用user32.dll中的FindWindow和PostMessage完成,而winCE平台并没有

user32.dll,不过对应的API在coredll.dll中。

windows平台示例代码:

 1         [DllImport("user32.dll", EntryPoint = "FindWindow", CharSet = CharSet.Auto)]
 2         internal static extern IntPtr FindWindow(string className,string windowName);
 3
 4         [DllImport("user32.dll", EntryPoint = "PostMessage", CharSet = CharSet.Auto)]
 5         internal static extern int PostMessage(IntPtr hWnd,int msg,IntPtr wParam,IntPtr lParam);
 6
 7         internal const int WM_CLOSE = 0x10;
 8         Timer timer = new Timer();
 9
10         private void btnAutoCloseMesaage_Click(object sender, EventArgs e)
11         {
12             runKillTimer();
13             MessageBox.Show("操作已完成,可以关闭!","Message");
14         }
15
16         /// <summary>
17         /// 运行timer
18         /// </summary>
19         internal void runKillTimer()
20         {
21             timer.Interval = 2000;
22             timer.Tick+=timer_Tick;
23             timer.Start();
24         }
25
26         /// <summary>
27         /// timer触发关闭消息框
28         /// </summary>
29         /// <param name="sender"></param>
30         /// <param name="e"></param>
31         private void timer_Tick(object sender, EventArgs e)
32         {
33             KillMessageBox();
34             timer.Stop();
35         }
36
37         /// <summary>
38         /// 调用API查找窗体并关闭
39         /// </summary>
40         internal void KillMessageBox()
41         {
42             IntPtr msgPtr = FindWindow(null, "Message");
43             if (msgPtr != IntPtr.Zero)
44             {
45                 PostMessage(msgPtr, WM_CLOSE, IntPtr.Zero, IntPtr.Zero);
46             }
47         }

winCE平台示例代码:

 1 [DllImport("coredll.dll", EntryPoint = "FindWindow", CharSet = CharSet.Auto)]
 2         internal static extern IntPtr FindWindow(string className,string windowName);
 3
 4         [DllImport("coredll.dll", EntryPoint = "PostMessage", CharSet = CharSet.Auto)]
 5         internal static extern int PostMessage(IntPtr hWnd,int msg,IntPtr wParam,IntPtr lParam);
 6
 7         internal const int WM_CLOSE = 0x10;
 8         Timer timer = new Timer();
 9
10         private void btnAutoCloseMesaage_Click(object sender, EventArgs e)
11         {
12             runKillTimer();
13             MessageBox.Show("操作已完成,可以关闭!","Message");
14         }
15
16         /// <summary>
17         /// 运行timer
18         /// </summary>
19         internal void runKillTimer()
20         {
21             timer.Interval = 2000;
22             timer.Tick+=new EventHandler(timer_Tick);
23             timer.Enabled = true;
24         }
25
26         /// <summary>
27         /// timer触发关闭消息框
28         /// </summary>
29         /// <param name="sender"></param>
30         /// <param name="e"></param>
31         private void timer_Tick(object sender, EventArgs e)
32         {
33             KillMessageBox();
34             timer.Enabled = false;
35         }
36
37         /// <summary>
38         /// 调用API查找窗体并关闭
39         /// </summary>
40         internal void KillMessageBox()
41         {
42             IntPtr msgPtr = FindWindow(null, "Message");
43             if (msgPtr != IntPtr.Zero)
44             {
45                 PostMessage(msgPtr, WM_CLOSE, IntPtr.Zero, IntPtr.Zero);
46             }
47         }

ps:大家有其他好的意见或建议也可以多多交流。

时间: 2024-12-26 02:18:44

winCE/Windows 应用程序消息提示框自动消失功能的相关文章

Android检测WIFI连接、提示框延时消失

Android检测系统WIFI是否连接?如没有连接,显示提示框,提示进行设置,当点击设置进入系统WIFI界面后1秒钟,提示框自动消失. 代码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 public boolean isWifiConnected(Context context) {         ConnectivityM

从仿QQ消息提示框来谈弹出式对话框

<代码里的世界> -UI篇 用文字札记描绘自己 android学习之路 转载请保留出处 by Qiao http://blog.csdn.net/qiaoidea/article/details/45896477 [导航] - 自定义弹出式对话框的简单用法 列举各种常见的对话框实现方案 1.概述 android原生控件向来以丑著称(新推出的Material Design当另说),因此几乎所有的应用都会特殊定制自己的UI样式.而其中弹出式提示框的定制尤为常见,本篇我们将从模仿QQ退出提示框来看一

UWP中的消息提示框(一)

不管什么平台,应用内难免会出现一些消息提示框,下面就来聊聊我在UWP里用到的消息提示框. 弹窗也可按是否需要用户操作促发一些逻辑进行分为两大类. 不需要用户干涉的一类: MessageDialog:操作简单,写起来也省事,想具体了解的请参考MSDN 先看看效果 PC上效果: mobile上效果: 再看看代码(●'?'●) 前台: <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" >

winform消息提示框

摘自:http://www.cnblogs.com/risen/archive/2008/01/15/1039751.html public partial class AlertForm : Form    {        /*         * 在类AlertForm定义的下方,         * 我们创建用于显示的字符串和其颜色的变量,         * 再定义几个Rectangle对象的变量用于放置标题.         * 提示内容以及可以拖动窗体的区域和关闭按钮的区域.   

Android:Toast简单消息提示框

Toast是简单的消息提示框,一定时间后自动消失,没有焦点. 1.简单文本提示的方法: //参数1:当前的上下文环境.this或getApplicationContext() //参数2:提示内容 //参数3:显示的时间长短 Toast toast = Toast.makeText(this, "默认的toast", Toast.LENGTH_LONG); toast.show(); 2.自定义位置的方法: Toast toast = Toast.makeText(this, &quo

Android消息提示框Toast

Toast是Android中一种简易的消息提示框.和Dialog不一样的是,Toast是没有焦点的,toast提示框不能被用户点击,而且Toast显示的时间有限,toast会根据用户设置的显示时间后自动消失. 创建Toast的方法总共有2种: 1.Toast.makeText(Context context, (CharSequence text)/( int resId), int duration) 参数:context是指上下文对象,通常是当前的Activity,text是指自己写的消息内

关于安卓开发通过Toast显示消息提示框

Toast用于在屏幕中显示一个提示信息栏,该消息栏没有任何控制按钮,并且不会获得焦点,经过一定时间后自动消失. 作用:用于显示一些快速提示信息 有两种方式可以显示提示信息框 一: 调用Toast类的make Text()方法创建一个名称为toast(自定义)的Toast对象 关键代码 1 Toast toast = Toast.makeText(this, "要显示的内容", Toast.LENGTH_LONG).show(); 二: 通过Toast类的构造方法创建一个消息提示框 关键

(RPA学习)使用多线程点击 VBA 运行中的消息提示框

艺赛旗RPA全面免费下载中点击下载http://www.i-search.com.cn/index.html?from=line27 业务场景使用 win32com 运行 Excel 中的宏运算(VBA),会遇到 VBA 运行的最后一步会弹出消息提示框,需点击这个消息提示框之后,VBA 才能运行结束,所以在运行 VBA 之后加入 Try 组件去点击时无法点击的,所以考虑使用多线程来实现. 流程代码import ubpa.iautomation as iautomationimport threa

CSS+jQuery实现可关闭的智能定位的浮动消息提示框

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>CSS+jQuery实现可关闭的智能定位的