Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #8  
Antiguo 06-11-2012
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.610
Poder: 32
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por roman Ver Mensaje
¿Momentos antes de qué?
Momentos antes de la prueba del primer mensaje (admito que la frase fue ambigua).

Esto se explica porque para hacer superclasificación (el enlace de mi segundo mensaje), se recurre en primer lugar a la función GetClassInfo para obtener información de la clase ya registrada sobre la cual se quiere crear una "derivada". No hablo de clases de objetos propiamente, sino de lo que Microsoft llama window class en el ámbito de su sistema operativo

En Delphi, esa llamada a GetClassInfo ocurre desde el método TWinControl.CreateSubClass al crearse objetos como TEdit, TButton, TCheckBox, etcétera.

Código Delphi [-]
procedure TCustomCheckBox.CreateParams(var Params: TCreateParams);
const
  Alignments: array[Boolean, TLeftRight] of DWORD =
    ((BS_LEFTTEXT, 0), (0, BS_LEFTTEXT));
begin
  inherited CreateParams(Params);
  CreateSubClass(Params, 'BUTTON');
  with Params do
  begin
    Style := Style or BS_3STATE or
      Alignments[UseRightToLeftAlignment, FAlignment];
    WindowClass.style := WindowClass.style and not (CS_HREDRAW or CS_VREDRAW);
  end;
end;
Código Delphi [-]
procedure TButton.CreateParams(var Params: TCreateParams);
const
  ButtonStyles: array[Boolean] of DWORD = (BS_PUSHBUTTON, BS_DEFPUSHBUTTON);
begin
  inherited CreateParams(Params);
  CreateSubClass(Params, 'BUTTON');
  Params.Style := Params.Style or ButtonStyles[FDefault];
end;

Es decir, nuestro "botón de indias" Button1 es creado (al crearse el formulario, como es habitual), y luego lo presionamos con el fin de probar la función RealGetWindowClass. Pero el "daño" ya está hecho para entonces debido a lo que previamente regresó GetClassInfo, especialmente el campo lpfnWndProc de la estructura WNDCLASS. El valor de este campo queda relacionado de cierta forma con el objeto y eso es determinante, por lo que veo, para la cadena que regresa más tarde RealGetWindowClass.

El procedimiento al que apunta lpfnWndProc es uno cuando se usan "temas" y otro cuando no se usan. Tras llamar a GetClassInfo, lpfnWndProc es el Window Procedure de la clase que hemos consultado.

Perdón por tanto rollo. Cuando tenga todas las piezas veré si puedo ponerlo "en limpio".
Responder Con Cita
 



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
Probando el emsamblador de Delphi Mav API de Windows 8 28-03-2008 06:51:13
Probando el ensamblador de Delphi 2 Mav Varios 5 31-10-2007 04:15:33


La franja horaria es GMT +2. Ahora son las 12:20:09.


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