|
Программирование >> Перегруженные имена функций и идентификаторы
просмотр rset->MoveFirst(); while (!rset->ADOEOF) { char buf[1024]; sprintf(buf, °/os °/os °/os: °/os - °/os\n , (LPCTSTR) bstr t(flds->Item[L Фaмилия ]->Value), (LPCTSTR) bstr t(flds->Item[L Имя ]->Value), (LPCTSTR) bstr t(flds->Item[L Отчество ]->Value), (bool)flds->Item[L Голосовaл ли ]->Value? Да : Нет , (LPCTSTR) bstr t(flds->Item[L Зa кого проголосовал ] ->Value)); CharToOem(buf,buf); printf(buf); rset->MoveNext(); } catch ( com error& er) { char buf[1024]; sprintf(buf, com error:\n Error : /08lX\n ErrorMessage: /s\n Description : /s\n Source : /s\n , er.Error(), (LPCTSTR) bstr t(er.ErrorMessage()), (LPCTSTR) bstr t(er.Description()), (LPCTSTR) bstr t(er.Source())); CharToOem(buf,buf); только для консольных приложений printf(buf); ::CoUninitialize(); AciveX Control Для этого примера нам понадобится любое оконное приложение. ActiveX Controlы вставляются в диалог обычно через Components and Controls Gallery: Menu О Project О Add To Project О Components and Controls-Registered ActiveX Controls. Нам в качестве примера вполне подойдёт Microsoft FlexGrid Control. Нажмите кнопку Insert для добавления его в проект, в появившемся окне Confirm Classes оставьте галочку только возле элемента CMSFlexGrid и смело жмите OK. В результате будут сформированы два файла msflexgrid.h и msflexgrid.cpp, большую часть содержимого которых нам придётся удалить. После всех изменений эти файлы будут иметь следующий вид: msflexgrid.h msflexgrid.h #ifndef MSFLEXGRID H #define MSFLEXGRID H #if MSC VER > 1000 #pragma once #endif MSC VER > 1000 #pragma warning(disable:4146) #import <MSFLXGRD.OCX> class CMSFlexGrid : public CWnd { protected: DECLARE DYNCREATE(CMSFlexGrid) public: MSFlexGridLib::IMSFlexGridPtr I; доступ к интерфейсу void PreSubclassWindow (); инициализация I {{AFX INSERT LOCATION}} #endif msflexgrid.cpp msflexgrid.cpp #include stdafx.h #include msflexgrid.h IMPLEMENT DYNCREATE(CMSFlexGrid, CWnd) void CMSFlexGrid::PreSubclassWindow () CWnd::PreSubclassWindow(); MSFlexGridLib::IMSFlexGrid *pInterface = NULL; if (SUCCEEDED(GetControlUnknown()->QueryInterface(I.GetIID(), (void**)&pInterface))) { ASSERT(pInterface != NULL); I.Attach(pInterface); Теперь вставим элемент в любой диалог, например CAboutDlg. В диалог добавим переменную связанную с классом CMSFlexGrid и метод OnlnitDialog, текст которого приведён ниже. При вызове диалога в наш FlexGrid будут добавлены два элемента: BOOL CAboutDlg::OnInitDialog() { CDialog::OnInitDialog(); m grid.I->AddItem( 12345 ); m grid.I->AddItem( 54321 ); return TRUE; В заключении, позволим ещё несколько замечаний. Всегда внимательно изучайте файлы *.tlh. Отчасти они могут заменить документацию, а если её нет, то это единственный источник информации (кроме, конечно, OLE/COM Object Viewer). Избегайте повторяющихся сложных конструкций. Например, можно написать так: book->Worksheets->Item[1L]->Range[ B2 ]->FormulaR1C1 = Строка 1 ; book->Worksheets->Item[1L]->Range[ C2 ]->FormulaR1C1 = 12345L;
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |