214 lines
4.6 KiB
C++
214 lines
4.6 KiB
C++
/*++
|
|
|
|
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);
|
|
}
|
|
}
|
|
|