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

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


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

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



Возможности языков семейства Си по истине безграничны, однако, в этой свободе кроются и недостатки: всегда нужно программисту держать ухо востро и контроллировать "переполнение буфера", чтобы потом программа не вылетала в "синий экран" на массе разнообразных версий Windows и железа у пользователей. Те же крэкеры и реверсеры специально ищут в коде программ на Си уязвимости, куда можно подсадить любой вирусный код, об этом более подробно автор рассказывал в своём видеокурсе здесь. Я там многое узнал и теперь мой код стал значительно более безопасный.

Как изменить фоновый цвет общего диалога

Классы общих диалогов ( File Open и Print ) содержащиеся в MFC можно использовать для изменения фонового цвета этих общих диалогов. Для этого необходимо наследовать MFC класс, от одного из классов для стандартных диалогов, а затем переопределить функции-члены OnCtlColor() и OnDestroy().

Нижеприведённый пример использует класс CFileDialog стандартного диалога. Чтобы сгенерировать функцию-обработчик для сообщения WM_CTLCOLOR, использовался визард ( Class Wizard ). Функция называется "CMyDlg::OnCtlColor()".

Пример кода

   // mydlg.h : заголовочный файл
    //
    #include <dlgs.h>
    //////////////////////////////////////////////////////////////////////
    // CMyDlg dialog
 
    class CMyDlg : public CFileDialog
    {
    // Construction
    public:
        CMyDlg(CWnd* pParent = NULL);   // standard constructor
 
        // Добавляем указатель CBrush для хранения новой кисти фона
        CBrush m_pBkBrush;
 
    // Данные диалога
        //{{AFX_DATA(CMyDlg)
        enum { IDD = FILEOPENORD };
            // NOTE: the ClassWizard will add data members here
        //}}AFX_DATA
 
    // Implementation
    protected:
        virtual void DoDataExchange(CDataExchange* pDX);  // DDX/DDV support
 
        // Generated message map functions
        //{{AFX_MSG(CMyDlg)
        afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
        //}}AFX_MSG
        DECLARE_MESSAGE_MAP()
    };
 
    // mydlg.cpp : исходник
    //
    #include "stdafx.h"
    #include <afxdlgs.h>
    #include "mydlg.h"
 
    #ifdef _DEBUG
    #undef THIS_FILE
    static char BASED_CODE THIS_FILE[] = __FILE__;
    #endif
 
    //////////////////////////////////////////////////////////////////////
    // CMyDlg dialog
 
    CMyDlg::CMyDlg(CWnd* pParent /*=NULL*/)
        : CFileDialog(TRUE, NULL, NULL, OFN_HIDEREADONLY)
    {
        //{{AFX_DATA_INIT(CMyDlg)
            // NOTE: the ClassWizard will add member initialization here
        //}}AFX_DATA_INIT
    }
 
    void CMyDlg::DoDataExchange(CDataExchange* pDX)
    {
        CDialog::DoDataExchange(pDX);
        //{{AFX_DATA_MAP(CMyDlg)
            // NOTE: the ClassWizard will add DDX and DDV calls here
        //}}AFX_DATA_MAP
    }
 
    BEGIN_MESSAGE_MAP(CMyDlg, CFileDialog)
        //{{AFX_MSG_MAP(CMyDlg)
        ON_WM_CTLCOLOR()
        //}}AFX_MSG_MAP
    END_MESSAGE_MAP()
 
    //////////////////////////////////////////////////////////////////////
    // Обработчики сообщений для CMyDlg
 
    HBRUSH CMyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
    {
        switch (nCtlColor) {
 
        case CTLCOLOR_STATIC:
            // Устанавливаем цвет статического текста белый на синем.
            pDC->SetTextColor(RGB(255, 255, 255));
            pDC->SetBkColor(RGB(0, 0, 255));
            // Drop through to return the background brush.
 
        case CTLCOLOR_DLG:
            return (HBRUSH)(m_pBkBrush.GetSafeHandle());
 
        default:
             return CFileDialog::OnCtlColor(pDC, pWnd, nCtlColor);
        }
    } 

 

 





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

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




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



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


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