Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-10-2014
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.210
Poder: 22
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Los mensajes de usuario comienzan a partir del WM_USER, sirven para crear tus propios mensajes.

Cuando tenga un rato miro ese código.


Saludos.
Responder Con Cita
  #2  
Antiguo 01-10-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola aguml.

Creo que lo complicas usando WndProc para capturar el mensaje, es mas simple:

Emisor:
codigo
Código PHP:
...
void wmCopyData(charWndClasscharWndTitlecharmsg
{
  
HANDLE hRecept;
  
COPYDATASTRUCT cds;

  
hRecept FindWindow(WndClassWndTitle);
  if (
hRecept != 0) {
    
cds.dwData 0;
    
cds.cbData strlen(msg)+1;
    
cds.lpData = (char*)msg;
    
SetForegroundWindow(hRecept);
    
SendMessage(hReceptWM_COPYDATA0, (LPARAM)& cds);
  } else
    
MessageBox(0,"Receptor no encontrado",""MB_ICONERROR);
}

// ej. envio 
void __fastcall TfrmSender::Button1Click(TObject *Sender)
{
 
wmCopyData("TfrmReceiver""Receiver"Edit1->Text.c_str());

Receptor:
header
Código PHP:
...
class 
TfrmReceiver : public TForm
{
__published:

private:
  
void __fastcall OnWMCopyData(TWMCopyDatamsg);

protected:
  
BEGIN_MESSAGE_MAP
    MESSAGE_HANDLER
(WM_COPYDATATWMCopyDataOnWMCopyData)
  
END_MESSAGE_MAP(TForm)

public:
  
__fastcall TfrmReceiver(TComponentOwner);
};
... 
codigo
Código PHP:
...
void __fastcall TfrmReceiver::OnWMCopyData(TWMCopyDatamsg)
{
  
ShowMessage("Mensaje recibido: " String((char*)msg.CopyDataStruct->lpData));
}
... 
Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 01-10-2014 a las 02:13:09.
Responder Con Cita
  #3  
Antiguo 01-10-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 14
aguml Va por buen camino
Ok, cambiado.
Con respecto a lo que hago para gestionar lo del CheckBox ¿como lo ves? ¿como lo mejorarías? Es que acabo de aprender lo de cambiar el WndProc y lo aplico a todo jejeje
Responder Con Cita
  #4  
Antiguo 01-10-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola aguml.

No estoy diciendo que esté mal usar WndProc, lo que sucede es que Builder ya tiene definido ese mensaje y te evitas la comprobación de si el mensaje fué otro.

A ver si este ejemplo te dá otra idea... En el form emisor pone un TButton y un TCheckBox y en el receptor tres TCheckBox (CheckBox1, CheckBox2 y CheckBox3) .

Emisor:
Código PHP:
...
struct data_struct {
  
char className[255];
  
char caption[255];
  
int xy;
  
TColor color;
  
bool state;
ds;

void __fastcall TfrmSender::Button1Click(TObject *Sender)
{
  
HANDLE hRecept FindWindow("TfrmReceiver""Receiver");
  if (
hRecept != 0) {
    
COPYDATASTRUCT cds;
    
strcpy(ds.className"TCheckBox");  
    
strcpy(ds.caption,"CheckBox2");     
    
ds.50;
    
ds.30;
    
ds.color clYellow;
    
ds.state CheckBox1->Checked;
    
cds.dwData 0;
    
cds.cbData sizeof(ds);
    
cds.lpData = &ds;
    
ShowWindow(hReceptSW_SHOW);
    
SetForegroundWindow(hRecept);
    
SendMessage(hReceptWM_COPYDATA0, (LPARAM)& cds);
  } else
    
MessageBox(0,"Receptor no encontrado",""MB_ICONERROR);

Receptor:

header
Código PHP:
class TfrmReceiver : public TForm
{
__published:
  
TCheckBox *CheckBox1;
  
TCheckBox *CheckBox2;
  
TCheckBox *CheckBox3;

private:
  
void __fastcall OnWMCopyData(TWMCopyDatamsg);

protected:
  
BEGIN_MESSAGE_MAP
    MESSAGE_HANDLER
(WM_COPYDATATWMCopyDataOnWMCopyData)
  
END_MESSAGE_MAP(TForm)

public:
  
__fastcall TfrmReceiver(TComponentOwner);
}; 
code
Código PHP:
struct data_struct {
  
char className[255];
  
char caption[255];
  
int xy;
  
TColor color;
  
bool state;
ds;

void __fastcall TfrmReceiver::OnWMCopyData(TWMCopyDatamsg)
{
  
memcpy(&dsmsg.CopyDataStruct->lpDatasizeof(data_struct));

  for(
int i 0ComponentCounti++) {
    
TCheckBox *cb static_cast<TCheckBox*>(Components[i]);
    if (
cb->ClassNameIs(ds.className) && cb->Caption == ds.caption) {
      
cb->Left    ds.x;
      
cb->Top     ds.y;
      
cb->Color   ds.color;
      
cb->Checked ds.state;
    }
  }

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 01-10-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 14
aguml Va por buen camino
Guauuu pues si que es potente este método.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Se Pierde la Selección del CheckBox al Cerrar la Aplicación Luis.Lapuente Varios 3 11-09-2014 22:42:24
Cómo hago una aplicación que oculte otra aplicación en ejecución? DSK25 C++ Builder 3 11-01-2014 18:24:53
Cómo cerrar otra aplicacion desde mi aplicacion en Delphi 7 Gaby123 API de Windows 5 04-01-2007 22:44:51
problemas al integrar una aplicación dentro de otra aranel Varios 1 23-10-2005 01:40:00
Problemas guardar cambios en dbgrid con checkbox toorbye Conexión con bases de datos 0 22-09-2005 14:09:13


La franja horaria es GMT +2. Ahora son las 20:06:54.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi