Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 8 мая!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Программисты долго мучаются с кодом прогаммы, изучают С++, WinAPI функции, MSDN. Потом пишут банальную систему защиты или навешивают банальный протектор, а крэкеры и реверсеры справляются с такой защитой за 5 минут. В итоге, продажи программы почти нулевые. Чтобы такого не допустить, тут самому надо немного поднабрать опыта отладки, реверсинга, тот же отладчик Ollydbg изучить или дизассемблер IDA Pro. Но где искать по крохам эти знания? Нет, конечно можно годами "методом тыка" разбираться, но куда быстрее видеокурс специальный посмотреть. Вот тут он есть: ссылка. Автор курса с большим опытом и объясняет понятно, я из этого курса много узнал про то как работает компьютер, процессор, про инструменты специальные и как с ними работать. Мои коллеги программисты на работе ничего такого и не знают, теперь я им нос утру.

Как изменить цвет фона Edit Control в MFC

Чтобы изменить цвет фона edit control в приложении MFC, необходимо переопределить функцию-обработчик сообщения OnCtlColor() окна, содержащего edit control.

В новой функции OnCtlColor() устанавливается цвет фона и возвращается дескриптор кисти, которой будет закрашиваться фон. Это необходимо сделать в ответ на оба сообщения: CTLCOLOR_EDIT и CTLCOLOR_MSGBOX в функции OnCtlColor().

Данный способ так же описан в "Class Library Reference" - CWnd::OnCtlColor().

Приведённый ниже пример, использует класс, наследованный от CDialog, для демонстрации данного процесса. Для генерации функций-обработчиков для сообщений WM_CTLCOLOR и WM_DESTROY использовался Визард. Соответственно, будут вызываться функции CEditDialog::OnCtlColor() и CEditDialog::OnDestroy().

Пример кода

      // editdlg.h : header file
       //
 
 ////////////////////////////////////////////////////////////////////////
       ///
       // CEditDialog dialog
 
       class CEditDialog : public CDialog
       {
       // Construction
       public:
           CEditDialog(CWnd* pParent = NULL);    // стандартный конструктор
 
       // Добавляем CBrush* для хранения новой кисти фона edit controls.
           CBrush* m_pEditBkBrush;
 
       // Dialog Data
           //{{AFX_DATA(CEditDialog)
           enum { IDD = IDD_EDITDIALOG };
               // NOTE: The ClassWizard will add data members here.
           //}}AFX_DATA
 
       // Overrides
       // ClassWizard generated virtual function overrides
       //{{AFX_VIRTUAL(CEditDialog)
       protected:
       virtual void DoDataExchange(CDataExchange* pDX); // поддержка DDX/DDV
       //}}AFX_VIRTUAL
 
       // Implementation
          protected:
 
           // Generated message map functions
           //{{AFX_MSG(CEditDialog)
           afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
           afx_msg void OnDestroy();
           //}}AFX_MSG
           DECLARE_MESSAGE_MAP()
       };
 
       // editdlg.cpp : implementation file
       //
 
       #include "stdafx.h"
       #include "mdi.h"
       #include "editdlg.h"
 
       #ifdef _DEBUG
       #undef THIS_FILE
       static char BASED_CODE THIS_FILE[] = __FILE__;
       #endif
 
    //////////////////////////////////////////////////////////////////////
       // CEditDialog dialog
 
       CEditDialog::CEditDialog(CWnd* pParent /*=NULL*/)
           : CDialog(CEditDialog::IDD, pParent)
       {
           //{{AFX_DATA_INIT(CEditDialog)
               // NOTE: The ClassWizard will add member initialization here.
           //}}AFX_DATA_INIT
 
           // Instantiate and initialize the background brush to black.
           m_pEditBkBrush = new CBrush(RGB(0, 0, 0));
       }
 
       void CEditDialog::DoDataExchange(CDataExchange* pDX)
       {
           CDialog::DoDataExchange(pDX);
           //{{AFX_DATA_MAP(CEditDialog)
               // NOTE: The ClassWizard will add DDX and DDV calls here.
           //}}AFX_DATA_MAP
       }
 
       BEGIN_MESSAGE_MAP(CEditDialog, CDialog)
           //{{AFX_MSG_MAP(CEditDialog)
           ON_WM_CTLCOLOR()
           ON_WM_DESTROY()
           //}}AFX_MSG_MAP
       END_MESSAGE_MAP()
 
 //////////////////////////////////////////////////////////////////////
       // CEditDialog message handlers
 
       HBRUSH CEditDialog::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
       {
           switch (nCtlColor) {
 
           case CTLCOLOR_EDIT:
           case CTLCOLOR_MSGBOX:
               // Устанавливаем цвет зелёный на чёрном и возвращаем чёрную кисть.
               pDC->SetTextColor(RGB(0, 255, 0));
               pDC->SetBkColor(RGB(0, 0, 0));
               return (HBRUSH)(m_pEditBkBrush->GetSafeHandle());
 
           default:
               return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
           }
       }
 
       void CEditDialog::OnDestroy()
       {
           CDialog::OnDestroy();
 
           // Освобождаем распределённое место для фоновой кисти
           delete m_pEditBkBrush;
       } 

 

 





<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU Проект ReactOS