#include "isignup.h" #ifndef MB_ICONERROR #define MB_ICONERROR MB_ICONHAND #endif #ifndef MB_SETFOREGROUND #define MB_SETFOREGROUND 0 #endif #define MAX_STRING 256 static const HWND hwndNil = NULL; BOOL WarningMsg(HWND hwnd, UINT uId) { TCHAR szMsg[MAX_STRING + 1]; LoadString( ghInstance, uId, szMsg, SIZEOF_TCHAR_BUFFER(szMsg)); return (MessageBox( hwnd, szMsg, cszAppName, MB_SETFOREGROUND | MB_ICONEXCLAMATION | MB_OKCANCEL) == IDOK); } void ErrorMsg(HWND hwnd, UINT uId) { TCHAR szMsg[MAX_STRING + 1]; LoadString( ghInstance, uId, szMsg, SIZEOF_TCHAR_BUFFER(szMsg)); MessageBox( hwnd, szMsg, cszAppName, MB_SETFOREGROUND | MB_ICONERROR | MB_OK); } void ErrorMsg1(HWND hwnd, UINT uId, LPCTSTR lpszArg) { TCHAR szTemp[MAX_STRING + 1]; TCHAR szMsg[MAX_STRING + 1]; LoadString( ghInstance, uId, szTemp, SIZEOF_TCHAR_BUFFER(szTemp)); wsprintf(szMsg, szTemp, lpszArg); MessageBox( hwnd, szMsg, cszAppName, MB_SETFOREGROUND | MB_ICONERROR | MB_OK); } void InfoMsg(HWND hwnd, UINT uId) { TCHAR szMsg[MAX_STRING]; LoadString( ghInstance, uId, szMsg, SIZEOF_TCHAR_BUFFER(szMsg)); MessageBox( hwnd, szMsg, cszAppName, MB_SETFOREGROUND | MB_ICONINFORMATION | MB_OK); } int PromptR(HWND hwnd, UINT uId, UINT uType) { TCHAR szMsg[MAX_STRING + 1]; TCHAR szCaption[MAX_STRING + 1]; LoadString( ghInstance, uId, szMsg, SIZEOF_TCHAR_BUFFER(szMsg)); LoadString( ghInstance, IDS_SETTINGCHANGE, szCaption, SIZEOF_TCHAR_BUFFER(szCaption)); return MessageBox( hwnd, szMsg, szCaption, uType); } BOOL PromptRestart(HWND hwnd) { return (PromptR( hwnd, IDS_RESTART, MB_SETFOREGROUND | MB_ICONQUESTION | MB_YESNO) == IDYES); } BOOL PromptRestartNow(HWND hwnd) { return (PromptR( hwnd, IDS_RESTARTNOW, MB_SETFOREGROUND | MB_ICONINFORMATION | MB_OKCANCEL) == IDOK); } /* C E N T E R W I N D O W */ /*------------------------------------------------------------------------- %%Function: CenterWindow Center a window over another window. -------------------------------------------------------------------------*/ VOID CenterWindow(HWND hwndChild, HWND hwndParent) { int xNew, yNew; int cxChild, cyChild; int cxParent, cyParent; int cxScreen, cyScreen; RECT rcChild, rcParent; HDC hdc; // Get the Height and Width of the child window GetWindowRect(hwndChild, &rcChild); cxChild = rcChild.right - rcChild.left; cyChild = rcChild.bottom - rcChild.top; // Get the Height and Width of the parent window GetWindowRect(hwndParent, &rcParent); cxParent = rcParent.right - rcParent.left; cyParent = rcParent.bottom - rcParent.top; // Get the display limits hdc = GetDC(hwndChild); if (hdc == NULL) { // major problems - move window to 0,0 xNew = yNew = 0; } else { cxScreen = GetDeviceCaps(hdc, HORZRES); cyScreen = GetDeviceCaps(hdc, VERTRES); ReleaseDC(hwndChild, hdc); if (hwndParent == hwndNil) { cxParent = cxScreen; cyParent = cyScreen; SetRect(&rcParent, 0, 0, cxScreen, cyScreen); } // Calculate new X position, then adjust for screen xNew = rcParent.left + ((cxParent - cxChild) / 2); if (xNew < 0) { xNew = 0; } else if ((xNew + cxChild) > cxScreen) { xNew = cxScreen - cxChild; } // Calculate new Y position, then adjust for screen yNew = rcParent.top + ((cyParent - cyChild) / 2); if (yNew < 0) { yNew = 0; } else if ((yNew + cyChild) > cyScreen) { yNew = cyScreen - cyChild; } } SetWindowPos(hwndChild, NULL, xNew, yNew, 0, 0, SWP_NOSIZE | SWP_NOZORDER); }