Приложение STUpload: инициализация окна Query Dialog

   
На этом шаге мы рассмотрим инициализацию окна 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.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий