Как изменить цвет контура и цвет фона кнопки?

 
0
 
C++
ava
erslgoeirjh | 25.10.2016, 15:13
Как сделать так, чтобы в результате какого-то события у кнопки менялся цвет её контура и её фона?
Есть ли такие методы у класса CButton или же нужно создавать класс-потомок от него, в котором нужно переопределять методы?
Kommentare (2)
ava
erslgoeirjh | 26.10.2016, 13:08 #
На основе примера, найденного в Интернете, я написал следующее:

/

/ файл MyButton.h
#ifndef MY_BUTTON_H
#define MYBUTTON_H
#include <afxwin.h>

class CMyButton : public CButton
{
    virtual void DrawItem(LPDRAWITEMSTRUCT  lpDrawItemStruct);
};


/

/ файл MyButton.cpp
#include "stdafx.h"
#include "MyButton.h"

void  CMyButton::DrawItem(LPDRAWITEMSTRUCT  lpDrawItemStruct)
{
    UINT  uStyle = DFCS_BUTTONPUSH;
    ASSERT(lpDrawItemStruct->CtlType = ODT_BUTTON);
    if (lpDrawItemStruct->ItemSTate & ODS_SELECTED)
        uStyle |= DFCS_PUSHED;
    ::DrawFrameControl(lpDrawItemStruct->hDC,lpDrawItemStruct->rcItem,DFC_BUTTON,uStyle);
    CString  strText;
    GetWindowText(strText);
    COLORREF  crOldColor = ::SetTextColor(lpDarwItemStruct->hDC,RGB(255,0,0));
 ::DrawText(lpDrawItemStruct>hDC,strText,strText.GetLength(),&lpDrawItemStruct>rcItem,DT_SINGLELINE|DT_VCENTER|DT_CENTER);
    ::SetTextColor(lpDrawItemStruct->hDC,crOldColor);
}


в классе CMyDialog:


class CMyDialog : public CDialog
{
//...
public:
//...
//CButton  m_IDC_BUTTON2; // закомментировал прежнее;
CMyButton  m_IDC_BUTTON2;
//...
};

в инициализирующей функции:


CMyDialog::OnInitDialog
{
    CDialog::OnInitDialog();
    //...
    m_IDC_BUTTON2.Create(_T("OK"),WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON|BS_OWNERDRAW,CRect(407,79,50,14),this,1);
    //...
}


И в этой инициализирующей функции CMyDialog::OnInitDialog на строке m_IDC_BUTTON2.Create отладчик выдаёт ошибку:

Цитата


Debug Assertion Failed!



Program C:\Windows\system32\mfc110d.dll

File:f:\dd\vctools\vs7libs\ship\atlmfc\src\mfc\wincore.cpp



Line:691




Что это означает? Как исправить эту ошибку?
(Я работаю в MS Visual C++ 2012, операционная система Windows 7).
ava
vol4ek | 14.11.2016, 22:59 #
научись мастером пользоваться раз MFC юзаешь. обработка сообщений и тд. в окне свойств вкладки события и сообщения.
Registrieren Sie sich oder melden Sie sich an, um schreiben zu können.
Unternehmen des Tages
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Mitwirkende
advanced
Absenden