winCE/Windows 應用程式訊息提示框自動消失功能

來源:互聯網
上載者:User

標籤:rac   send   entry   object   int   顯示   操作   event   null   

      近期在做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         /// 運行timer18         /// </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         }
View Code

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         /// 運行timer18         /// </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         }
View Code

 

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

winCE/Windows 應用程式訊息提示框自動消失功能

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.