Главная / Программирование /
Практикум прикладного программирования на MFC и C++ в среде VS.NET / Тест 21
Практикум прикладного программирования на MFC и C++ в среде VS.NET - тест 21
Упражнение 1:
Номер 1
Метод array.Append(source)
класса массивов MFC выполняет:
Ответ:
 (1) копирование source в array 
 (2) присоединение source в конец array 
 (3) управление расмером массива 
Номер 2
Метод array.Copy(source)
класса массивов MFC выполняет:
Ответ:
 (1) копирование source в array 
 (2) присоединение source в конец array 
 (3) управление расмером массива 
Номер 3
Метод array.SetSize(int iNewSize, iGrowBy)
класса массивов MFC выполняет:
Ответ:
 (1) копирование source в array 
 (2) присоединение source в конец array 
 (3) управление расмером массива 
Упражнение 2:
Номер 1
Какая функция, из ниже перечисленных, отключает вкладки?
Ответ:
 (1) BOOL CFindSheet::IsPageDisabled(int iPage)
{
BOOL bFoundEntry = FALSE;
int iSize = (int)m_arrDisabledPages.GetSize();
int i = 0;
while(i < iSize && !bFoundEntry)
if(m_arrDisabledPages.GetAt(i) == (UINT)iPage)
bFoundEntry = TRUE;
else
i++;
return bFoundEntry;
} 
 (2) void CFindSheet::DisablePage(int iFirstPage, ...)
{
int iPage = iFirstPage;
va_list marker;
va_start (marker, iFirstPage);
int nArgs = 0;
while(iPage != -1){
int count = (int)m_arrDisabledPages.GetCount();
bool flag = false;
for(int i = 0; i < count; i++)
if(m_arrDisabledPages.GetAt(i) == (UINT)iPage){
flag = true;
break;
}
if(!flag)
m_arrDisabledPages.Add(iPage);
SetDisabledText(iPage);
iPage = va_arg(marker, UINT);
nArgs++;
ASSERT(nArgs < 100);
}
} 
 (3) void CFindSheet::SetDisabledText(int iPage)
{
CTabCtrl *pTab = GetTabControl();
ASSERT(pTab);
TC_ITEM ti;
char szText[100];
ti.mask = TCIF_TEXT;
ti.pszText = szText;
ti.cchTextMax = 100;
VERIFY(pTab->GetItem(iPage, &ti));
strcat(szText, DISABLED_TEXT);
VERIFY(pTab->SetItem(iPage, &ti));
} 
Номер 2
Какая функция, из ниже перечисленных, маркирует текст заголовков вкладок?
Ответ:
 (1) BOOL CFindSheet::IsPageDisabled(int iPage)
{
BOOL bFoundEntry = FALSE;
int iSize = (int)m_arrDisabledPages.GetSize();
int i = 0;
while(i < iSize && !bFoundEntry)
if(m_arrDisabledPages.GetAt(i) == (UINT)iPage)
bFoundEntry = TRUE;
else
i++;
return bFoundEntry;
} 
 (2) void CFindSheet::DisablePage(int iFirstPage, ...)
{
int iPage = iFirstPage;
va_list marker;
va_start (marker, iFirstPage);
int nArgs = 0;
while(iPage != -1){
int count = (int)m_arrDisabledPages.GetCount();
bool flag = false;
for(int i = 0; i < count; i++)
if(m_arrDisabledPages.GetAt(i) == (UINT)iPage){
flag = true;
break;
}
if(!flag)
m_arrDisabledPages.Add(iPage);
SetDisabledText(iPage);
iPage = va_arg(marker, UINT);
nArgs++;
ASSERT(nArgs < 100);
}
} 
 (3) void CFindSheet::SetDisabledText(int iPage)
{
CTabCtrl *pTab = GetTabControl();
ASSERT(pTab);
TC_ITEM ti;
char szText[100];
ti.mask = TCIF_TEXT;
ti.pszText = szText;
ti.cchTextMax = 100;
VERIFY(pTab->GetItem(iPage, &ti));
strcat(szText, DISABLED_TEXT);
VERIFY(pTab->SetItem(iPage, &ti));
} 
Номер 3
Какая функция, из ниже перечисленных, отключает возможность выбора пользователем заблокированной вкладки?
Ответ:
 (1) BOOL CFindSheet::IsPageDisabled(int iPage)
{
BOOL bFoundEntry = FALSE;
int iSize = (int)m_arrDisabledPages.GetSize();
int i = 0;
while(i < iSize && !bFoundEntry)
if(m_arrDisabledPages.GetAt(i) == (UINT)iPage)
bFoundEntry = TRUE;
else
i++;
return bFoundEntry;
} 
 (2) void CFindSheet::DisablePage(int iFirstPage, ...)
{
int iPage = iFirstPage;
va_list marker;
va_start (marker, iFirstPage);
int nArgs = 0;
while(iPage != -1){
int count = (int)m_arrDisabledPages.GetCount();
bool flag = false;
for(int i = 0; i < count; i++)
if(m_arrDisabledPages.GetAt(i) == (UINT)iPage){
flag = true;
break;
}
if(!flag)
m_arrDisabledPages.Add(iPage);
SetDisabledText(iPage);
iPage = va_arg(marker, UINT);
nArgs++;
ASSERT(nArgs < 100);
}
} 
 (3) void CFindSheet::SetDisabledText(int iPage)
{
CTabCtrl *pTab = GetTabControl();
ASSERT(pTab);
TC_ITEM ti;
char szText[100];
ti.mask = TCIF_TEXT;
ti.pszText = szText;
ti.cchTextMax = 100;
VERIFY(pTab->GetItem(iPage, &ti));
strcat(szText, DISABLED_TEXT);
VERIFY(pTab->SetItem(iPage, &ti));
} 
Упражнение 3:
Номер 1
Какой метод класса массива MFC возвращает элемент массива по его индексу?
Ответ:
 (1) array.GetAt(int index)
 
 (2) array.SetAt(int index, element)
 
 (3) array.InsertAt(int index, element)
 
Номер 2
Какой метод класса массива MFC добавляет новый элемент в конец массива?
Ответ:
 (1) array.Add(element)
 
 (2) array.RemoveAt(int index, int count=1)
 
 (3) array.RemoveAll()
 
Номер 3
Какой метод класса массива MFC возвращает количество элементов массива?
Ответ:
 (1) array.GetSize()
 
 (2) array.GetCount()
 
 (3) array.GetUpperBound()
 
Упражнение 4:
Номер 1
Какие классы, из ниже перечисленных, принадлежат классам массивов?
Ответ:
 (1) CArray
 
 (2) AddRef
 
 (3) CDWordArray
 
 (4) Refresh
 
 (5) CPtArray
 
Номер 2
Какие классы, из ниже перечисленных, не принадлежат классам массивов?
Ответ:
 (1) CArray
 
 (2) CButton
 
 (3) CDWordArray
 
 (4) CLabel
 
 (5) CPtArray
 
 (6) CPanel
 
Номер 3
Какие классы, из ниже перечисленных, принадлежат классам массивов?
Ответ:
 (1) String
 
 (2) Int
 
 (3) CStringArray
 
 (4) CUIntArray
 
 (5) Array
 
Упражнение 5:
Номер 1
Каким образом, из перечисленных ниже, можно скрыть стандартные кнопки из MFC?
Ответ:
 (1) необходимо для кнопок создать переопределенную функцию OnInitDialog()
, которая будет выглядеть следующим образом:
BOOL CFindSheet::OnInitDialog()
{
BOOL bResult = CPropertySheet::OnInitDialog();
int ids[] = { IDCANCEL, ID_APPLY_NOW };
int len = sizeof(ids) / sizeof(ids[0]);
for(int i = 0; i < len; i++){
CWnd *pWnd = GetDlgItem(ids[i]);
ASSERT(pWnd);
if(pWnd)
pWnd->ShowWindow(FALSE);
}
...
rectBtnOk.top = rectPage.top;
rectBtnOk.bottom = rectPage.top + cyOk;
rectBtnOk.left = rectSheet.right - (cxOk + iBorder);
rectBtnOk.right = rectBtnOk.left + cxOk;
ScreenToClient(rectBtnOk);
pBtnOk->MoveWindow(rectBtnOk);
return bResult;
}
где IDCANCEL
, ID_APPLY_NOW
- идентификаторы кнопок 
 (2) необходимо для кнопок установить свойство Visible
= true
; 
 (3) необходимо для кнопок создать переопределенную функцию OnInitDialog()
, которая будет выглядеть следующим образом:
BOOL CFindSheet::OnInitDialog()
BOOL bResult = CPropertySheet::OnInitDialog();
int ids[] = { IDCANCEL, ID_APPLY_NOW };
int len = sizeof(ids) / sizeof(ids[0]);
for(int i = 0; i < len; i++){
CWnd *pWnd = GetDlgItem(ids[i]);
ASSERT(pWnd);
if(pWnd)
pWnd->ShowWindow(FALSE);
}
return bResult;
}
где IDCANCEL
, ID_APPLY_NOW
- идентификаторы кнопок 
Номер 2
Каким образом, из перечисленных ниже, можно переместить стандартные кнопки из MFC?
Ответ:
 (1) необходимо для кнопок создать переопределенную функцию OnInitDialog()
, которая будет выглядеть следующим образом:
BOOL CFindSheet::OnInitDialog()
{
BOOL bResult = CPropertySheet::OnInitDialog();
int ids[] = { IDCANCEL, ID_APPLY_NOW };
int len = sizeof(ids) / sizeof(ids[0]);
for(int i = 0; i < len; i++){
CWnd *pWnd = GetDlgItem(ids[i]);
ASSERT(pWnd);
if(pWnd)
pWnd->ShowWindow(FALSE);
}
...
rectBtnOk.top = rectPage.top;
rectBtnOk.bottom = rectPage.top + cyOk;
rectBtnOk.left = rectSheet.right - (cxOk + iBorder);
rectBtnOk.right = rectBtnOk.left + cxOk;
ScreenToClient(rectBtnOk);
pBtnOk->MoveWindow(rectBtnOk);
return bResult;
}
где IDCANCEL
, ID_APPLY_NOW
- идентификаторы кнопок 
 (2) необходимо для кнопок установить свойство Move
= true
; 
 (3) необходимо для кнопок создать переопределенную функцию OnInitDialog()
, которая будет выглядеть следующим образом:
BOOL CFindSheet::OnInitDialog()
BOOL bResult = CPropertySheet::OnInitDialog();
int ids[] = { IDCANCEL, ID_APPLY_NOW };
int len = sizeof(ids) / sizeof(ids[0]);
for(int i = 0; i < len; i++){
CWnd *pWnd = GetDlgItem(ids[i]);
ASSERT(pWnd);
if(pWnd)
pWnd->ShowWindow(FALSE);
}
return bResult;
}
где IDCANCEL
, ID_APPLY_NOW
- идентификаторы кнопок 
Номер 3
Каким образом, из перечисленных ниже, можно изменить надписи стандартных кнопок из MFC?
Ответ:
 (1) необходимо для кнопок создать переопределенную функцию OnInitDialog()
, которая будет выглядеть следующим образом:
BOOL CFindSheet::OnInitDialog()
{
BOOL bResult = CPropertySheet::OnInitDialog();
int ids[] = { IDCANCEL, ID_APPLY_NOW };
int len = sizeof(ids) / sizeof(ids[0]);
for(int i = 0; i < len; i++){
CWnd *pWnd = GetDlgItem(ids[i]);
ASSERT(pWnd);
if(pWnd)
pWnd->ShowWindow(FALSE);
}
.............................
rectBtnOk.top = rectPage.top;
rectBtnOk.bottom = rectPage.top + cyOk;
rectBtnOk.left = rectSheet.right - (cxOk + iBorder);
rectBtnOk.right = rectBtnOk.left + cxOk;
ScreenToClient(rectBtnOk);
pBtnOk->MoveWindow(rectBtnOk);
return bResult;
}
где IDCANCEL
, ID_APPLY_NOW
- идентификаторы кнопок 
 (2) необходимо для кнопок создать переопределенную функцию OnInitDialog()
, которая будет выглядеть следующим образом:
BOOL CFindSheet::OnInitDialog()
...........................................
ScreenToClient(rectBtnOk);
pBtnOk->MoveWindow(rectBtnOk);
pBtnOk->SetWindowText(_T("Close"));
return bResult;
} 
 (3) необходимо для кнопок создать переопределенную функцию OnInitDialog()
, которая будет выглядеть следующим образом:
BOOL CFindSheet::OnInitDialog()
BOOL bResult = CPropertySheet::OnInitDialog();
int ids[] = { IDCANCEL, ID_APPLY_NOW };
int len = sizeof(ids) / sizeof(ids[0]);
for(int i = 0; i < len; i++){
CWnd *pWnd = GetDlgItem(ids[i]);
ASSERT(pWnd);
if(pWnd)
pWnd->ShowWindow(FALSE);
}
return bResult;
}
где IDCANCEL
, ID_APPLY_NOW
- идентификаторы кнопок 
Упражнение 6:
Номер 1
Для заготовки проекта типа lib в окне мастера Win32 Application Wizard
нужно выбрать:
Ответ:
 (1) Additional options: Empty project
 
 (2) Add support for: ATL
 
 (3) Application type: Static library
 
Номер 2
Для заготовки проекта типа lib в окне мастера MFC Application Wizard
нужно выбрать:
Ответ:
 (1) Application type: Single document
 
 (2) Use of MFC: Use MFC in a static library
 
 (3) Use of MFC: Use MFC in a shared DLL
 
Номер 3
Для заготовки проекта типа dll в окне мастера MFC Application Wizard
нужно выбрать:
Ответ:
 (1) Application type: Single document
 
 (2) Use of MFC: Use MFC in a static library
 
 (3) Use of MFC: Use MFC in a shared DLL
 
Упражнение 7:
Номер 1
Функция Navigate (LPCTSTR URL)
класса CHtmlView
выполняет:
Ответ:
 (1) направление пользователя на страницу поиска по Internet 
 (2) возвращает URL текущей просматриваемой браузером Web-страницы 
 (3) направление пользователя на страницу в Internet с указанным адресом URL 
Номер 2
Функция GetBusy()
класса CHtmlView
выполняет:
Ответ:
 (1) остановку текущего процесса загрузки 
 (2) возвращение URL текущей просматриваемой браузером Web-страницы 
 (3) возвращение логического значения, информирующее, занят ли в данный момент браузер загрузкой Web-страницы 
Номер 3
Функция Refresh()
класса CHtmlView
выполняет:
Ответ:
 (1) заставляет браузер перезагрузить текущую Web-страницу 
 (2) направление пользователя на страницу поиска по Internet 
 (3) остановку текущего процесса загрузки 
Упражнение 8:
Номер 1
Для адресации к документам в информационном гиперпростве Internet служит:
Ответ:
 (1) панель управления 
 (2) унифицированный указатель ресурса 
 (3) строка для ввода адреса 
Номер 2
Гибридом панели инструментов и диалогового окна является:
Ответ:
 (1) панель управления 
 (2) унифицированный указатель ресурса 
 (3) строка для ввода адреса 
Номер 3
Вынесение части программного кода в самостоятельные модули - полуфабрикаты называется:
Ответ:
 (1) объектным программированием 
 (2) модульным программированием 
 (3) абстрактным программированием 
Упражнение 9:
Номер 1
void CMainFrame::OnNewAddress(void)
{
CString strAddress;
m_wndDlgBar.GetDlgItem(IDC_EADDRESS)->GetWindowText(strAddress);
((CWebBrowseView*)GetActiveView())->Navigate(strAddress);
} Приведенная функция, выполняет:
Ответ:
 (1) передачу адреса URL 
 (2) прием адреса URL 
 (3) устанавливает текущий адрес URL 
Номер 2
void CWebBrowseView::OnDocumentComplete(LPCTSTR lpszURL)
{
(CMainFrame*)GetParentFrame())->SetAddress(lpszURL);
CHtmlView::OnDocumentComplete(lpszURL);
} Приведенная функция, выполняет:
Ответ:
 (1) передачу текущего URL в класс фрейма для вывода в поле адреса 
 (2) прием адреса URL из класса фрейма для ввода в поле адреса 
 (3) устанавливает текущий адрес URL 
Номер 3
void CMainFrame::SetAddress(LPCTSTR lpszURL)
{
(m_wndDlgBar.GetDlgItem(IDC_EADDRESS))->SetWindowText(lpszURL);
} Приведенная функция, выполняет:
Ответ:
 (1) передачу адреса URL 
 (2) cмену значения URL после загрузки новой страницы 
 (3) передачу текущего URL в класс фрейма для вывода в поле адреса 
Упражнение 10:
Номер 1
Обработчик команды переход на следующую страницу назад в браузере будет иметь следующий код:
Ответ:
 (1) void CWebBrowseView::OnNavigateHome()
{
GoHome();
} 
 (2) void CWebBrowseView::OnNavigateNext()
{
GoForward();
} 
 (3) void CWebBrowseView::OnNavigateBack()
{
GoBack();
} 
Номер 2
Обработчик команды переход на следующую страницу вперед в браузере будет иметь следующий код:
Ответ:
 (1) void CWebBrowseView::OnNavigateHome()
{
GoHome();
} 
 (2) void CWebBrowseView::OnNavigateNext()
{
GoForward();
} 
 (3) void CWebBrowseView::OnNavigateBack()
{
GoBack();
} 
Номер 3
Обработчик команды переход на начальную страницу будет иметь следующий код:
Ответ:
 (1) void CWebBrowseView::OnNavigateHome()
{
GoHome();
} 
 (2) void CWebBrowseView::OnNavigateNext()
{
GoForward();
} 
 (3) void CWebBrowseView::OnNavigateBack()
{
GoBack();
} 
Упражнение 11:
Номер 1
Какая функция класса CHtmlView
направляет пользователя на предыдущую Web-страницу?
Ответ:
 (1) GoForward()
 
 (2) GoBack()
 
 (3) GoHome()
 
Номер 2
Какая функция класса CHtmlView
направляет пользователя на последующую Web-страницу?
Ответ:
 (1) GoForward()
 
 (2) GoBack()
 
 (3) GoHome()
 
Номер 3
Какая функция класса CHtmlView
направляет пользователя на начальную страницу браузера?
Ответ:
 (1) GoForward()
 
 (2) GoBack()
 
 (3) GoHome()
 
Упражнение 12:
Номер 1
Какой класс, из ниже перечисленных, позволяет создавать однодокументные или многодокументные приложения с возможностью просмотра HTML-документов?
Ответ:
 (1) CHtmlView
 
 (2) CWebBrowseView
 
 (3) CDialogBar
 
Номер 2
Какие классы используют для работы с GDI-объектами?
Ответ:
 (1) WM_PAINT
 
 (2) CBitmap
 
 (3) CFont
 
 (4) CClientDC
 
 (5) CRGN
 
Номер 3
Какие классы используют для работы со списками?
Ответ:
 (1) WM_PAINT
 
 (2) CObList
 
 (3) CFont
 
 (4) CClientDC
 
 (5) CStringList