Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> SendMessage: возвращяемое значение 
V
    Опции темы
Alca
Дата 24.7.2009, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 5
Всего: 50



Что-то я не нашел в MSDN, что должна возвращять эта функция при успешном и при неудачном выполнении.
Как узнать какое значение говорит о том, что функция выполнилась не удачно?
Остается только ::GetLastError()?
http://msdn.microsoft.com/en-us/library/ms644950(VS.85).aspx



--------------------
PM WWW ICQ Skype Jabber   Вверх
SVN74
Дата 24.7.2009, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 5.5.2008
Где: Комсомольск на Дн епре

Репутация: нет
Всего: 18



Если  ( != 0 )  - неудача
PM MAIL WWW   Вверх
S.A.G.
Дата 24.7.2009, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


не эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1339
Регистрация: 20.7.2006
Где: in ad equate

Репутация: нет
Всего: 19



Alca, попробуй отправить сообщение с заведомо неправильными параметрами и посмотри на возвращаемое значение.

Это сообщение отредактировал(а) S.A.G. - 24.7.2009, 17:49


--------------------
Вот она задачка: спасти себя от себя самого © Cube
Sometimes good people do evil things © A Simple Plan
PM   Вверх
Alca
Дата 24.7.2009, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 5
Всего: 50



Цитата

Если  ( != 0 )  - неудача

нифига подобного
Цитата

Alca, попробуй отправить сообщение с заведомо неправильными параметрами и посмотри на возвращаемое значение.

Те сообщения, которые отрабатываются правильно могут возвращять как нуль так и не нуль.
::GetLastError() всегда выдает "0".
 smile

Добавлено через 5 минут и 27 секунд
Код

BOOL bSendMessage(UINT uiMsg, WPARAM wParam, LPARAM lParam) {
    assert(NULL != _m_hWnd);

    BOOL bRes = FALSE;

    bRes = (BOOL)::SendMessage(_m_hWnd, uiMsg, wParam, lParam);
    assert(TRUE/*FALSE*/ == bRes); 
    //DWORD le = ::GetLastError();

    return bRes;
}


Это сообщение отредактировал(а) Alca - 24.7.2009, 17:54


--------------------
PM WWW ICQ Skype Jabber   Вверх
SVN74
Дата 24.7.2009, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 5.5.2008
Где: Комсомольск на Дн епре

Репутация: нет
Всего: 18



Цитата(Alca @  24.7.2009,  17:53 Найти цитируемый пост)
Цитата

Alca, попробуй отправить сообщение с заведомо неправильными параметрами и посмотри на возвращаемое значение.



Те сообщения, которые отрабатываются правильно могут возвращять как нуль так и не нуль.
::GetLastError() всегда выдает "0".
 

Правильно, GetLastError не связан с SendMessage, - тут только бывает два ответа 0 или ...
Я же приводил недавно в разделе (Builder) рабочий пример...

PM MAIL WWW   Вверх
Alca
Дата 24.7.2009, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 5
Всего: 50



Так, что шансов нет?


--------------------
PM WWW ICQ Skype Jabber   Вверх
GremlinProg
Дата 24.7.2009, 23:12 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



Цитата(Alca @  24.7.2009,  19:38 Найти цитируемый пост)
Что-то я не нашел в MSDN, что должна возвращять эта функция при успешном и при неудачном выполнении

это функция просто передает сообщение в процедуру окна,
результат зависит от того, что возвращает эта процедура окна

соответственно, если происходит какая-либо ошибка в процедуре окна,
то там она и фиксируется

каждый оконный класс вправе определять для себя любые возвращаемые значения,
и, как правило, это документируется

к примеру: у list box'а сообщения в основном возвращаются с индексами списка,
а LB_ERR на возврате определяет, что произошла ошибка

обычно в документации к сообщениям пишется, может-ли вернуться ошибка, и в чем она выражается
это и есть результат, который вернется из SendMessage

просто смотри в секцию Return Value,
примеры:
Цитата(MSDN)

.....
Return Value
Returns nonzero if the operation was successful, or zero otherwise.
.....
Return Value
Returns the handle to the edit control if successful, or NULL otherwise.
.....
Return Value
Returns TRUE if successful, or FALSE otherwise.
.....



--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
Alca
Дата 24.7.2009, 23:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 5
Всего: 50



GremlinProg, спасибо  smile 


--------------------
PM WWW ICQ Skype Jabber   Вверх
Jkyskienuh
Дата 12.12.2020, 06:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 11.12.2020

Репутация: нет
Всего: нет




Модератор: Сообщение скрыто.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.1255 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.