Другой интересный вопрос состоит в том, как эффективно организовать корректировку даты и времени одновременно. К примеру: мы имеем переменную m_Time типа CTime с некоторым значением и хотим дать пользователю возможность изменить и время и дату, используя соответственно два элемента CDateTimeCtrl, чтобы в конечном итоге получить скорректированное значение m_Time. Вариант с созданием двух ассоциированных переменных CTime и последующим отбрасыванием у одной даты, у другой времени, и их сложением не очень красивый. Я решил это таким образом: создал ассоциированные переменные типа CDateTimeCtrl (а не CTime), использовал функцию SetTime(&m_Time) для установки даты и времени в обоих переменных, а потом при изменении любой из них считывал измененное значение функцией GetTime(&m_Time) и тут же корректировал значение "сопряженной" переменной функцией SetTime(&m_Time). Таким образом достаточно просто решилась проблема "синхронизации" изменения даты и времени.
Евгений Шмелев
ОБРАТНАЯ СВЯЗЬ
Хотел бы дополнить Ваши материалы по .NET:
В частности, хотел бы указать на ошибки в №20 от 22 октября 2000 г.
Платформа Microsoft.NET не базируется на сервисах COM+, а предлагает совершенно новое, более удобное множество сервисов. Так, вместо DCOM и COM+ Вам предоставляется Microsoft .NET Remoting (http://msdn.microsoft.com/library/default.asp?URL=/library/techart/hawkremoting.htm). Вместо каталога COM+ используется каталог .NET.
Естественно, компоненты .NET совместимы с компонентами COM+, в частности, и те, и другие прозрачно доступны друг другу через соответствующий уровень трансляции (flattened COM).
Компиляция исходного кода возможна не только в IL, но и напрямую в машкод.
Первое преимущество .NET – настоящая объектность, включая наследование. Второе примущество – настоящая компонентная архитектура. Если кто-нибудь знаком с RAD-инструментарием Borland Delphi, то могу лишь сказать, что концепции .NET в области компонентной архитектуры, хранимых компонент и свойств, редакторов компонент и редакторов свойств являются органичным развитием идей, заложенных в Delphi VCL.
Собственно, приглашаю на http://msdn.microsoft.com/net/default.asp
Акжан Абдулин
[…] пару слов по поводу темы предыдущей рассылки. Я использую для решения этой проблемы опубликованный на нескольких сайтах класс CInstanceChecker ( http://www.naughter.com/sinstance.html, автор P.J. Naughter), который, по-моему, вполне успешно решает все описанные проблемы. В частности, там элегантно решен вопрос блокирования с помощью объекта класса CSingleLock повторно-запущенных копий вплоть до того момента, когда первая копия создаст главное окно для возможности его активизации.
И последнее. Порой не хочется заглядывать в русифицированные группы новостей из-за обилия "крутого профессионального жаргона" и некоторой агрессивности участников. Грустно за родной язык. Эдакое подражание новорусскому стилю: "пальцы веером" :). Кстати, англоязычные группы гораздо более традиционные и терпимые, хотя вопросы там бывают дилетантские, а профессиональный уровень отвечающих при этом очень высокий. В этом смысле эта рассылка приятно выделяется, и особо хочется отметить регулярные статьи Александра Шаргина.
Евгений Шмелев
[…] хотелось бы также выразить благодарность Александру Шаргину, автору статьи на тему "отладчик" – несмотря на мной многолетний опыт узрел там несколько "приятных мелочей", проверить которые самому руки не доходили.
B свою очередь могу внести небольшое дополнение: если в окне отладчика Watch на одной из закладок поместить выражение
=
где variable – имя переменной, а value#1 – одно из возможных ее значений, то поместив на второй закладке Watch такую же строку с иным значением переменной, мы получаем очень удобный вариант быстрой установки/переключения значений интересующей нас переменной. чаще всего таковыми выступают логические переменные (хотя это и не обчзательно). если же у нас целый набор переменных, значения которых в процессе отладки нужно периодически менять, данный способ будет просто незаменим.
Alexander Zasypkin
Благодарю всех, кто не поленился написать.
В ПОИСКАХ ИСТИНЫ
Q. 1. Есть окно нестандартной формы (например, круглое). Но рамка, появляющаяся вокруг него при перемещении, – строго прямоугольной формы. Как избавиться от такой рамки вообще? Или, может быть, ее можно сделать тоже произвольной формы (по контуру окна)?
2. Как избавиться от пунктирной рамки на кнопке, имеющей фокус? Для кнопки, сделанной из красивого рисунка, такая рамка выглядит лишней…
Максим Чучуйко
Это все на сегодня. Всего вам доброго!
Читать дальше