На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania 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
char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;


user posted image Чат Исходников в СкайпеНе тормози, форум теперь здесь!Чат Исходников в Дискорде
Цитата
Ты неправильно обрабатываешь фон статика. 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

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


Рейтинг@Mail.ru
[ Script Execution time: 0,1085 ]   [ 23 queries used ]   [ Generated: 19.03.19, 10:10 GMT ]