Программирование >>  Перегруженные имена функций и идентификаторы 

1 ... 152 153 154 [ 155 ] 156 157 158 ... 210


просмотр 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;



1 ... 152 153 154 [ 155 ] 156 157 158 ... 210

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика