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

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: C++, WTL и диалоговые окна  (Прочитано 29062 раз)
0 Пользователей и 1 Гость смотрят эту тему.
FantomCat
Гость
« : 29-10-2003 14:55 » 

Доброго времени суток.
Плз, помогите.
В моей проге по определенному действию должно появляться диалоговое окно с какими-то данными. И если какие-либо из данных недопустимы, то возле них должна появляться какая-то бросающаяся картинка. Так вот класс диалога наследуется от CDialogImpl а в ресурсе диалога (IDD_DIALOG1) у меня есть элемент picture (IDC_STATIC). Мне все равно, будет это иконка, бмп-шка или rectangle, в котором я буду что-то рисовать... Но я никак не могу изменить этого. А мне подойдет даже прятать иконку....
Но почему-то не получается. Получаю HWND этого элемента, но ни на какие сообщения нету реакции....даже на WM_DESTROY 8-(.

Плз, киньте кусочек кода, если кто это проходил , или идеи... Очень-очень буду ждать.
Записан
SOS
Гость
« Ответ #1 : 12-11-2003 15:11 » 

1. A pochmu CDialogImpl a ne CDialog ??
2. Nado bi pomenyat' imya controla s IDC_STATIC na chtoto bolee unikal'noe,
    naprimer IDC_STATIC_ICON11, a to IDC_STATIC mozet bit' neskol'ko.
3. A zapuskaesh li ti UpdateData(FALSE); posle izmeneniya controla Не понял
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #2 : 12-11-2003 16:44 » 

FantomCat, SOS,
1. Вопрос действительно интересен!!! Почмеу такой контроль.
2. Поменять надо, но дело не в том, что их будет несколько, а в том, что в этом случае ты можешь сделать MemberVariable и обращаться к нему так.
А через HWND в MFC надо
:: SendMessage()
обязательно так писать - иначе проблемки с вызовом от API функции бывают.
В любом случае статик контроли нормально воспринимают сообщения. Вопрос то ли ты окно находишь.

3. Это не нужно делать если идет прямое обращение.
Записан

А птичку нашу прошу не обижать!!!
SOS
Гость
« Ответ #3 : 12-11-2003 16:56 » 

Soglasen Отлично
Записан
Джон
просто
Администратор

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

« Ответ #4 : 13-11-2003 10:16 » 

FantomCat Эт ник у тебя такой, "незаметный"  Ага  - кошечка, да ещё и фантом. Ну как тут заметить? Ага Так что за опоздание - сорри. Если ещё актуально - так можно сделать с иконками:

В классе диалога вставляй :
Код:

              CStatic m_MyStatic;
ID дай статику отличное от IDC_STATIC - это стандартный ID для ВСЕХ статиков,
например IDC_MYSTATIC.

При инициаллизации диалога:
Код:
LRESULT OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/,
                        LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
m_MyStatic = GetDlgItem(IDC_MYSTATIC);

                // первоначальная инициаллизация, потом в другом месте надо эти
                // строчки повторить с другим ID для иконки, чтоб её поменять
                //  например IDR_ICON_ERROR
HICON hIcon = ::LoadIcon(_Module.GetResourceInstance(),
                                              MAKEINTRESOURCE(IDR_MYICON_DEFAULT));
m_MyStatic.SetIcon(hIcon);

CenterWindow(GetParent());
return TRUE;
}
// смена иконки:
Код:
HICON hIcon = ::LoadIcon(_Module.GetResourceInstance(),
                   MAKEINTRESOURCE(IDR_ICON_ERROR));
m_MyStatic.SetIcon(hIcon);
« Последнее редактирование: 20-11-2007 18:14 от Алексей1153++ » Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"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."
Pu
Большой босс

ru
Offline Offline
78


« Ответ #5 : 14-03-2012 10:19 » 

Джон,  спасибо! вот только что мне твой совет помог Улыбаюсь. Не прошло и 10 лет.
Записан

Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать.
(с) Артур Джонс
Джон
просто
Администратор

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

« Ответ #6 : 14-03-2012 12:09 » 

Так WTL ещё жива? Я думал после C# про неё уже все давно забыли. Я-то точно основательно подзабыл, а ведь когда-то без неё как без рук.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"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."
Pu
Большой босс

ru
Offline Offline
78


« Ответ #7 : 14-03-2012 13:45 » 

я пользуюсь. ибо у меня основной проект на нем построен. по сравнению с С#, приложение достаточно легкое и воздушное. ну и не вижу смысла переделывать.

Добавлено через 2 минуты и 46 секунд:
да и кудыж оно денется? содепрожект кодегуру кодезон ну и еще несколько ресурсов живы. пользуйся не хача Улыбаюсь мне дык всеж ближе под винды если даже то писать на апи, а втл для меня самое то - легкая обертка.
« Последнее редактирование: 14-03-2012 13:48 от Pu » Записан

Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать.
(с) Артур Джонс
Джон
просто
Администратор

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

« Ответ #8 : 14-03-2012 14:19 » 

Да уж WTL это весчь. Одни приятные воспоминания.
Посмотри тут, если ещё не знаешь. Парнишка тоже фан WTL, много интересных решений.
http://www.viksoe.dk/code/all_wtl.htm
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"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."
Pu
Большой босс

ru
Offline Offline
78


« Ответ #9 : 15-03-2012 08:32 » 

у меня половина контролов отсюда использована. Ага один из основных ресурсов, того что надо.
Записан

Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать.
(с) Артур Джонс
Джон
просто
Администратор

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

« Ответ #10 : 15-03-2012 10:30 » 

Эт точно.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"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


« Ответ #11 : 16-03-2012 03:45 » 

А я даже не в курсе,что это Улыбаюсь Я как всегда, короче ((
Записан

Pu
Большой босс

ru
Offline Offline
78


« Ответ #12 : 16-03-2012 07:19 » 

Леш, эт та же мфц. только легкае и воздушнае. Ага мфц же если протрейсить один хер упираеца в винапи. то же делает и втл, только совершенно напрямую, а не через жпе, как  мфц. Улыбаюсь
а если посмотреть на состав классов втл, то натыкаемся на множество повторений мфцшных классов. те же cstring cpoint cdc cpaintdc cwindow cedit cstatic...........
« Последнее редактирование: 16-03-2012 07:22 от Pu » Записан

Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать.
(с) Артур Джонс
Алексей++
глобальный и пушистый
Глобальный модератор

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


« Ответ #13 : 16-03-2012 07:25 » 

так я ж не спорю, просто не сталкивался. А как он устанавливается ?
Записан

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

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

« Ответ #14 : 16-03-2012 10:32 » 

Лёш, всё очень просто - если MFC это обёртка для Win API, то WTL это обёртка для ATL. Толко сходство имён с MFC у них чисто символическое, та же CString. Имя такое же, а начинка совсем другая. Правда, в последних версиях MFC тоже перевёл стрку на ATL.
У неё одни шаблоны, практически нет ни одного нормального класса и как она любит множественное наследование, порой список базовых классов занимет несколько строчек. Отсюда нет никакой необходимости устанавливать какие-то доп. библиотеки. Приложения получаются маленькими компактными с минимумом зависимостей. Сгрузи пару экзешников с сайта выше и посмотри их Depends-ом.

Устанавливается (раньше) с SDK платформой, там галочка была. Позднее, наверное, самостоятельный инсталлятор. Тут Pu лучше знает, раз ещё с ней работает.
« Последнее редактирование: 16-03-2012 10:34 от Джон » Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"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


« Ответ #15 : 16-03-2012 17:07 » 

я и ATL не пользовался )))
Записан

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

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

« Ответ #16 : 16-03-2012 17:19 » 

Зря, как говорится, в этой жизни необходимо всё попробовать. Ага
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"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


« Ответ #17 : 16-03-2012 17:20 » 

так я ж не знал, что ими надо пользоваться!
Записан

Pu
Большой босс

ru
Offline Offline
78


« Ответ #18 : 20-03-2012 08:59 » 

устанавливается так, я брал просто архив WTL версии 8 на настоящий момент. из архива все include копировал в VS в директорию x:\PF\VS\VC\atlmfc\include.  визард копировал в директорию ....\VC\VCWizard\wtl\... и запускал в ней жава файл инсталятора визарда. Ну а потом берем с ресурсов выше любой пример и смотрим как что работает.
Записан

Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать.
(с) Артур Джонс
Алексей++
глобальный и пушистый
Глобальный модератор

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


« Ответ #19 : 06-09-2012 05:30 » 

Pu, таки столкнулся с этим WTL, суть вроде понял )  А также заодно потрахался с переопределением оконной процедуры. И понял, почему MFC гораздо удобнее Улыбаюсь А статически прилинковать мфсишную библиотеку - ну что за проблема ? Ровно одна галочка в настройках.
Записан

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

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

« Ответ #20 : 06-09-2012 07:47 » 

Лёш, а ты размеры результатов сравни. Ага
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"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


« Ответ #21 : 06-09-2012 07:54 » 

ну да, разница на аж 114 килобайт! Улыбаюсь)

да кого это сейчас заботит ? Улыбаюсь
Записан

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

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

« Ответ #22 : 06-09-2012 14:08 » 

Да какие 114 кБ!!! Лёш, ну-ка покажи мне вот такую вот прожку со статическим MFC размером 124 кБ. Слабо? Ага


* UITest.exe (124 Кб - загружено 1025 раз.)
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"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


« Ответ #23 : 10-09-2012 11:50 » 

Джон, Джон, я сравнил вот что: маленькую программку с WTL и программку побольше с MFC - первые попавшиеся. Этого достаточно на мой взгляд )

ну даже если на мегабайт будет побольше - ну кого это взволнует ?
Записан

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

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines