debarunb Ответов: 3

как изменить цвет кнопки в vc++ mfc для vs2008


как изменить цвет кнопки в vc++ mfc для vs2008

Извините, что он не работает, пожалуйста, дайте подробную информацию, пожалуйста
Ваш код не работает, пожалуйста, дайте мне подробную информацию, пожалуйста, пожалуйста, его urget

Maximilien

Что вы пробовали до сих пор ? что вернули ваши поиски в google ?

3 Ответов

Рейтинг:
22

merano

1. Поместите кнопку с редактором ресурсов
2. Добавьте переменную для кнопки (например, m_StopButton ) с помощью мастера
3. Переименовать

CButton  m_StopButtonto;

к
CMFCButton  m_StopButton;

4. измените некоторые видимые функции

// Set the background color for the button text.
  m_StopButton.SetFaceColor(RGB(255,0,0),true);
  m_StopButton.SetTextColor(RGB(0,0,255));
  // Set the tooltip of the button.
  m_StopButton.SetTooltip(_T("This is my Stop Button!"));


Gbenbam

Я использовал этот код на VS2010, но id, похоже, не работал.

Я добавил кнопку MFC из редактора ресурсов и написал.

CMFCButton *pButton = (CMFCButton *)GetDlgItem(IDC_MFCBUTTON1);
pButton - > StFaceColor (RGB(255,0,0), true);
pButton- & gt;SetTextColor (RGB (0,0,255));

Интересно, почему этот код не работает?


merano

(1) Обратите внимание, что фон не заполняется, когда переменная-член CMFCButton::m_bTransparent имеет значение TRUE.
https://msdn.microsoft.com/de-de/library/Bb983413.aspx


(2)SetFaceColor () игнорируется современными движками тем. Волшебник величает что-то вроде:

CMFCVisualManager:: SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows));

Вы можете закомментировать эту строку, чтобы отключить пользовательские темы MFC. Это работает, но кнопка
не будет хорошо смотреться из-за классической темы.

Возможно, вы можете загрузить цветовое растровое изображение, чтобы получить нужный вам цвет.

Другим решением было бы сделать кнопку ownerdraw-обработку OnDrawItem() или WM_DRAWITEM
сообщение и сделать картину самостоятельно.

Рейтинг:
17

ToniMachado

Также необходимо включить заголовок afxbutton. h, т. е. #include "afxbutton.h"


Рейтинг:
0

vojtee

Использовать это

m_Button1.m_nFlatStyle = CMFCButton::BUTTONSTYLE_NOBORDERS;


он удалит все теги windows по умолчанию.

Таким образом, окончательное решение

	m_Button1.m_nFlatStyle = CMFCButton::BUTTONSTYLE_NOBORDERS;//required for flatering and use bg color
m_Button1.m_bTransparent = false;//reg for use bg color
m_Button1.SetFaceColor( RGB(211, 84, 0), true);


Richard MacCutchan

Четыре года слишком поздно.