Поиск:

Ответ в темуСоздание новой темы Создание опроса
> SendMessage не отправляет данные - C++ WinAPI, сообщения windows 
:(
    Опции темы
evgovs1991
Дата 11.12.2017, 00:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Учусь отправлять сообщения между формами создал два простых приложения. Всё вроде правильно сделал но функции OnMyMess не активируются следственно и параметры не передаются. В чём может быть причина?



Код

//---------------------------------------------------------------------------
 
#ifndef senderH
#define senderH
#define WM_MyMess1 WM_USER
#define WM_MyMess2 WM_USER+1
#define WM_MyMess3 WM_USER+2
#define WM_MyMess4 WM_USER+3
#define WM_MyMess5 WM_USER+4
#define WM_MyMess6 WM_USER+5
//---------------------------------------------------------------------------
#include <System.Classes.hpp>
#include <Vcl.Controls.hpp>
#include <Vcl.StdCtrls.hpp>
#include <Vcl.Forms.hpp>
#include <Windows.h>
//---------------------------------------------------------------------------
class TForm3 : public TForm
{
__published:    // IDE-managed Components
    TEdit *Edit2;
    TEdit *Edit1;
    TEdit *Edit3;
    TEdit *Edit4;
    TEdit *Edit5;
    TEdit *Edit6;
private:    // User declarations
    void __fastcall OnMyMess1(TMessage &Mess);
    void __fastcall OnMyMess2(TMessage &Mess);
    void __fastcall OnMyMess3(TMessage &Mess);
    void __fastcall OnMyMess4(TMessage &Mess);
    void __fastcall OnMyMess5(TMessage &Mess);
    void __fastcall OnMyMess6(TMessage &Mess);
public:     // User declarations
    __fastcall TForm3(TComponent* Owner);
    BEGIN_MESSAGE_MAP
        MESSAGE_HANDLER(WM_MyMess1, TMessage, OnMyMess1)
        MESSAGE_HANDLER(WM_MyMess2, TMessage, OnMyMess2)
        MESSAGE_HANDLER(WM_MyMess3, TMessage, OnMyMess3)
        MESSAGE_HANDLER(WM_MyMess4, TMessage, OnMyMess4)
        MESSAGE_HANDLER(WM_MyMess5, TMessage, OnMyMess5)
        MESSAGE_HANDLER(WM_MyMess6, TMessage, OnMyMess6)
    END_MESSAGE_MAP(TForm)
};
//---------------------------------------------------------------------------
extern PACKAGE TForm3 *Form3;
//---------------------------------------------------------------------------
#endif

Код

/---------------------------------------------------------------------------
 #include <vcl.h>
#pragma hdrstop
 
#include "sender.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm3 *Form3;
//---------------------------------------------------------------------------
__fastcall TForm3::TForm3(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm3::OnMyMess1(TMessage &Mess)
{
    Edit2->Text=Mess.LParam;
}
void __fastcall TForm3::OnMyMess2(TMessage &Mess)
{
    Edit3->Text=Mess.LParam;
}
void __fastcall TForm3::OnMyMess3(TMessage &Mess)
{
    Edit4->Text=Mess.LParam;
}
void __fastcall TForm3::OnMyMess4(TMessage &Mess)
{
    Edit5->Text=Mess.LParam;
}
void __fastcall TForm3::OnMyMess5(TMessage &Mess)
{
    Edit6->Text=Mess.LParam;
}
void __fastcall TForm3::OnMyMess6(TMessage &Mess)
{
    Edit2->Text=Mess.LParam;
    int a=StrToInt(Edit3->Text);
    int b=StrToInt(Edit4->Text);
    int c=StrToInt(Edit5->Text);
    int d=StrToInt(Edit6->Text);
 
}



Код

#ifndef rH
#define rH
#define WM_MyMess1 WM_USER
#define WM_MyMess2 WM_USER+1
#define WM_MyMess3 WM_USER+2
#define WM_MyMess4 WM_USER+3
#define WM_MyMess5 WM_USER+4
#define WM_MyMess6 WM_USER+5
//---------------------------------------------------------------------------
#include <System.Classes.hpp>
#include <Vcl.Controls.hpp>
#include <Vcl.StdCtrls.hpp>
#include <Vcl.Forms.hpp>
#include <Windows.h>
//---------------------------------------------------------------------------
class TForm3 : public TForm
{
__published:    // IDE-managed Components
    TButton *Button1;
    void __fastcall Button1Click(TObject *Sender);
private:    // User declarations
public:     // User declarations
    __fastcall TForm3(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm3 *Form3;
//---------------------------------------------------------------------------
#endif


Код

#include <vcl.h>
#pragma hdrstop
 
#include "r.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm3 *Form3;
//---------------------------------------------------------------------------
__fastcall TForm3::TForm3(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm3::Button1Click(TObject *Sender)
{
    
     SendMessage( FindWindow(L"TForm3", L"Project3.exe"), WM_MyMess1, 0,1);
     SendMessage( Form3->Handle, WM_CLOSE, 0,0);    
     SendMessage( FindWindow(L"TForm3", L"Project3.exe"), WM_MyMess2, 0,2);
     SendMessage( FindWindow(L"TForm3", L"Project3.exe"), WM_MyMess3, 0,3);
           SendMessage( FindWindow(L"TForm3", L"Project3.exe"), WM_MyMess4, 0,4);
     SendMessage( FindWindow(L"TForm3", L"Project3.exe"), WM_MyMess5, 0,5);
      SendMessage( FindWindow(L"TForm3", L"Project3.exe"), WM_MyMess6, 0,6);
}
//--------------------------------------------------------------------------


PM MAIL   Вверх
xvr
Дата 11.12.2017, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



SendMessage не умеет передавать указатели между разными процесами (точнее указатели передаются, а вот то, на что они указывали - нет)
Исключение - некоторые системные сообщения.

PM MAIL   Вверх
evgovs1991
Дата 13.12.2017, 00:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(xvr @ 11.12.2017,  14:35)
SendMessage не умеет передавать указатели между разными процесами (точнее указатели передаются, а вот то, на что они указывали - нет)
Исключение - некоторые системные сообщения.

мне нужно передать просто цифры, в одном проекте работает а в этом нет

PM MAIL   Вверх
xvr
Дата 13.12.2017, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



Проверьте, что вам отдает FindWindow (в ранних версиях BCB top level окно было не окно формы, не знаю, как сейчас)


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


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

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


 




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


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

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