Home   Artículos   Recursos   Foros   
Artíclos recientes publicados en Latindevelopers:

Visual C++: NSDoubleEdit: Un control para el manejo de números decimales en Visual C++.
Visual C++: Implementando una Calculadora en Visual C++
Visual C++: CCommandLine: Una clase para el uso de la linea de comando
Visual C++: Una clase para el manejo del Registro


Default button

Aqui programadores en la plataforma Win32 con Visual C++ de Microsoft...

Moderador: latindeveloper

Default button

Notapor pepo el Vie Abr 20, 2007 4:16 pm

hola denuevo solo quiero saber como puedo en tiempo de ejecucion poner en default a un boton

Código: Seleccionar todo
   if(GetDlgItem(IDC_AGREGAR) == GetFocus())   
   {
      OnAgregar();
      return;
   }
   if(GetDlgItem(IDC_MODIFICAR) == GetFocus())   
   {
      OnModificar();
      return;
   }
   if(GetDlgItem(IDC_ELIMINAR) == GetFocus())   
   {
      OnEliminar();
      return;
   }
   if(GetDlgItem(IDC_VOLVER) == GetFocus())   
      CDialog::OnCancel();
   else
      GetNextDlgTabItem(GetFocus())->SetFocus();
}


lo que sucede es que el GetNextDlgTabItem(GetFocus())->SetFocus(); no entra en los (IDC_AGREGAR , IDC_MODIFICAR, etc) en algonos dialogos anda pero en otros no y no entiendo por que si alguien me puede ayudar por favor.

lo solucionaria poniendo en default button en tiempo de ejecucion. es que segun el usuario bloqueo algunos botones.

muchisimas gracias
pepo
Usuario Activo
Usuario Activo
 
Mensajes: 23
Registrado: Mar Ago 08, 2006 1:45 pm

Re: Default button

Notapor latindeveloper el Sab Abr 21, 2007 11:32 am

Si te refieres a que cuando presionas enter varias veces, pasa por alto los botones, seguramente solo quieres que suceda el cambio de foco (al presionar enter) con los controles edit, si es asi entonces utiliza este codigo

Código: Seleccionar todo
BOOL CTuDialogo::PreTranslateMessage(MSG* pMsg)
{
   if(pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_RETURN)
   {
      DWORD def_id=GetDefID();
      
      if (def_id!=0)
      {
         CWnd *wnd = FromHandle(pMsg->hwnd);
         char class_name[16];
         if (GetClassName(wnd->GetSafeHwnd(),class_name,sizeof(class_name))!=0)
         {
            if (strnicmp(class_name,"edit",5)==0 )
            {
               GetNextDlgTabItem(wnd)->SetFocus();
               return TRUE;
            }
         }
      }
   }
   return CDialog::PreTranslateMessage(pMsg);
}


Pero tienes que agregar la funcion virtual PreTranslateMessage.
Imagen
Avatar de Usuario
latindeveloper
Administrador
Administrador
 
Mensajes: 1061
Registrado: Lun Jun 02, 2003 8:29 pm
Ubicación: Peru

Notapor pepo el Mar Abr 24, 2007 6:52 pm

muchas gracias son unos maestros
pepo
Usuario Activo
Usuario Activo
 
Mensajes: 23
Registrado: Mar Ago 08, 2006 1:45 pm


Volver a Visual C++

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados

cron