Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Изменение фона Edit-ов, как сделать

25K
11 июня 2007 года
16alex
6 / / 07.05.2007
Имеется сообщение:
 
Код:
HBRUSH CWidth::OnCtlColor(CDC* pDC,CWnd *pWnd,UINT nCtlColor)
{
//k->CreateSolidBrush(RGB(0,0,0));
    if (nCtlColor==CTLCOLOR_EDIT)
    {
        pDC->SetBkColor(m_R);
//      return k;
    }
    return CWidth::OnCtlColor(pDC,pWnd,nCtlColor);
}

В обработчике нажатия кнопки посылаем
сообщение:
Код:
void CWidth::OnButton1()
{
    CColorDialog dlg;
    if(dlg.DoModal() == IDOK)
    {
    COLORREF rgb = dlg.GetColor();
    m_R=rgb;
    SendMessage(WM_CTLCOLOR,NULL,NULL);
    }
    // TODO: Add your control notification handler code here
    }

и прога вылетает,в чем дело, прогеры сжальтесь.
22K
11 июня 2007 года
Pastor
43 / / 16.05.2007
 
Код:
#pragma comment(lib, "gdi32.lib")
...
case WM_CTLCOLOREDIT:{
    //lParam - HWND, wParam - HDC
    if(lParam == hEdit){
        SetTextColor(wParam, RGB(255,0,0);
        SetBkColor(wParam, RGB(0,0,255));        
    }
    break;
}

А так не пойдет?
25K
11 июня 2007 года
16alex
6 / / 07.05.2007
[QUOTE=Pastor;197063]
 
Код:
#pragma comment(lib, "gdi32.lib")
...
case WM_CTLCOLOREDIT:{
    //lParam - HWND, wParam - HDC
    if(lParam == hEdit){
        SetTextColor(wParam, RGB(255,0,0);
        SetBkColor(wParam, RGB(0,0,255));        
    }
    break;
}

Где этот код писать? (можно поподробней)
320
11 июня 2007 года
m_Valery
1.0K / / 08.01.2007
Не,вы не так делаете.:) Надо так.
Код:
HBRUSH Симя_диалога::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

   // Если текущий элемент текстовое поле редактора
    if(nCtlColor == CTLCOLOR_EDIT && pWnd->GetDlgCtrlID() == IDC_EDIT1)
    {
        delete brush;
        // Создание новой кисти
        brush = new CBrush;
        brush->CreateSolidBrush(bkColor);
        // Установка цвета фона "под буквами"
        pDC->SetBkColor(bkColor);
        // Установка цвета текста
        pDC->SetTextColor(textColor);
        // "Подменяем" кисть (возвращаем свою)
        return *brush;
    }
    return hbr;
}

В обработчике нажатия кнопки
Код:
void Cимя_диалога::OnBnClickedButton1()
{
    // TODO: Add your control notification handler code here
    CColorDialog colDlg;
    if(colDlg.DoModal() == IDOK)
    {
        // Изменение цвета фона
        bkColor = colDlg.GetColor();
        // Перерисовка текстового поля со стиранием фона
        Invalidate(true);
    }
}

В хидер-файле добавляешь переменные
 
Код:
...
            CBrush* brush;
    COLORREF textColor, bkColor;
...

В конструкторе пишешь
Код:
Cимя_диалога::CHelloWorldDlg(CWnd* pParent /*=NULL*/)
    : CDialog(CHelloWorldDlg::IDD, pParent)
    , brush(NULL)
{
    m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
    // Начальная инициализация
    brush = new CBrush;
    textColor = 0;          // Черный цвет
    bkColor = RGB(127, 127, 127);   // Белый цвет
    // Создание "сплошной" кисти
    brush->CreateSolidBrush(bkColor);
}

По умолчанию стоит серый цвет фона тектового поля,после нажатия кнопки,выбираешь цвет и он устанавливается для фона текстового поля.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог