third-party libs
This commit is contained in:
parent
f836927d3a
commit
b154ee9266
3667 changed files with 854591 additions and 0 deletions
187
third-party/BugTrap-1.3-57bd515/source/WaitDlg.cpp
vendored
Normal file
187
third-party/BugTrap-1.3-57bd515/source/WaitDlg.cpp
vendored
Normal file
|
|
@ -0,0 +1,187 @@
|
|||
/*
|
||||
* This is a part of the BugTrap package.
|
||||
* Copyright (c) 2005-2009 IntelleSoft.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Description: Wait dialog.
|
||||
* Author: Maksim Pyatkovskiy.
|
||||
*
|
||||
* This source code is only intended as a supplement to the
|
||||
* BugTrap package reference and related electronic documentation
|
||||
* provided with the product. See these sources for detailed
|
||||
* information regarding the BugTrap package.
|
||||
*/
|
||||
|
||||
#include "StdAfx.h"
|
||||
#include "resource.h"
|
||||
#include "WaitDlg.h"
|
||||
#include "BugTrapUtils.h"
|
||||
#include "ResManager.h"
|
||||
#include "Globals.h"
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define new DEBUG_NEW
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @addtogroup BugTrapUI BugTrap Graphical User Interface
|
||||
* @{
|
||||
*/
|
||||
|
||||
/// Flag indicating window de-initialization.
|
||||
BOOL CWaitDialog::m_bDone;
|
||||
/// Progress control.
|
||||
CAnimProgressBar CWaitDialog::m_pbAnim;
|
||||
|
||||
void CWaitDialog::InitVars(void)
|
||||
{
|
||||
m_hThread = NULL;
|
||||
m_hwndParent = NULL;
|
||||
m_hwndWait = NULL;
|
||||
m_bDone = FALSE;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param hwnd - window handle.
|
||||
* @param hwndFocus - system-defined focus window.
|
||||
* @param lParam - user-defined parameter.
|
||||
* @return true to setup focus to system-defined control.
|
||||
*/
|
||||
BOOL CWaitDialog::WaitDlg_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
|
||||
{
|
||||
lParam; hwndFocus;
|
||||
|
||||
HWND hwndCtl = GetDlgItem(hwnd, IDC_PROGRESS_BAR);
|
||||
m_pbAnim.Attach(hwndCtl);
|
||||
m_pbAnim.SetNumChunks(3);
|
||||
m_pbAnim.Play();
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param hwnd - window handle.
|
||||
* @param id - control ID.
|
||||
* @param hwndCtl - control handle.
|
||||
* @param codeNotify - notification code.
|
||||
*/
|
||||
void CWaitDialog::WaitDlg_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
|
||||
{
|
||||
codeNotify; hwndCtl;
|
||||
switch (id)
|
||||
{
|
||||
case IDOK:
|
||||
case IDCANCEL:
|
||||
if (m_bDone)
|
||||
{
|
||||
// User may press Alt-F4 and close
|
||||
// this window before we are ready.
|
||||
DestroyWindow(hwnd);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param hwnd - window handle.
|
||||
*/
|
||||
void CWaitDialog::WaitDlg_OnDestroy(HWND hwnd)
|
||||
{
|
||||
hwnd;
|
||||
m_pbAnim.Detach();
|
||||
PostQuitMessage(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param hwnd - window handle.
|
||||
* @param x - X coordinate.
|
||||
* @param y - Y coordinate.
|
||||
*/
|
||||
UINT CWaitDialog::WaitDlg_OnNCHitTest(HWND hwnd, int x, int y)
|
||||
{
|
||||
hwnd; x; y;
|
||||
SetWindowLongPtr(hwnd, DWLP_MSGRESULT, HTCAPTION);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param hwndDlg - window handle.
|
||||
* @param uMsg - message identifier.
|
||||
* @param wParam - 1st message parameter.
|
||||
* @param lParam - 2nd message parameter.
|
||||
* @return message result.
|
||||
*/
|
||||
INT_PTR CALLBACK CWaitDialog::WaitDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
switch (uMsg)
|
||||
{
|
||||
HANDLE_MSG(hwndDlg, WM_INITDIALOG, WaitDlg_OnInitDialog);
|
||||
HANDLE_MSG(hwndDlg, WM_COMMAND, WaitDlg_OnCommand);
|
||||
HANDLE_MSG(hwndDlg, WM_DESTROY, WaitDlg_OnDestroy);
|
||||
HANDLE_MSG(hwndDlg, WM_NCHITTEST, WaitDlg_OnNCHitTest);
|
||||
default: return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param hwndParent - parent window handle.
|
||||
*/
|
||||
CWaitDialog::CWaitDialog(HWND hwndParent)
|
||||
{
|
||||
InitVars();
|
||||
BeginWait(hwndParent);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param pParam - thread parameter (pointer to CWaitDialog).
|
||||
* @return error code.
|
||||
*/
|
||||
UINT CALLBACK CWaitDialog::WaitThreadProc(PVOID pParam)
|
||||
{
|
||||
CWaitDialog* _this = (CWaitDialog*)pParam;
|
||||
_ASSERT(_this != NULL);
|
||||
|
||||
HCURSOR hOldCursor = SetCursor(g_pResManager->m_hWaitCursor);
|
||||
|
||||
_this->m_hwndWait = CreateDialog(g_hInstance, MAKEINTRESOURCE(IDD_WAIT_DLG), _this->m_hwndParent, WaitDlgProc);
|
||||
if (_this->m_hwndWait != NULL)
|
||||
{
|
||||
CenterWindow(_this->m_hwndWait, _this->m_hwndParent);
|
||||
ShowWindow(_this->m_hwndWait, SW_SHOW);
|
||||
UpdateWindow(_this->m_hwndWait);
|
||||
|
||||
MSG msg;
|
||||
while (GetMessage(&msg, NULL, 0, 0))
|
||||
DispatchMessage(&msg);
|
||||
}
|
||||
|
||||
SetCursor(hOldCursor);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param hwndParent - parent window handle.
|
||||
* @return true if UI thread was successfully launched.
|
||||
*/
|
||||
BOOL CWaitDialog::BeginWait(HWND hwndParent)
|
||||
{
|
||||
_ASSERT(m_hThread == NULL);
|
||||
m_hwndParent = hwndParent;
|
||||
m_hThread = (HANDLE)_beginthreadex(NULL, 0, WaitThreadProc, this, 0, NULL);
|
||||
return (m_hThread != NULL);
|
||||
}
|
||||
|
||||
void CWaitDialog::EndWait(void)
|
||||
{
|
||||
if (m_hThread != NULL)
|
||||
{
|
||||
m_bDone = TRUE;
|
||||
PostMessage(m_hwndWait, WM_CLOSE, 0, 0);
|
||||
WaitForSingleObject(m_hThread, INFINITE);
|
||||
CloseHandle(m_hThread);
|
||||
}
|
||||
InitVars();
|
||||
}
|
||||
|
||||
/** @} */
|
||||
Loading…
Add table
Add a link
Reference in a new issue