Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++: WinAPI
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
lordimid
3 / 3 / 0
Регистрация: 02.10.2011
Сообщений: 104
1

Как создать собственное сообщение и послать его из одной функции окна в другую

14.10.2012, 07:40. Просмотров 1055. Ответов 6
Метки нет (Все метки)

Извиняюсь, если уже задавали этот вопрос, но похожей темы я не нашел. Как создать собственное сообщение и послать его из одной функции окна в другую. Я пытался сделать следующим образом, но судя по всему так нельзя:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#define ID_MESSAGE 10
...
...
LRESULT CALLBACK FirstWindowFunction(.....)
{
...
SendMessage(SecondWindowFunction,ID_MESSAGE,0,0);
...
}
 
LRESULT CALLBACK SecondWindowFunction(.....)
{
...
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.10.2012, 07:40
Ответы с готовыми решениями:

Как послать окну сообщение через PostMessage если нет дочернего окна
Отправляю сообщения о нажатия клавиши через PostMessage(). Для отправки эта...

Как передать сообщение из одной программы в другую?
Например , у меня есть такой кусок кода: BOOL CALLBACK fnEnumWindowProc(HWND...

Собственное визуальное оформление окна. Как правильно реализовать?
При реализации многооконного интерфейса программы, столкнулся с несколькими...

SendMessage как послать клик по координатам не активного окна или какой механизм использовать?
Уже 3 дня рою форумы но не как не могу послать клик по координатам в неактивное...

Послать сообщение элементу управления в другую программу зная его хендл
Доброго дня суток всем Разбираюсь с управлением внешней программой....

6
castaway
Эксперт С++
4930 / 3037 / 453
Регистрация: 10.11.2010
Сообщений: 11,116
Записей в блоге: 10
Завершенные тесты: 1
14.10.2012, 12:39 2
Для этого есть WM_USER, его значение 0x0400. Можно использовать диапазон от WM_USER до 0x7FFF.

Т.е. посылаешь:
C
1
SendMessage( hWnd, WM_USER + 100, (WPARAM)param0, (LPARAM)param1 );
Обрабатываешь:
C
1
2
3
4
5
6
7
8
9
10
11
    ...
    switch ( uMsg ) {
        ...
 
        case WM_USER + 100:
            ...
            break;
 
        ...
    }
    ...

http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx

Добавлено через 32 секунды
lordimid, а зачем тебе две функции окна?
2
lordimid
3 / 3 / 0
Регистрация: 02.10.2011
Сообщений: 104
15.10.2012, 07:12  [ТС] 3
Цитата Сообщение от lazybiz Посмотреть сообщение
а зачем тебе две функции окна?
Хочу сделать приложение, которое бы принимало данные по Ethernet кабелю. Для этого вторую функцию окна предполагаю полностью выделить под цикл приема сообщений. По другому, как мне кажется, не получится.
0
castaway
Эксперт С++
4930 / 3037 / 453
Регистрация: 10.11.2010
Сообщений: 11,116
Записей в блоге: 10
Завершенные тесты: 1
15.10.2012, 12:03 4
Цитата Сообщение от lordimid Посмотреть сообщение
Для этого вторую функцию окна предполагаю полностью выделить под цикл приема сообщений.
В этом нет необходимости.
Цитата Сообщение от lordimid Посмотреть сообщение
По другому, как мне кажется, не получится.
Позволь узнать, почему тебе так кажется?
0
lordimid
3 / 3 / 0
Регистрация: 02.10.2011
Сообщений: 104
15.10.2012, 12:59  [ТС] 5
Цитата Сообщение от lazybiz Посмотреть сообщение
В этом нет необходимости.
Позволь узнать, почему тебе так кажется?
Функция recv не возвращает управление, до тех пор пока не получит хоть какое-то сообщение. Выделяем для приема сообщений цикл вида:
C++
1
2
3
4
5
6
...
do{
...
recv(...)
...
}while
Этот цикл постоянно будет работать и, следовательно, обработка сообщений циклом
C++
1
2
3
...
switch(msg) 
...
, принадлежащим функции окна, невозможна. Поэтому я и решил вынести этот цикл в отдельную функцию окна. Поправь меня пожалуйста, если я что-то нецелесообразно делаю.
0
castaway
Эксперт С++
4930 / 3037 / 453
Регистрация: 10.11.2010
Сообщений: 11,116
Записей в блоге: 10
Завершенные тесты: 1
15.10.2012, 13:16 6
Может тебе просто создать отдельный поток!? То что ты хочешь сделать - не выход. Результат будет тот же.
1
lordimid
3 / 3 / 0
Регистрация: 02.10.2011
Сообщений: 104
15.10.2012, 13:28  [ТС] 7
Да действительно, это не выход. Надо что-то другое думать.
0
15.10.2012, 13:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.10.2012, 13:28

можно ли в с++ вызвать переменную из одной функции в другую т.е. мы переменну задали в одной функции а использовали в другой... и как это реализовать?
можно ли в с++ вызвать переменную из одной функции в другую т.е. мы переменну...

Как послать сообщение программе/процессу без окна?
Доброго времени суток уважаемые знатоки! Как послать сообщение...

Передача массива из одной функции в другую, и сложение его элементов.
Здравствуйте, задание: Создать две функции для работы с массивом: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru