Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2013, 16:25   #1
impeee
Пользователь
 
Регистрация: 11.09.2013
Сообщений: 56
По умолчанию WinAPI функции срабатывают не везде

Почему такой вот код:

Код:
var 
  h:HWND;
begin
  MessageBox(h,'asd','asd',0);
  SendMessage(h, WM_CLOSE, WM_CLOSE, 0);
end;
работает не во всех процедурах? если это вставить в OnClick кнопки - сообщение MessageBox закрывается, а в каких-то других процедурах уже нет..
impeee вне форума Ответить с цитированием
Старый 17.12.2013, 16:31   #2
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,859
По умолчанию

Цитата:
Сообщение от impeee Посмотреть сообщение
Почему такой вот код:

Код:
var 
  h:HWND;
begin
  MessageBox(h,'asd','asd',0);
  SendMessage(h, WM_CLOSE, WM_CLOSE, 0);
end;
работает не во всех процедурах? если это вставить в OnClick кнопки - сообщение MessageBox закрывается, а в каких-то других процедурах уже нет..
А почему он вообще должен работать если в h мусор?
northener вне форума Ответить с цитированием
Старый 17.12.2013, 16:36   #3
impeee
Пользователь
 
Регистрация: 11.09.2013
Сообщений: 56
По умолчанию

Цитата:
Сообщение от northener Посмотреть сообщение
А почему он вообще должен работать если в h мусор?
простите. ну в смысле h находится FindWindow, при условии что хэндл известен
impeee вне форума Ответить с цитированием
Старый 17.12.2013, 16:43   #4
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,859
По умолчанию

Цитата:
Сообщение от impeee Посмотреть сообщение
простите. ну в смысле h находится FindWindow, при условии что хэндл известен
Чей хэндл известен? Кому должно посылаться сообщение WM_CLOSE? И при чем тут закрытие MessageBox'а?
northener вне форума Ответить с цитированием
Старый 17.12.2013, 16:47   #5
impeee
Пользователь
 
Регистрация: 11.09.2013
Сообщений: 56
По умолчанию

Цитата:
Сообщение от northener Посмотреть сообщение
Чей хэндл известен? Кому должно посылаться сообщение WM_CLOSE? И при чем тут закрытие MessageBox'а?
вы бы просто на вопрос ответили, по каким причинам может происходить не выполнение данного кода в некоторых процедурах, почему такое может происходить? без конкретики
impeee вне форума Ответить с цитированием
Старый 17.12.2013, 16:48   #6
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,442
По умолчанию

Цитата:
SendMessage(h, WM_CLOSE, WM_CLOSE, 0);
нет такой группы комманд как WM_CLOSE. Да и сам MW_CLOSE рассылать не комильфо.

Правильнее так:
Цитата:
SendMessage(h,WM_SYSCOMMAND,SC_CLOS E,0);
Человек_Борща вне форума Ответить с цитированием
Старый 17.12.2013, 16:52   #7
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,859
По умолчанию

Цитата:
вы бы просто на вопрос ответили, по каким причинам может происходить не выполнение данного кода в некоторых процедурах
Как можно просто ответить на вопрос "почему бред сивой кобылы иногда что-то делает, а иногда нет?"
northener вне форума Ответить с цитированием
Старый 17.12.2013, 16:56   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
вы бы просто на вопрос ответили
Messagebox это же модальное окно. Оно замораживает поток. Так что пока ручками не закроешь его все что после этой команды выполнятся не будет ожидая реакции юзера. SendMessage в данном случае бесполезен. Он будет выполнен только после закрытия мессаджа
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.12.2013, 17:26   #9
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,759
По умолчанию

Да он будет выполнен в никуда, т.к. h - это мусор, а не HWnd MessageBox'a. Ведь h ничего не присваивается.
FaTaL вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Срабатывают блокировки Fezdipekla Microsoft Office Access 0 16.01.2011 10:22
WinAPI работа с памятью (буквально 2 функции) demonitros Помощь студентам 0 05.01.2011 21:56
Калькулятор успользующий winapi функции и canvas Dr.Win32 Софт 11 21.06.2010 17:09
WinAPI функции AidarBik Win Api 3 16.06.2007 17:03