Рейтинг:
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
сообщение и сделать картину самостоятельно.
Рейтинг:
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
Четыре года слишком поздно.