Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 [2]  Все   Вниз
  Печать  
Автор Тема: оформление а ля VS2008  (Прочитано 58281 раз)
0 Пользователей и 27 Гостей смотрят эту тему.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #30 : 23-04-2010 11:22 » 

собственно, им отправятся мессаги,
Код:
_AFXWIN_INLINE void CButton::SetCheck(int nCheck)
{ ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, BM_SETCHECK, nCheck, 0); }

_AFXWIN_INLINE void CEdit::Copy()
{ ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_COPY, 0, 0); }

 но понимать они станут их как придётся - то есть сообщения с номером ((int)BM_SETCHECK) у статика нету  вовсе  , а сообщение WM_COPY статик может тупо не обрабатывать. Поэтому всё происходит тихо и без скандала Улыбаюсь А происходит ничего


Ладно, насчёт классов я понял, что мемберы придётся фтыкать всё равно Улыбаюсь
« Последнее редактирование: 23-04-2010 11:24 от Алексей1153++ » Записан

Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #31 : 23-04-2010 11:31 » 

Лёш, хорошо. Покажи мне место (код) в цепочке вызовов GetDlgItem где создаётся объект именно типа CButton. Исходники все открыты. Ага
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #32 : 23-04-2010 11:39 » 

нигде не создаётся - я же уже говорю, что понял ) Там  (в CButton и других) только функции для работы c HWND

То есть я могу смело делать для кнопки так:
Код:
 CMFCButton *pButton = (CMFCButton*) GetDlgItem(IDC_BUTTON1);

и потом работать с. А мембер необходимо добавить, чтобы появилась запись в DoDataExchange и поменялась обработка сообщений, а иначе это так и останется обычная серая кнопа ))
Записан

Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #33 : 23-04-2010 13:13 » 

Хммм... сомневаюсь, что ты получишь то, что хочешь. У этих объектов разная природа.

Ещё раз. GetDlgItem работает только на уровне коммуникации. Тебе же нужны свойства - цвет, вкус, запах. Те ты должен добавить новый объект обладающий этими свойствами в диалог, физически добавить.

Хотя попробуй. Я не знаю что они там в этих новых классах намудрили. Но раньше такое не прокатывало. Каждый раз надо было создавать объекты. Иначе это противоречит логике работы с контролами.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #34 : 23-04-2010 17:28 » 

попробовал чисто с заданием мембера и связыванием в DoDataExchange:
CMFCButton  - по виду обычная кнопка, работает, но цвет не меняет   
CMFCSpinButtonCtrl - спин контрол работает на ура, цвет/стиль меняется вместе с фреймом
CMFCEditBrowseCtrl - едит с виду тоже обычный едит, стиль не меняется

Записан

Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #35 : 30-04-2010 09:39 » 

кстати, забыл отписаться )

закрасить фон CDialog (и вообще CWnd) в соответствии с темой можно так
Код:
BOOL CMyDlg::OnEraseBkgnd(CDC* pDC)
{
RECT r;
GetClientRect(&r);
CMFCVisualManager::GetInstance()->FillReBarPane(pDC,(CBasePane*)this,r);
return 1;
}
Записан

Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #36 : 30-04-2010 09:56 » 

а чтобы статики стали прозрачные, надо

Код:
HBRUSH CMyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH h=CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

if(nCtlColor==CTLCOLOR_STATIC)
{
static CBrush br;
if(!br.m_hObject)
{
LOGBRUSH logBrush;
::memset(&logBrush,0,sizeof(logBrush));
logBrush.lbStyle = BS_NULL;
br.CreateBrushIndirect(&logBrush);
}

pDC->SetBkMode(TRANSPARENT);
return br;
}

return h;
}
Записан

Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #37 : 30-04-2010 11:01 » 

О как. Всё-таки через менеджера. Ну вот тебе и флаг в руки. Ага Долби эти новые CMFC*-классы. Кто-то должен.

Ты кстати со студией не разобрался? Почему она у тебя так с ресурсами неадекватно?
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #38 : 01-05-2010 10:10 » 

О как. Всё-таки через менеджера. Ну вот тебе и флаг в руки. Ага Долби эти новые CMFC*-классы. Кто-то должен.
ну да, там некоторые элементы прямо нарисовать можно. Одно только нехорошо - рамка с текстом (статик же тоже) при прозрачности некрасиво выглядит - линия . Пока прервался, потом ещё поковыряю - может тупо через менеджер тоже отрисую

Ещё не могу разобраться, как сменить цвета темы, хотя они там все protected как на ладони - какая-то там хитрость есть всё таки

Ты кстати со студией не разобрался? Почему она у тебя так с ресурсами неадекватно?
не разбирался, подключить проект для копирования ресов несложно и ненапряжно Улыбаюсь И удалить потом тоже
Записан

Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #39 : 01-05-2010 19:13 » 

Ещё не могу разобраться, как сменить цвета темы, хотя они там все protected как на ладони - какая-то там хитрость есть всё таки

Я думаю должна быть возможность определять пользовательские темы. Или же посмотреть где у них стандарты забиты и какого они типа.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Phodopus
Интересующийся

ru
Offline Offline

« Ответ #40 : 14-05-2010 11:54 » 

Ресурсы (диалог) же можно просто скопировать в одном проекте (правой кнопкой - Copy) и потом вставить в другом...
ты меня понял Улыбаюсь Кастинг/не кастинг, а GetDlgItem вернёт указатель на объект CButton (хоть и приведённый к CWnd*)
Серьезное заблуждение. Возвращает он именно CWnd и только CWnd. Приведение к CButton некорректно, хотя все повсеместно так и делают, но срабатывает оно лишь потому что методы типа SetCheck() объявлены как inline и реализованы как SendMessage(). Абсолютно корректным будет лишь CButton::Attach()/CButton::Detach()
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #41 : 14-05-2010 15:26 » 

Phodopus, уже разобрались, всё гораздо проще: хочь ты CWnd, хочь CButton - всё едино это суть HWND и всё Улыбаюсь Все методы обёрток - лишь шлют сообщения объекту HWND. Поэтому приводить так безопасно

ИНЛАЙН уж точно ни при чём Отлично

Вот из-за таких как ты ваятелей и бытует мнение о "сложности" и "неудобности" MFC
Записан

Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #42 : 14-05-2010 22:31 » 

Зря ты так, Лёш. Phodopus только сказал как на самом деле всё происходит. И лучше всего не просто доверять своему опыту в тех случаях, когда "стандартное" использование работает, а ещё и понимать, почему оно это делает, и "сложности" MFC это никак не придаёт. Скорее наоборот, все эти "сложности" и "неудобства" являются результатом использования MFC по привычке "делай как я", до тех пор, пока это работает, а как только перестаёт работать, все начинают ругаться и плеваться, обвиняя корявость MFC, но никак не себя родимого, поленившегося в своё время разобраться.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #43 : 15-05-2010 04:30 » 

Джон, не знаю, как у него там чего происходит, у меня всё работает, плеваться не приходилось Улыбаюсь
Записан

Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #44 : 15-05-2010 09:29 » 

До поры до времени. Ага
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #45 : 15-05-2010 14:11 » 

Джон, а если и не придётся ? ))
Записан

RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #46 : 15-05-2010 14:31 » 

Леш, немножко переучиться не так сложно. Зато будешь больше уверен в качестве своей работы. Я так думаю. Улыбаюсь
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #47 : 16-05-2010 13:38 » 

Переучиться в чём ?
Записан

RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #48 : 16-05-2010 13:56 » 

В своих привычках Улыбаюсь
В частности - о чем вы тут спорили.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #49 : 17-05-2010 02:34 » 

ну, мы вроде не о привычках, а об унутреннем устройстве )
Записан

RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #50 : 17-05-2010 05:04 » 

А что ты под конец говорил? Как раз о своих привычках.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #51 : 17-05-2010 05:06 » new

ммм, даже поиском поискал "привыч", у меня не было таких слов. У Джона было Улыбаюсь
Записан

Страниц: 1 [2]  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines