На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Обратите внимание:
1. Прежде чем начать новую тему или отправить сообщение, убедитесь, что вы не нарушаете правил форума!
2. Обязательно воспользуйтесь поиском. Возможно, Ваш вопрос уже обсуждали. Полезные ссылки приведены ниже.
3. Темы с просьбой выполнить какую-либо работу за автора в этом разделе не обсуждаются.
4. Используйте теги [ code=cpp ] ...текст программы... [ /code ] для выделения текста программы подсветкой.
5. Помните, здесь телепатов нет. Старайтесь формулировать свой вопрос максимально грамотно и чётко: Как правильно задавать вопросы
6. Запрещено отвечать в темы месячной и более давности без веских на то причин.

Полезные ссылки:
user posted image FAQ Сайта (C++) user posted image FAQ Форума user posted image Наши Исходники user posted image Поиск по Разделу user posted image MSDN Library Online (Windows Driver Kit) user posted image Google

Ваше мнение о модераторах: user posted image B.V.
Модераторы: B.V.
  
> Наложение текста в static
    Доброго времени суток! На окне имеется static, в котором, посредством таймера, каждую секунду обновляется время. Не пойму в чем причина, но при при использовании функции SetWindowText(), текст нового времени, в прямом смысле этого слова, накладывается на старый текст (почему то старый текст не удаляется). В чем может быть проблема?
    Прикреплённая картинка
    Прикреплённая картинка


    Таймер
    ExpandedWrap disabled
      case WM_TIMER:
              {
                  switch(wParam)
                  {
                      case TEST_WIN_TIMER:
                      {
                          if(!SetAsptTimer(hWnd, &aspt_controls))
                          {
                              SendPostStop(hWnd, &aspt_controls);
                          }
       
                          break;
                      }
                  }
       
                  break;
              }


    Обработка таймера
    ExpandedWrap disabled
      BOOL WINAPI SetAsptTimer(HWND hWnd, lpAspt_Test_Controls lpaspt_test_controls)
      {
          BOOL result = TRUE;
          std::wstringstream stream;
          
          if(lpaspt_test_controls->Aspt_Timer.iMinutes > 0x00)
          {
              if(lpaspt_test_controls->Aspt_Timer.iSeconds == 0x00)
              {
                  lpaspt_test_controls->Aspt_Timer.iSeconds = 0x3B;
                  lpaspt_test_controls->Aspt_Timer.iMinutes--;
              }
              else
              {
                  lpaspt_test_controls->Aspt_Timer.iSeconds--;
              }
       
              stream << TEST_WIN_TIME << lpaspt_test_controls->Aspt_Timer.iMinutes << _T(":");
       
              if(lpaspt_test_controls->Aspt_Timer.iSeconds < 0x0A)
              {
                  stream << _T("0") << lpaspt_test_controls->Aspt_Timer.iSeconds;
              }
              else
              {
                  stream << lpaspt_test_controls->Aspt_Timer.iSeconds;
              }
          }
          else
          {
              stream << TEST_WIN_TIME << _T("0:00");
              result = FALSE;
              KillTimer(hWnd, TEST_WIN_TIMER);
          }
       
          SetWindowText(lpaspt_test_controls->hTime, stream.str().c_str());
       
          return result;
      }
      Ты неправильно обрабатываешь фон статика. https://social.msdn.microsoft.com/Forums/vs...forum=vcgeneral
        Цитата
        Ты неправильно обрабатываешь фон статика. https://social.msdn.microsoft.com/Forums/vs...forum=vcgeneral

        Спасибо, вы оказались правы.
        Вот, обрабатываю фон статика, таким образом:
        ExpandedWrap disabled
          case WM_CTLCOLORSTATIC:
                  {
                      SetBkMode((HDC)wParam, OPAQUE);
                      SetTextColor((HDC)wParam, RGB(0x00, 0x00, 0x00));
                      SetBkColor((HDC)wParam, GetSysColor(COLOR_MENU));
                      return (INT_PTR)GetStockObject(NULL_BRUSH);        
                  }


        Все статики стали нормальными, но почему то теперь появились проблемы с неактивными едитами и чек-баттонами...

        Прикреплённая картинка
        Прикреплённая картинка


        На скрине, если стоит флажок, то верхние два едита неактивные (функция EnableWindow(), в них есть текст, просто я его тут замазал), если флажок убрать, то нижние два едита становятся неактивными, а верхние - активные... Как можно поправить отображение данных контролов?
        Сообщение отредактировано: Игорь98 -
          Цитата B.V. @
          Ты неправильно обрабатываешь фон статика. https://social.msdn.microsoft.com/Forums/vs...forum=vcgeneral

          Афигеть:
          ExpandedWrap disabled
            // You just need to handle WM_CTLCOLOR for the dialog
             
            HBRUSH CDialogDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
            {
                HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
                if ( CTLCOLOR_STATIC == nCtlColor )
             
                {
                    pDC->SetBkMode( TRANSPARENT );
                    HBRUSH RedBrush =  CreateSolidBrush( RGB( 255,0,255));
                    return RedBrush;
                }
             
                return hbr;
            }

          user posted image

          Можно тут посмотреть.
          Это получше, но тоже не очень хорошо.
          Сообщение отредактировано: ЫукпШ -
          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script execution time: 0,0497 ]   [ 19 queries used ]   [ Generated: 19.04.24, 05:25 GMT ]