Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++ и WinAPI

Войти
Регистрация
Восстановить пароль
 
lordimid
3 / 3 / 0
Регистрация: 02.10.2011
Сообщений: 98
#1

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

14.10.2012, 07:40. Просмотров 984. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как создать собственное сообщение и послать его из одной функции окна в другую (C++ WinAPI):

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

Как передать сообщение из одной программы в другую? - C++ WinAPI
Например , у меня есть такой кусок кода: BOOL CALLBACK fnEnumWindowProc(HWND hwnd,LPARAM lParam){ fprintf(stdout,"%8.8x\n",...

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

SendMessage как послать клик по координатам не активного окна или какой механизм использовать? - C++ WinAPI
Уже 3 дня рою форумы но не как не могу послать клик по координатам в неактивное окно к примеру пэинт. Перепробовал куча вариантов и...

Как послать сообщение потоку? - C++ WinAPI
Возможно ли как - то послать SendMessage потоку? Или же это messages только для окон? Если нельзя, то может есть другие способы не явного...

Послать сообщение элементу управления в другую программу зная его хендл - Visual Basic
Доброго дня суток всем Разбираюсь с управлением внешней программой. Разобрался с заполнением текстовых полей, нажатием на кнопки (опции...

6
castaway
Эксперт С++
4920 / 3028 / 372
Регистрация: 10.11.2010
Сообщений: 11,085
Записей в блоге: 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
Сообщений: 98
15.10.2012, 07:12  [ТС] #3
Цитата Сообщение от lazybiz Посмотреть сообщение
а зачем тебе две функции окна?
Хочу сделать приложение, которое бы принимало данные по Ethernet кабелю. Для этого вторую функцию окна предполагаю полностью выделить под цикл приема сообщений. По другому, как мне кажется, не получится.
0
castaway
Эксперт С++
4920 / 3028 / 372
Регистрация: 10.11.2010
Сообщений: 11,085
Записей в блоге: 10
Завершенные тесты: 1
15.10.2012, 12:03 #4
Цитата Сообщение от lordimid Посмотреть сообщение
Для этого вторую функцию окна предполагаю полностью выделить под цикл приема сообщений.
В этом нет необходимости.
Цитата Сообщение от lordimid Посмотреть сообщение
По другому, как мне кажется, не получится.
Позволь узнать, почему тебе так кажется?
0
lordimid
3 / 3 / 0
Регистрация: 02.10.2011
Сообщений: 98
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
Эксперт С++
4920 / 3028 / 372
Регистрация: 10.11.2010
Сообщений: 11,085
Записей в блоге: 10
Завершенные тесты: 1
15.10.2012, 13:16 #6
Может тебе просто создать отдельный поток!? То что ты хочешь сделать - не выход. Результат будет тот же.
1
lordimid
3 / 3 / 0
Регистрация: 02.10.2011
Сообщений: 98
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
Привет! Вот еще темы с ответами:

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

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

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

Как послать сообщение одному компьютеру в сети зная только его номер - Visual Basic
Как послать сообщение одному компьютеру в сети зная только его номер (Номер IPX по-моему)


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

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

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