// Copyright (C) 1998 Microsoft Corporation // // Splash screen for unattended mode // // 10-1-98 sburns #include "headers.hxx" #include "UnattendSplashDialog.hpp" #include "resource.h" #include "state.hpp" const UINT SELF_DESTRUCT_MESSAGE = WM_USER + 200; static const DWORD HELP_MAP[] = { 0, 0 }; UnattendSplashDialog::UnattendSplashDialog(int splashMessageResId) : Dialog(IDD_UNATTEND_SPLASH, HELP_MAP), messageResId(splashMessageResId) { LOG_CTOR(UnattendSplashDialog); ASSERT(messageResId); } UnattendSplashDialog::~UnattendSplashDialog() { LOG_DTOR(UnattendSplashDialog); } void UnattendSplashDialog::OnInit() { LOG_FUNCTION(UnattendSplashDialog::OnInit); // Since the window does not have a title bar, we need to give it some // text to appear on the button label on the shell task bar. Win::SetWindowText(hwnd, String::load(IDS_WIZARD_TITLE)); // NTRAID#NTBUG9-502991-2001/12/07-sburns Win::SetDlgItemText(hwnd, IDC_MESSAGE, messageResId); } void UnattendSplashDialog::SelfDestruct() { LOG_FUNCTION(UnattendSplashDialog::SelfDestruct); // Post our window proc a self destruct message. We use Post instead of // send, as we expect that in some cases, this function will be called from // a thread other than the one that created the window. (It is illegal to // try to destroy a window from a thread that it not the thread that // created the window.) Win::PostMessage(hwnd, SELF_DESTRUCT_MESSAGE, 0, 0); } bool UnattendSplashDialog::OnMessage( UINT message, WPARAM /* wparam */ , LPARAM /* lparam */ ) { if (message == SELF_DESTRUCT_MESSAGE) { delete this; return true; } return false; }