На этом шаге мы рассмотрим инициализацию окна Query Dialog.
- Инициализация окна Query Dialog.
- Сначала нужно предоставить функции CQueryDialog::OnInitDialog() доступ к диалоговому окну
Select Fund. Откройте файл Mainfrm.h и добавьте в открытый раздел класса
CMainFrame следующую inline-функцию:const CFundDialog * GetFundDialog() {return &m_wndFundDialog;}
Рис.1. Добавление функции GetFundDialog() - В самом начале файла QueryDialog.cpp добавьте такие строки:
#include "Mainfrm.h" #include "STUploadDoc.h" #include "FundDialog.h"
- Средствами мастера ClassWizard создайте функцию CQueryDialog::OnInitDialog() для обработки
сообщения WM_INITDIALOG в классе CQueryDialog. В сгенерированной функции замените строку с
комментарием //TODO следующим кодом:CMainFrame * pWnd = dynamic_cast< CMainFrame * > (AfxGetApp()->m_pMainWnd); ASSERT_VALID( pWnd ); CSTUploadDoc * pDoc = dynamic_cast< CSTUploadDoc * >( pWnd->GetActiveDocument() ); ASSERT_VALID( pDoc ); const CFundDialog * pFD = pWnd->GetFundDialog(); ASSERT_VALID( pFD ); // Размещаем перечень бумаг в поле со списком for( int n = 0; n < pFD->m_listBox.GetCount(); n++ ) { CString strBuf; pFD->m_listBox.GetText( n, strBuf ); m_dtFund.AddString( strBuf ); } // Выбираем в списке параметтр strCurrentFund int iPos = m_dtFund.FindStringExact( -1, pDoc->GetCurrentFund() ); m_dtFund.SetCurSel( iPos ); // Устанавливаем значения Date Time Pickers m_dtFrom.SetFormat( "d MMM yyy" ); m_dtTo.SetFormat( "d MMM yyy" );
Вам придется перегрузить функцию ОnОК() класса CQueryDialog, чтобы она получала информацию о
выбранной ценной бумаге.
- Создание функции CQueryDialog::ОnОК()
- Откройте файл QueryDialog.h и добавьте следующую открытую переменную-член класса CQueryDialog:
CString m_strFund;
- Средствами ClassWizard создайте функцию ОnОК(), обрабатывающую сообщение BN_CLICKED для
объекта с идентификатором IDOK. Замените строку с комментарием //TODO таким кодом:int nChoice = m_dtFund.GetCurSel(); if(nChoice >= 0) m_dtFund.GetLBText(nChoice, m_strFund);
Текст измененного приложения можно взять здесь (71,5 Кб).
На следующем шаге мы рассмотрим создание диалогового окна Query Results.