/*++ Copyright (C) 1997-2001 Microsoft Corporation Module Name: Abstract: History: --*/ // GetTextDlg.cpp : implementation file // #include "stdafx.h" #include "WMITest.h" #include "GetTextDlg.h" #include "ClassDlg.h" #include "QuerySheet.h" #include "QueryColPg.h" #include "ClassPg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CGetTextDlg dialog CGetTextDlg::CGetTextDlg(CWnd* pParent /*=NULL*/) : CDialog(CGetTextDlg::IDD, pParent), m_dwTitleID(0), m_dwPromptID(0), m_dwOptionID(0), m_bEmptyOK(FALSE), m_bAllowClassBrowse(FALSE), m_bAllowQueryBrowse(FALSE), m_pNamespace(NULL) { //{{AFX_DATA_INIT(CGetTextDlg) m_bOptionChecked = FALSE; //}}AFX_DATA_INIT } void CGetTextDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CGetTextDlg) DDX_Control(pDX, IDC_STRINGS, m_ctlStrings); DDX_Check(pDX, IDC_OPTION, m_bOptionChecked); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CGetTextDlg, CDialog) //{{AFX_MSG_MAP(CGetTextDlg) ON_BN_CLICKED(IDOK, OnOk) ON_CBN_EDITCHANGE(IDC_STRINGS, OnEditchangeStrings) ON_BN_CLICKED(IDC_BROWSE, OnBrowse) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CGetTextDlg message handlers void CGetTextDlg::OnOk() { GetDlgItemText(IDC_STRINGS, m_strText); // If we need to save this into the registry, do so. if (!m_strSection.IsEmpty()) { POSITION pos; // See if the item already exists in the list. if ((pos = m_listItems.Find(m_strText)) != NULL) m_listItems.RemoveAt(pos); m_listItems.AddHead(m_strText); SaveListToReg(); } CDialog::OnOK(); } void CGetTextDlg::LoadListViaReg(LPCTSTR szSection, int nItems) { m_listItems.RemoveAll(); m_nItems = nItems; m_strSection = szSection; for (int i = 0; i < nItems; i++) { CString strItem, strTag; strTag.Format(_T("f%d"), i); strItem = theApp.GetProfileString(szSection, strTag, _T("\n")); if (strItem == _T("\n")) break; m_listItems.AddTail(strItem); } } void CGetTextDlg::SaveListToReg() { for (int i = 0; i < m_nItems && m_listItems.GetCount(); i++) { CString strItem, strTag; strTag.Format(_T("f%d"), i); strItem = m_listItems.RemoveHead(); if (m_bEmptyOK || !strItem.IsEmpty()) theApp.WriteProfileString(m_strSection, strTag, strItem); } } void CGetTextDlg::OnEditchangeStrings() { if (!m_bEmptyOK) { GetDlgItemText(IDC_STRINGS, m_strText); GetDlgItem(IDOK)->EnableWindow(!m_strText.IsEmpty()); } } BOOL CGetTextDlg::OnInitDialog() { CDialog::OnInitDialog(); //m_ctlStrings.LimitText(32000); for (POSITION pos = m_listItems.GetHeadPosition(); pos != NULL; m_listItems.GetNext(pos)) { m_ctlStrings.AddString(m_listItems.GetAt(pos)); } // Select the first one. m_ctlStrings.SetCurSel(0); CString strTemp; strTemp.LoadString(m_dwTitleID); SetWindowText(strTemp); strTemp.LoadString(m_dwPromptID); SetDlgItemText(IDS_TEXT_PROMPT, strTemp); if (m_dwOptionID) { strTemp.LoadString(m_dwOptionID); SetDlgItemText(IDC_OPTION, strTemp); GetDlgItem(IDC_OPTION)->ShowWindow(SW_SHOWNORMAL); } if (m_bAllowClassBrowse || m_bAllowQueryBrowse) GetDlgItem(IDC_BROWSE)->ShowWindow(SW_SHOWNORMAL); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CGetTextDlg::OnBrowse() { if (m_bAllowClassBrowse) { CClassDlg dlg; dlg.m_pNamespace = m_pNamespace; if (dlg.DoModal() == IDOK) m_ctlStrings.SetWindowText(dlg.m_strClass); } else if (m_bAllowQueryBrowse) { CQuerySheet sheet(IDS_QUERY_WIZARD, this); CClassPg pgClass; CQueryColPg pgCols; sheet.m_psh.dwFlags &= ~PSH_HASHELP; sheet.m_pNamespace = m_pNamespace; pgClass.m_psp.dwFlags &= ~PSH_HASHELP; pgClass.m_pSheet = &sheet; pgClass.m_strSuperClass = m_strSuperClass; sheet.AddPage(&pgClass); pgCols.m_psp.dwFlags &= ~PSH_HASHELP; pgCols.m_pSheet = &sheet; sheet.AddPage(&pgCols); sheet.SetWizardMode(); if (sheet.DoModal() == ID_WIZFINISH) m_ctlStrings.SetWindowText(sheet.m_strQuery); } }