Countdown Dialog DLL | CodeGuru

Countdown Dialog DLL

Environment: [eg C/C++ W32, W95/98/2000,NT etc.] Have you ever needed a messagebox style dialog to wait before allowing processing to continue and then disappear automatically? This DLL has a simple dialog box with a progress bar that does just that. You can enter the number of seconds, the default button, the caption and the prompt. […]

Written By
CodeGuru Staff
CodeGuru Staff
Oct 18, 2001
1 minute read
CodeGuru content and product recommendations are editorially independent. We may make money when you click on links to our partners. Learn More

Environment: [eg C/C++ W32, W95/98/2000,NT etc.]

Have you ever needed a messagebox style dialog
to wait before allowing processing to continue
and then disappear automatically? This
DLL has a simple dialog box with a progress bar
that does just that. You can enter the number
of seconds, the default button, the caption and
the prompt. It counts down with a progress bar
then closes itself returning either IDOK or
IDCANCEL. The user can also press the buttons
to close the dialog before the timer does.

Features

  • Everything’s in the DLL
  • Easy to call function
  • Small footprint (32K)
  • Specify prompt, caption, seconds to close, default button
  • Pure Win32 API (no MFC, COM or ActiveX)
  • Optionally closes with loss of focus
  • Includes source code, test container and Visual C++ 6.0
    project files. A good example for learning about DLLs.

Here’s the calling code to use the DLL in your
application. You’ll also need to create a project
and link in the common controls library,
(commct32.lib) and the multithreading library.

// just include CountdownDialog.lib into your
// project.  Add the include file at the top
// of your source code (see below) and it's
// ready to use.

// Close on inactive option means that the dialog
// will close when the focus leaves--like when the
// user task switches to another application.

#include "commctrl.h"
#include "CountdownDialog.h"

// In your WinMain function...

   InitCommonControls(); // use new common controls



// Somewhere else like a push button event

   int ret = CountdownDialog(
      hwnd,
      "Perform some task now?",
      "Sample Caption Message",
      20, /* seconds till close */
      IDCANCEL, /* default on close */
      false /* close with loss of focus */
   );
   if ( ret == IDOK )
      // take the red pill :-)
   else
      // take the blue pill :-(


//
//
// or dynamically...

#include "commctrl.h"
#include "CountdownDialog.h"

// In your WinMain function...

   InitCommonControls(); // use new common controls



// Somewhere else like a push button event

   HMODULE hwnd = LoadLibrary( "CountdownDialog.dll" );
   if ( hwnd == NULL )
   {
      MessageBox( NULL, "LoadLibrary Failed", "Error", MB_OK );
      return;
   }
   pfnCountdownDialog CDD = (pfnCountdownDialog) \
      GetProcAddress( hwnd,"CountdownDialog" );
   if ( CDD == NULL )
   {
      MessageBox( NULL, "GetProcAddress Failed", "Error", MB_OK );
      FreeLibraryAndExitThread( hwnd, 0 );
      return;
   }
   int ret = CDD( hwndParent, "Prompt", "Title",
      2, IDCANCEL, FALSE );
   FreeLibrary(hwnd);

   switch (ret)
   {
   case IDOK:
      MessageBox( NULL, "IDOK", "Result", MB_OK );
      break;
   case IDCANCEL:
      MessageBox( NULL, "IDCANCEL", "Result", MB_OK );
      break;
   }

Permissions: you can freely distribute and use this code in
your projects as long as my name is in the revision log.
Also, feel free to modify them and republish if you like
as long as my name is still the log.

Downloads

Download demo project – 174 Kb (approx.)

Download source – 4 Kb

CodeGuru Logo

CodeGuru covers topics related to Microsoft-related software development, mobile development, database management, and web application programming. In addition to tutorials and how-tos that teach programmers how to code in Microsoft-related languages and frameworks like C# and .Net, we also publish articles on software development tools, the latest in developer news, and advice for project managers. Cloud services such as Microsoft Azure and database options including SQL Server and MSSQL are also frequently covered.

Property of TechnologyAdvice. © 2026 TechnologyAdvice. All Rights Reserved

Advertiser Disclosure: Some of the products that appear on this site are from companies from which TechnologyAdvice receives compensation. This compensation may impact how and where products appear on this site including, for example, the order in which they appear. TechnologyAdvice does not include all companies or all types of products available in the marketplace.