// columdlg.cpp : implementation file // // This is a part of the Microsoft Foundation Classes C++ library. // Copyright (C) 1992-1998 Microsoft Corporation // All rights reserved. // // This source code is only intended as a supplement to the // Microsoft Foundation Classes Reference and related // electronic documentation provided with the library. // See these sources for detailed information regarding the // Microsoft Foundation Classes product. #include "stdafx.h" #include "stdreg.h" #include "columdlg.h" #include "resource.h" #include "typeinfo.h" #ifdef _DEBUG #undef THIS_FILE static char BASED_CODE THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CColSyntaxDlg dialog CColSyntaxDlg::CColSyntaxDlg(CWnd* pParent /*=NULL*/) : CDialog(CColSyntaxDlg::IDD, pParent) { //{{AFX_DATA_INIT(CColSyntaxDlg) m_strSyntax = ""; m_strListBoxInstruction = ""; m_strColTypeInstruction = ""; //}}AFX_DATA_INIT } BOOL CColSyntaxDlg::OnInitDialog() { CDialog::OnInitDialog(); m_posMapSQLTypeToSyntax = m_pMapSQLTypeToSyntax->GetStartPosition(); GetNextSQLTypeAndUpdateControls(); return TRUE; } void CColSyntaxDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CColSyntaxDlg) DDX_Control(pDX, IDOK, m_ctlOK); DDX_Control(pDX, IDC_TYPE_INFO_LIST, m_ctlTypeInfoList); DDX_Text(pDX, IDC_SYNTAX, m_strSyntax); DDX_Text(pDX, IDC_LIST_BOX_INSTRUCTION, m_strListBoxInstruction); DDX_Text(pDX, IDC_COL_TYPE_INSTRUCTION, m_strColTypeInstruction); //}}AFX_DATA_MAP } void CColSyntaxDlg::GetNextSQLTypeAndUpdateControls() { ASSERT(m_pMapSQLTypeToSyntax != NULL); m_pMapSQLTypeToSyntax->GetNextAssoc(m_posMapSQLTypeToSyntax, m_swCurrentSQLType, m_strSyntax); CString strWindowText; strWindowText.LoadString(m_posMapSQLTypeToSyntax == NULL? IDS_OK : IDS_NEXT); m_ctlOK.SetWindowText(strWindowText); int nInstructionIDS, nExampleIDS, nSQLTypeIDS; switch (m_swCurrentSQLType) { case SQL_VARCHAR: nInstructionIDS = IDS_VARCHAR_INSTRUCTION; nExampleIDS =IDS_VARCHAR_EXAMPLE; nSQLTypeIDS = IDS_VARCHAR; break; case SQL_INTEGER: nInstructionIDS = IDS_INTEGER_INSTRUCTION; nExampleIDS =IDS_INTEGER_EXAMPLE; nSQLTypeIDS = IDS_INTEGER; break; case SQL_SMALLINT: nInstructionIDS = IDS_SMALLINT_INSTRUCTION; nExampleIDS =IDS_SMALLINT_EXAMPLE; nSQLTypeIDS = IDS_SMALLINT; break; } m_strColTypeInstruction.LoadString(IDS_COL_TYPE_INSTRUCTION); m_strColTypeInstruction += "\n\n"; CString strInstructionPart2; strInstructionPart2.LoadString(nInstructionIDS); m_strColTypeInstruction += strInstructionPart2; m_strColTypeInstruction += "\n\n"; strInstructionPart2.LoadString(nExampleIDS); m_strColTypeInstruction += strInstructionPart2; CString strListBoxInstruction; strListBoxInstruction.LoadString(IDS_TYPE_INFO_LISTBOX_INSTRUCTION); CString strSQLType; strSQLType.LoadString(nSQLTypeIDS); m_strListBoxInstruction.Format(strListBoxInstruction,strSQLType); // Update the m_strSyntax field as well as the instructions in the static controls. UpdateData(FALSE); FillTypeInfoListbox(); } void CColSyntaxDlg::FillTypeInfoListbox() { CTypeInfo typeInfo(&((CStdRegSetupApp*)AfxGetApp())->m_db); typeInfo.m_fSqlTypeParam = m_swCurrentSQLType; if (!typeInfo.Open(CRecordset::forwardOnly, NULL, CRecordset::readOnly)) return; m_ctlTypeInfoList.ResetContent(); CString strTypeInfo; while (!typeInfo.IsEOF()) { strTypeInfo = typeInfo.m_strTypeName; if (!typeInfo.m_strCreateParams.IsEmpty()) { strTypeInfo += '('; strTypeInfo += typeInfo.m_strCreateParams; strTypeInfo += ')'; } m_ctlTypeInfoList.AddString(strTypeInfo); typeInfo.MoveNext(); } typeInfo.Close(); } BEGIN_MESSAGE_MAP(CColSyntaxDlg, CDialog) //{{AFX_MSG_MAP(CColSyntaxDlg) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CColSyntaxDlg message handlers void CColSyntaxDlg::OnOK() { if (!UpdateData()) return; m_pMapSQLTypeToSyntax->SetAt(m_swCurrentSQLType, m_strSyntax); if (m_posMapSQLTypeToSyntax == NULL) { EndDialog(IDOK); return; } GetNextSQLTypeAndUpdateControls(); }