Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Изменение цвета фона неактивного эл-та 
V
    Опции темы
Rijndael
Дата 25.3.2008, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 2.11.2007
Где: Новосибирск

Репутация: нет
Всего: нет



Код

// FrandbergDlg.cpp : implementation file
//

#include "stdafx.h"
#include "Frandberg.h"
#include "FrandbergDlg.h"
#include "cgrapher.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// CFrandbergDlg dialog




CFrandbergDlg::CFrandbergDlg(CWnd* pParent /*=NULL*/)
    : CDialog(CFrandbergDlg::IDD, pParent)
    , m_Message(_T(""))
    , m_VKey(0)
    , m_EKey(0)
{
    m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
    m_pEditBkBrush = new CBrush(RGB(255, 255, 255));
}

void CFrandbergDlg::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExchange(pDX);
    DDX_Text(pDX, IDC_EDIT, m_Message);
    DDX_Text(pDX, IDC_VIEWKEY, m_VKey);
    DDX_Text(pDX, IDC_ENTKEY, m_EKey);
}

BEGIN_MESSAGE_MAP(CFrandbergDlg, CDialog)
    ON_WM_PAINT()
    ON_WM_QUERYDRAGICON()
    ON_WM_CTLCOLOR()
    ON_WM_DESTROY()
    //}}AFX_MSG_MAP
//    ON_BN_SETFOCUS(IDCANCEL, &CFrandbergDlg::OnBnSetfocusCancel)
ON_BN_CLICKED(CIPHER, &CFrandbergDlg::OnBnClickedCipher)
ON_BN_CLICKED(DECIPHER, &CFrandbergDlg::OnBnClickedDecipher)
END_MESSAGE_MAP()


// CFrandbergDlg message handlers

BOOL CFrandbergDlg::OnInitDialog()
{
    CDialog::OnInitDialog();

    // Set the icon for this dialog.  The framework does this automatically
    //  when the application's main window is not a dialog
    SetIcon(m_hIcon, TRUE);            // Set big icon
    SetIcon(m_hIcon, FALSE);        // Set small icon

    // TODO: Add extra initialization here

    return TRUE;  // return TRUE  unless you set the focus to a control
}

HBRUSH CFrandbergDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
    {
        switch (nCtlColor)
        {
            case CTLCOLOR_EDIT:
            case CTLCOLOR_MSGBOX:
            pDC->SetTextColor(RGB(255, 0, 0));
            pDC->SetBkColor(RGB(255, 255, 255));
            return (HBRUSH)(m_pEditBkBrush->GetSafeHandle());

            default:
            return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
        }
    }
        
    void CFrandbergDlg::OnDestroy()
    {
        CDialog::OnDestroy();
        delete m_pEditBkBrush;
    } 

// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.

void CFrandbergDlg::OnPaint()
{
    if (IsIconic())
    {
        CPaintDC dc(this); // device context for painting

        SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

        // Center icon in client rectangle
        int cxIcon = GetSystemMetrics(SM_CXICON);
        int cyIcon = GetSystemMetrics(SM_CYICON);
        CRect rect;
        GetClientRect(&rect);
        int x = (rect.Width() - cxIcon + 1) / 2;
        int y = (rect.Height() - cyIcon + 1) / 2;

        // Draw the icon
        dc.DrawIcon(x, y, m_hIcon);
    }
    else
    {
        CDialog::OnPaint();
    }
}

// The system calls this function to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR CFrandbergDlg::OnQueryDragIcon()
{
    return static_cast<HCURSOR>(m_hIcon);
}

cgrapher object;

void CFrandbergDlg::OnBnClickedCipher()
{
    UpdateData(TRUE);
    object.enter_message(m_Message);
    object.rand_key();
    object.to_cipher();
    m_Message = object.view_message();
    m_VKey = object.view_key();
    GetDlgItem(CIPHER) -> EnableWindow(FALSE);
    GetDlgItem(IDC_EDIT) -> EnableWindow(FALSE);
    GetDlgItem(DECIPHER) -> EnableWindow(TRUE);
    GetDlgItem(IDC_ENTKEY) -> EnableWindow(TRUE);
    UpdateData(FALSE);
}

void CFrandbergDlg::OnBnClickedDecipher()
{
    UpdateData(TRUE);
    object.enter_key(m_EKey);
    UpdateData(FALSE);
}



Но когда элемент (поле) disabled, цвет меняется на серый. Как этого избежать?

Это сообщение отредактировал(а) Rijndael - 25.3.2008, 11:41
PM MAIL ICQ   Вверх
Andrey44
Дата 25.3.2008, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: 12
Всего: 26



Надо писать класс производный от твоего контрола и самому рисовать все состояния.
Это я так думаю. smile 


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
Rijndael
Дата 25.3.2008, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 2.11.2007
Где: Новосибирск

Репутация: нет
Всего: нет



Навряд-ли. Помню, как-то делал такое, точнее, заимствовал из чужого когда, производных классов там, кажется, не было.
PM MAIL ICQ   Вверх
Earnest
Дата 25.3.2008, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



CTLCOLOR_STATIC


--------------------
...
PM   Вверх
korian
Дата 25.3.2008, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 8.3.2008
Где: Украина, Харьков

Репутация: 2
Всего: 17



Цитата

Read-only or disabled edit controls do not send the WM_CTLCOLOREDIT message; instead, they send the WM_CTLCOLORSTATIC message. 

про CTLCOLOR_MSGBOX не знаю.
PM   Вверх
Earnest
Дата 25.3.2008, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Еще можно вместо disable делать read-only, но тогда курсор в поле болтаться все же будет.



--------------------
...
PM   Вверх
Rijndael
Дата 25.3.2008, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 2.11.2007
Где: Новосибирск

Репутация: нет
Всего: нет



Цитата
CTLCOLOR_STATIC 

то, что надо smile

Это сообщение отредактировал(а) Rijndael - 25.3.2008, 13:31
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0461 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.