Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

113 lines
2.3 KiB

#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);
}