.Notifier: Outlook-Like Notifier

.Notifier: Outlook-Like Notification Window

When using Microsoft Outlook, you come across a mail notification window that appears slowly and fades off. But, when you drop your mouse back on the window, it becomes opaque, and then again on mouse away it fades off, and this process continues so on. So, eventually it either fades away or you ignore the window, or you close it or you click it to read the mail. This article describes how to build that kind of window using C#.

Let me know if you encounter problems or have a suggestion for improvement.

The Logic

Following is the program flow:

  1. Make opacity level 0 initially.
  2. Display window.
  3. Start show timer T1.
  4. Gradually increase the opacity in T1 until it reaches max 1.0 level.
  5. Stop timer T1.
  6. Start the hiding timer T2.
  7. Decrease the opacity level in T2 until it reaches min level 0.01.
  8. Stop the timer T2.
  9. Clean message.
  10. Close the window.

Using the Code

Following is how you use the code. If you would like to change the notification window display rates, use the following:

KNotifier.KNotifio.Show(txtMessage.Text,    //the message itself
                        nShow,              //Time to show the window
                        nHide);             //Time to hide the window

Otherwise, to just send the message, use the following:

KNotifier.KNotifio.Show("This is a test message.");    //Simple call

Hide Notification Window Timer

The hide timer event goes as follows:

private void tmrHide_Tick(object sender, EventArgs e)
   //Decrease the opacity level until its greater than zero
   if (this.Opacity > 0.00)
      this.Opacity -= 0.01;
      //Window has gone completely transparent
      tmrHide.Stop();    //Stop the timer
      CloseWnd();        //Close window

Show Notification Window Timer

The show timer event goes as follows:

private void tmrShow_Tick(object sender, EventArgs e)
   //Increase opacity until it reaches maximum
   if (this.Opacity < 0.99)
      this.Opacity += 0.01;
      //Window already opaque
      tmrShow.Stop();     //Let's stop the timer

      tmrHide.Start();    //Start hiding the window

Closing the Notification Window

Following is how the window is closed.

private void CloseWnd()
      //Stop timers

      g_Fio.Close();                          //Close the form
      m_strPreviousMessage = string.Empty;    //Clean message
   catch (Exception exec) { }

How the Window Is Shown

public static void Show(string strMessage, i nShowTime, int nHideTime)
   //Set the time it should take to show the window
   m_nShowTime = nShowTime - 5;
   //Set the time it would take to hide the window
   m_nHideTime = nHideTime;

The Show() Method

public static void Show(string strMessage)
      if (m_strPreviousMessage == strMessage)
         m_strPreviousMessage = strMessage;
         KNotifio theNotifio = new KNotifio();
         g_Fio = theNotifio;
         theNotifio.txtMessage.Text = strMessage;
   catch (Exception exc)


public KNotifio()
   tmrHide.Interval = m_nHideTime;    //Set timers
   tmrShow.Interval = m_nShowTime;

      //Set round rects
   } catch (Exception exc) { }

   //Move window close to system tray (above the clock)
   Location = new Point(Screen.PrimaryScreen.Bounds.Width -
      this.Width, Screen.PrimaryScreen.Bounds.Height -
      this.Height - 50);

Rounded Corners

We call an API to make the corners round.

/// <summary>
/// Provides MS Outlook styled dynamic notification window
/// </summary>
public partial class KNotifio : Form
   //Need to make our window a bit rounded.
   [DllImport("Gdi32.dll", EntryPoint = "CreateRoundRectRgn")]
   private static extern IntPtr CreateRoundRectRgn
      int nLeftRect,        // x-coordinate of upper-left corner
      int nTopRect,         // y-coordinate of upper-left corner
      int nRightRect,       // x-coordinate of lower-right corner
      int nBottomRect,      // y-coordinate of lower-right corner
      int nWidthEllipse,    // height of ellipse
      int nHeightEllipse    // width of ellipse


Let me about the reason in case you don't like it and the ways I can be of help. I would love that.

About the Author

KMan KMan




  • !

    Posted by jusstujoo on 03/13/2009 01:39am


Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • As the mobile enterprise marketplace expands and customer needs grow more diverse, Samsung recognizes that solution partners and developers play an essential role by continually innovating to meet their customers' needs. Samsung works to provide these developers and partners with the latest tools and resources needed to create these solutions. Read this program guide to learn how the Samsung Enterprise Alliance Program provides partners and developers with Samsung enterprise software development kits (SDKs) …

  • U.S. companies are desperately trying to recruit and hire skilled software engineers and developers, but there's simply not enough quality talent to go around. In response, companies often resort to inferior solutions -- hiring substandard developers and engineers, recruiting talent on a part-time or temporary basis, poaching people from competitors, or burdening an already stressed IT staff for more of their labor. Fortunately, there's a better solution. Read this white paper to learn the business value of …

Most Popular Programming Stories

More for Developers

RSS Feeds

Thanks for your registration, follow us on our social networks to keep up-to-date