Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

DDX или SendMessage(, WM_GETTEXT,,)

284
12 февраля 2007 года
michael_is_98
587 / / 25.02.2005
Обратил внимание, что при конструировании диалогов MFC для получения текстов в едитах используется функция DDX_Control. Но ведь можно получить содержимое едита и вручную - через SendMessage(,WM_GETTEXT,,)
Так в чем отличие и что лучше использовать?
395
12 февраля 2007 года
RelB
367 / / 09.11.2002
Цитата: michael_is_98
Обратил внимание, что при конструировании диалогов MFC для получения текстов в едитах используется функция DDX_Control. Но ведь можно получить содержимое едита и вручную - через SendMessage(,WM_GETTEXT,,)
Так в чем отличие и что лучше использовать?

А зачем тогда вообще MFC использовать? Можно ведь в чистом WinAPI писать...

Или вообще зачем нужны компиляторы? Можне же сразу опкодами в блокноте писать... :)

284
12 февраля 2007 года
michael_is_98
587 / / 25.02.2005
есть конкретная инструкция DDX_Control, а есть SendMessage(,WM_GETTEXT,,).
Работая на чистом API программист может не использовать возможности ООП, а MFC построен на идеях ООП (правда все же в STL это выглядит более "красивее").
Просто работаю с MFC без использования "мастеров","вручную", поэтому привык забирать текст через SendMessage(,WM_GETTEXT,,).
395
12 февраля 2007 года
RelB
367 / / 09.11.2002
Цитата: michael_is_98
есть конкретная инструкция DDX_Control, а есть SendMessage(,WM_GETTEXT,,).
Работая на чистом API программист может не использовать возможности ООП, а MFC построен на идеях ООП (правда все же в STL это выглядит более "красивее").
Просто работаю с MFC без использования "мастеров","вручную", поэтому привык забирать текст через SendMessage(,WM_GETTEXT,,).

DDX для того и сделан, чтобы облегчить обмен данными между котролами и переменными.
Если делать через SendMessage, то придется писать "кучу" кода для выделения памяти, запихивание этих всех параметров в мессагу и т.п. Гораздо же удобнее написать:

 
Код:
CString str;
   m_edit.GetWindowText(str);

Плюс к этому, происходят нужные проверки и т.п. Также мне не понятно до конца, зачем использовать SendMessage вообще если есть функция именно для этого предназначенные???? GetWindowTextLength/GetWindowText :)
Ааа, я понял, наверное чтобы работало быстрее, потому как в итоге все сводится к SendMessage :)
355
12 февраля 2007 года
<SCORP>
786 / / 21.10.2006
чтобы работало быстрее, пользуйте не DDX_Control, a DDX_Text. сам едит-то редко нужен. чаще только его текст
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог