На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела FAQ в группе разделов С++.
1. Раздел FAQ предназначен для публикации готовых статей.
2. Здесь нельзя задавать вопросы, для этого существуют соответствующие разделы:
Чистый С++
Visual C++ / MFC / WTL / WinApi
Borland C++ Builder
COM / DCOM / ActiveX / ATL
Сопутствующие вопросы
3. Внимание, все темы и сообщения в разделе премодерируются. Любое сообщение или тема будут видны остальным участникам только после одобрения модератора.
Модераторы: B.V., Qraizer
  
> Правка сайтовского FAQ , исправление ошибок и недочетов
    Я тут на досуге взялся подправить статьи из сайтовского FAQ, cи-разделы: FAQ раздела VC++ и FAQ раздела Borland C++ Builder (<=> рабочий вариант FAQ'а)
    Большая просьба в этом топике постить сообщения на замеченные вами ошибки, неточности, опечатки и т.д - вообщем, то, что нужно, на ваш взгляд, исправить. Пример сообщения см. ниже. Лучше замечания не сливать в один пост - на каждое замечание свое сообщение
    В принципе, в перспективе, предполагается заняться и форумским FAQ, так что приветствуются и подобные посты для исправлений в нем.
      Раздел: C/C++/Visual C++
      Тема: Как сделать окно прозрачным
      Что не так:
      В коде
      ExpandedWrap disabled
        // Sets the window to 70% visibility.
        m_pSetLayeredWindowAttributes(m_hWnd, 0, (255 / 70) * 100, LWA_ALPHA);
      использование выражения (255 / 70) * 100 как параметра BYTE bAlpha метода m_pSetLayeredWindowAttributes не верно: значение bAlpha 0 соответствует нулевой видимости (полностью прозрачное окно), а значение 255 соответствует 100% видимости (полностью непрозрачное окно):
      Цитата MSDN; SetLayeredWindowAttributes Function
      ...
      Parameters
      ...
      bAlpha
      [in] Alpha value used to describe the opacity of the layered window. Similar to the SourceConstantAlpha member of the BLENDFUNCTION structure. When bAlpha is 0, the window is completely transparent. When bAlpha is 255, the window is opaque.
      ...
      Следовательно, для получения 70% видимости надо передать значение 255*70/100 ( 178, а не 44, как в исходном выражении).
        Раздел: CBuilder
        Тема: Как сформировать регион по картинке?
        Что не так:
        в функции CreateRgnFromBitmap нет удаления создаваемых временных регионов. Это приводит и к утечке памяти (впрочем, небольшой), но, что самое противное, к огромному числу "лишних" объектов GDI, а число их в системе ограничено. Для устранения этого эффекта надо после обоих вызовов CombineRgn(ResRgn, ResRgn, Rgn, RGN_OR); добавить строку DeleteObject(Rgn);
          Раздел: C / C++ / Visual C++
          Тема: Перевод из DOS кодировки в Windows и наоборот
          Что не так: Забыты символы 'Ё'(240-OEM, 168-ANSI), и 'ё'(241-OEM, 184-ANSI)
            Раздел: CBuilder
            Тема: Цвет( TColor ) - общие вопросы
            Что не так:
            В двух последних ответах ("Как имея TColor, получить ..." и "Как узнать яркость ...") применение GetRValue и т.п. прямо к объекту TColor color не совсем корректно, т.к. для констант типа clWindow, clBtnFace и т.п. эти макросы вернут неверные значения. Нужно сначала конвертировать color c с помощью int __fastcall ColorToRGB(TColor Color);, и полученное значение можно смело использовать для получения значений RGB-составляющих цвета.
              Раздел: CBuilder
              Тема: Как сделать, чтобы в TEdit можно было вводить только числа?
              Что не так:
              Почему-то значение Key проверяется на равенство '.' или ',' и, если это так, заменяется на значение DecimalSeparator. Но DecimalSeparator в принципе может быть любым (как настроит пользователь Windows). Поэтому и сравнивать надо с DecimalSeparator.
              Да и вобщем код с пустыми блоками if и else if выглядит странно. На мой взгляд, так будет выглядеть лучше:
              ExpandedWrap disabled
                  if ( ((Key < '0') || (Key > '9')) // не цифры
                       && Key!=8 // не <- (забой)
                       && (Key!=DecimalSeparator //не разделитель целой и дробной частей
                           || static_cast<TEdit*>(Sender)->Text.Pos(DecimalSeparator)!=0) //или разделитель, но уже есть
                      )
                    Key=0;
                Раздел: CBuilder/Интерфейс
                Тема: Как сменить цвет прогрессбара?
                Что не так:
                Вместо 0x409 лучше написать корректно PBM_SETBARCOLOR и не использовать напрямую VCL-ный тип TColor, а предварительно преобразовать в COLORREF используя ColorToRGB(TColor) из Graphics.hpp - иначе те значения TColor, в которых используется старший байт (для системных цветов) будут восприняты не верно.
                  Ссылка "Книги по программингу" раздела "Прочее" вот с этой страницы http://www.sources.ru/cpp/faqs/index.htm битая.
                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                  0 пользователей:


                  Рейтинг@Mail.ru
                  [ Script execution time: 0,0254 ]   [ 15 queries used ]   [ Generated: 29.03.24, 14:48 GMT ]