Здравствуйте, эксперты ! Во многих диалоговых окнах присутствует кнопка 'More'. После ее нажатия диалог увеличивается, как будто к нему стыкуют еще одну панель. Повторное нажатие приводит к исходному состоянию диалога. Как это реализовать программно ? Использую VC++ c MFC.
Добрый день, IceWINteR! Avl2k прав, дополню лишь, что надо не забыть запретить прием фокуса этими контролами, а то можно будет по табулятору перейти в скрытые элементы. Ответ отправлен: 23.04.2003, 16:16 Отправитель: baldr Отвечает Avl2k
Здравствуйте, IceWINteR! Наиболее простой способ - нарисовать диалог со всеми контролами, а затем обработчике кнопки в зависимости от режима (More/Less) изменять высоту диалога (с помощью MoveWindow или SetWindowPos) таким образом, чтобы дополнительные контролы были видны или нет. С уважением, Avl2k. Ответ отправлен: 23.04.2003, 13:48 Отправитель: Avl2k
Вопрос № 723
Hello all! Я уже задавал этот вопрос "экспертам" рассылки C++. Надеюсь эта попытка будет более результативной. Дело в том, что Стандарт говорит, что функция void f1() { } может бросать любые исключения, функция void f2() throw() {} не может бросать никаких исключений, а функция void f3() throw(int, char*) { } может бросать только исключенияя типов int и double. ВНИМАНИЕ, вопрос! Знает ли кто-нибудь из людей, именующих себя экспертами, компилятор, который не скомпилировал бы следующий код, мотивируя это тем, что может возникнуть исключение, которое останется необработанным? void f1 () throw(int) { throw int(13); } void f2 () throw() { f1(); } если никто не знает, то дайте хотя бы ссылку на какой-нибудь ресурс, на котором подобная информация имеется.
Приветствую Вас, Antonio! Ну и наезд. Еще и слово "экспертами" в кавычках... Хотелось бы напомнить, что експерты ничего тебе не должны, поэтому могут просто игнорировать вопрос. Теперь по вопросу: Таких компиляторов нет, т.к. код полностью корректен, почему компилятор должен контролировать,- обрабатываете вы или не обрабатываете исключения? В стандарте сказано, что необработанное исключение приводит к завершению программы(т.е. нет неопределенных ситуаций), поэтому отслеживать подобные случаи нет смысла.
Успехов
Ответ отправлен: 24.04.2003, 12:22 Отправитель: Yuri Gordienko
Вопрос № 724
Привет усем.. у кого может быть есть кака дока по ole automation оссобенно по екселю? киньте на мыло пжалуйста заранее благодарен
Добрый день, Painbringer! В MSDN ОЧЕНЬ подробно написано про OLE Automation и об Excel-e тоже НЕМАЛО !!!
Ответ отправлен: 24.04.2003, 14:40 Отправитель: Ramzes Отвечает Avl2k
Приветствую Вас, Painbringer! Никакой особой документации не нужно. 1. Создаем C++-обертку с помощью директивы #import excel9.olb (цифра может отличаться, сам файл обычно лежит в директории офиса c:\Program Files\Microsoft Office\Office); 2. Создаем экземпляр нужного объекта Excel (см. в примере). 3. Вызываем нужные методы, аналогичные методам в макросах (документация по VBA входит в офис). Пример (VC++ 6.0): #import "C:\Program Files\Microsoft Office\Office\MSO9.DLL" #import "C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB" #import "C:\Program Files\Microsoft Office\Office\Excel9.olb" rename("ExitWindows", "XlExitWindows") rename("DialogBox", "XlDialogBox") rename("RGB", "XlRGB") no_dual_interfaces using namespace Excel; #include
<iostream> using namespace std; void main() { HRESULT hr = ::CoInitialize( NULL ); if( FAILED( hr ) ) return; { _WorksheetPtr sheet; hr = sheet.CreateInstance( L"Excel.Sheet" );
if( SUCCEEDED( hr ) ) { _ApplicationPtr app = sheet->Application; app->Visible = true; try { app->ActiveCell->FormulaR1C1 = (long)123; } catch( const _com_error& e ) { cout << "exception: " << e.ErrorMessage() << endl; } } } ::CoUninitialize(); // !!! после освобождения всех объектов } С уважением, Avl2k. Ответ отправлен: 24.04.2003, 14:00 Отправитель: Avl2k
Форма отправки вопроса
Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook"
и "Microsoft Outlook Express". В программе The Bat!
подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте,
что в некоторых браузерах могут стоять запреты на открытие других
окон, а также "чрезмерное" кэширование данных,
при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet
Explorer 5.0+ или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.