#include "precomp.h" #include "resource.h" #include "confwnd.h" #include "confapi.h" #include "ConfUtil.h" HWND GetMsgBoxParent(void) { return (_Module.IsUIVisible() ? ::GetMainWindow() : HWND_DESKTOP ); } VOID PostConfMsgBox(UINT uStringID) { ::PostMessage(::GetHiddenWindow(), WM_CONF_MSG_BOX, uStringID, 0); } static const UINT MAX_CONFMSGBOX_STRING = 1024; int ConfMsgBox(HWND hwndParent, LPCTSTR pcszMsg, UINT uType) { if(_Module.InitControlMode()) { // Return a reasonable value // TODO: Look at MB_DEFBUTTON1 switch (uType & 0x0F) { case MB_YESNOCANCEL: case MB_YESNO: return IDYES; case MB_OK: case MB_OKCANCEL: default: return IDOK; } } TCHAR szTitleBuf[MAX_PATH]; TCHAR szMsgBuf[MAX_CONFMSGBOX_STRING]; LPTSTR pszTrueMsg = (LPTSTR) pcszMsg; if (0 == HIWORD(pcszMsg)) { // The string pointer is actually a resource id: if (::LoadString( ::GetInstanceHandle(), PtrToUint(pcszMsg), szMsgBuf, CCHMAX(szMsgBuf))) { pszTrueMsg = szMsgBuf; } else { pszTrueMsg = NULL; } } // The string pointer is actually a resource id: ::LoadString( ::GetInstanceHandle(), IDS_MSGBOX_TITLE, szTitleBuf, CCHMAX(szTitleBuf)); ASSERT(pszTrueMsg); return ::MessageBox(hwndParent, pszTrueMsg, szTitleBuf, uType); } VOID DisplayMsgIdsParam(int ids, LPCTSTR pcsz) { if (!_Module.InitControlMode()) { TCHAR szFormat[MAX_CONFMSGBOX_STRING]; int nLength = ::LoadString(::GetInstanceHandle(), ids, szFormat, CCHMAX(szFormat)); ASSERT(0 != nLength); LPTSTR pszMsg = new TCHAR[nLength + (FEmptySz(pcsz) ? 1 : lstrlen(pcsz))]; if (NULL == pszMsg) { ERROR_OUT(("DisplayMsgIdsParam - out of memory")); return; } // Format the message wsprintf(pszMsg, szFormat, pcsz); if (!::PostMessage(::GetHiddenWindow(), WM_NM_DISPLAY_MSG, (WPARAM) MB_ICONINFORMATION | MB_SETFOREGROUND | MB_OK, (LPARAM) pszMsg)) { delete pszMsg; ERROR_OUT(("DisplayMsgIdsParam - out of memory")); } } } int DisplayMsg(LPTSTR pszMsg, UINT uType) { TCHAR szTitle[MAX_PATH]; FLoadString(IDS_MSGBOX_TITLE, szTitle, CCHMAX(szTitle)); int id = ::MessageBox(GetMsgBoxParent(), pszMsg, szTitle, uType); delete pszMsg; return id; } VOID DisplayErrMsg(INT_PTR ids) { ConfMsgBox(::GetMainWindow(), (LPCTSTR) ids, MB_OK | MB_SETFOREGROUND | MB_ICONERROR); }