/*++ Copyright (C) 1998-1999 Microsoft Corporation Module Name: newqdlg.cpp Abstract: Implementation of the new log/alert creation dialog box. --*/ #include "stdafx.h" #include "smlogcfg.h" #include "smcfghlp.h" #include "NewQDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif USE_HANDLE_MACROS("SMLOGCFG(newqdlg.cpp)"); static ULONG s_aulHelpIds[] = { IDC_NEWQ_NAME_EDIT, IDH_NEWQ_NAME_EDIT, 0,0 }; ///////////////////////////////////////////////////////////////////////////// // CNewQueryDlg dialog void CNewQueryDlg::InitAfxData () { //{{AFX_DATA_INIT(CNewQueryDlg) m_strName = L""; //}}AFX_DATA_INIT } CNewQueryDlg::CNewQueryDlg(CWnd* pParent /*=NULL*/, BOOL bLogQuery) : CDialog(CNewQueryDlg::IDD, pParent) { EnableAutomation(); InitAfxData (); m_bLogQuery = bLogQuery; } void CNewQueryDlg::OnFinalRelease() { // When the last reference for an automation object is released // OnFinalRelease is called. The base class will automatically // deletes the object. Add additional cleanup required for your // object before calling the base class. CDialog::OnFinalRelease(); } void CNewQueryDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CNewQueryDlg) DDX_Text(pDX, IDC_NEWQ_NAME_EDIT, m_strName); DDV_MaxChars(pDX, m_strName, (SLQ_MAX_LOG_NAME_LEN)); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CNewQueryDlg, CDialog) //{{AFX_MSG_MAP(CNewQueryDlg) ON_WM_HELPINFO() ON_WM_CONTEXTMENU() //}}AFX_MSG_MAP END_MESSAGE_MAP() BEGIN_DISPATCH_MAP(CNewQueryDlg, CDialog) //{{AFX_DISPATCH_MAP(CNewQueryDlg) // NOTE - the ClassWizard will add and remove mapping macros here. //}}AFX_DISPATCH_MAP END_DISPATCH_MAP() // Note: we add support for IID_INewQueryDlg to support typesafe binding // from VBA. This IID must match the GUID that is attached to the // dispinterface in the .ODL file. // {4D4C90C3-C5A3-11D1-BF9B-00C04F94A83A} static const IID IID_INewQueryDlg = { 0x4d4c90c3, 0xc5a3, 0x11d1, { 0xbf, 0x9b, 0x0, 0xc0, 0x4f, 0x94, 0xa8, 0x3a } }; BEGIN_INTERFACE_MAP(CNewQueryDlg, CDialog) INTERFACE_PART(CNewQueryDlg, IID_INewQueryDlg, Dispatch) END_INTERFACE_MAP() ///////////////////////////////////////////////////////////////////////////// // CNewQueryDlg message handlers BOOL CNewQueryDlg::OnInitDialog() { CDialog::OnInitDialog(); ResourceStateManager rsm; if (!m_bLogQuery) { CString csCaption; csCaption.LoadString (IDS_CREATE_NEW_ALERT); SetWindowText (csCaption); } // set the focus to the name edit GetDlgItem(IDC_NEWQ_NAME_EDIT)->SetFocus(); SendDlgItemMessage(IDC_NEWQ_NAME_EDIT,EM_SETSEL,0,-1); return FALSE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CNewQueryDlg::OnOK() { INT iPrevLength = 0; ResourceStateManager rsm; if ( UpdateData (TRUE) ) { iPrevLength = m_strName.GetLength(); m_strName.TrimLeft(); m_strName.TrimRight(); if ( iPrevLength != m_strName.GetLength() ) { SetDlgItemText ( IDC_NEWQ_NAME_EDIT, m_strName ); } if (m_strName.GetLength() == 0) { // need a name MessageBeep(MB_ICONEXCLAMATION); (GetDlgItem(IDC_NEWQ_NAME_EDIT))->SetFocus(); } else { if ( !FileNameIsValid ( &m_strName ) ) { CString cstrTitle,cstrMsg; cstrTitle.LoadString(IDS_PROJNAME); cstrMsg.LoadString (IDS_ERRMSG_INVALIDCHAR); MessageBox( cstrMsg, cstrTitle, MB_OK| MB_ICONERROR); (GetDlgItem(IDC_NEWQ_NAME_EDIT))->SetFocus(); } else { CDialog::OnOK(); } } } } BOOL CNewQueryDlg::OnHelpInfo(HELPINFO* pHelpInfo) { if ( pHelpInfo->iCtrlId >= IDC_NEWQ_FIRST_HELP_CTRL_ID || pHelpInfo->iCtrlId == IDOK || pHelpInfo->iCtrlId == IDCANCEL ) { InvokeWinHelp(WM_HELP, NULL, (LPARAM)pHelpInfo, m_strHelpFilePath, s_aulHelpIds); } return TRUE; } void CNewQueryDlg::OnContextMenu(CWnd* pWnd, CPoint /* point */) { InvokeWinHelp(WM_CONTEXTMENU, (WPARAM)(pWnd->m_hWnd), NULL, m_strHelpFilePath, s_aulHelpIds); return; } DWORD CNewQueryDlg::SetContextHelpFilePath( const CString& rstrPath ) { DWORD dwStatus = ERROR_SUCCESS; MFC_TRY m_strHelpFilePath = rstrPath; MFC_CATCH_DWSTATUS return dwStatus; }