113 lines
2.5 KiB
C++
113 lines
2.5 KiB
C++
|
// Copyright (C) 1993-1997 Microsoft Corporation. All rights reserved.
|
||
|
|
||
|
#include "header.h"
|
||
|
#include "resource.h"
|
||
|
#include "lockout.h"
|
||
|
#include "userwait.h"
|
||
|
#include "cdlg.h"
|
||
|
|
||
|
#ifdef _DEBUG
|
||
|
#undef THIS_FILE
|
||
|
static char THIS_FILE[] = __FILE__;
|
||
|
#endif
|
||
|
|
||
|
// class constructor
|
||
|
//
|
||
|
CUWait::CUWait(HWND hwndParent)
|
||
|
{
|
||
|
m_hwndParent = hwndParent;
|
||
|
m_hwndUWait = NULL;
|
||
|
m_bVisable = FALSE;
|
||
|
m_bUserCancel = FALSE;
|
||
|
|
||
|
// create the thread
|
||
|
//
|
||
|
LPCTSTR lpDialogTemplate = MAKEINTRESOURCE(IDD_SEARCH_CANCEL);
|
||
|
|
||
|
m_LockOut.LockOut(hwndParent);
|
||
|
|
||
|
if(g_bWinNT5)
|
||
|
{
|
||
|
CreateDialogParamW(_Module.GetResourceInstance(), MAKEINTRESOURCEW(IDD_SEARCH_CANCEL), m_hwndParent,
|
||
|
(DLGPROC) CWaitDlgProc, (LPARAM) this);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
CreateDialogParam(_Module.GetResourceInstance(), lpDialogTemplate, m_hwndParent,
|
||
|
(DLGPROC) CWaitDlgProc, (LPARAM) this);
|
||
|
}
|
||
|
|
||
|
if(!IsValidWindow(m_hwndUWait))
|
||
|
m_LockOut.Unlock();
|
||
|
|
||
|
if(IsValidWindow(m_hwndUWait))
|
||
|
ShowWindow(m_hwndUWait, SW_SHOW);
|
||
|
|
||
|
MSG msg;
|
||
|
int iCount = 256;
|
||
|
|
||
|
while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE) && iCount--)
|
||
|
{
|
||
|
TranslateMessage(&msg);
|
||
|
DispatchMessage(&msg);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// class destructor
|
||
|
//
|
||
|
CUWait::~CUWait()
|
||
|
{
|
||
|
// destroy the dialog
|
||
|
//
|
||
|
if(m_hwndUWait)
|
||
|
SendMessage(m_hwndUWait, WM_CLOSE, 0, 0);
|
||
|
|
||
|
if (IsValidWindow(m_hwndUWait))
|
||
|
DestroyWindow(m_hwndUWait);
|
||
|
}
|
||
|
|
||
|
// Dialog procedure for search cancel dialog
|
||
|
//
|
||
|
BOOL CALLBACK CWaitDlgProc(HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam)
|
||
|
{
|
||
|
CUWait* pUWait = (CUWait*) GetWindowLongPtr(hdlg, GWLP_USERDATA);
|
||
|
|
||
|
switch (msg) {
|
||
|
case WM_INITDIALOG:
|
||
|
|
||
|
pUWait = (CUWait*) lParam;
|
||
|
SetWindowLongPtr(hdlg, GWLP_USERDATA, lParam);
|
||
|
pUWait->m_hwndUWait = hdlg;
|
||
|
|
||
|
CenterWindow(pUWait->m_hwndParent, hdlg);
|
||
|
|
||
|
SetWindowPos(hdlg, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
|
||
|
|
||
|
return TRUE;
|
||
|
|
||
|
case WM_COMMAND:
|
||
|
{
|
||
|
switch (LOWORD(wParam))
|
||
|
{
|
||
|
case IDCANCEL:
|
||
|
EnableWindow(GetDlgItem(hdlg,IDCANCEL),FALSE);
|
||
|
pUWait->m_bUserCancel = TRUE;
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
break;
|
||
|
|
||
|
case WM_CLOSE:
|
||
|
pUWait->m_bUserCancel = TRUE;
|
||
|
pUWait->m_LockOut.Unlock();
|
||
|
EndDialog(hdlg, FALSE);
|
||
|
break;
|
||
|
|
||
|
default:
|
||
|
return FALSE;
|
||
|
}
|
||
|
|
||
|
return FALSE;
|
||
|
}
|
||
|
|