elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Borra textos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Borra textos  (Leído 1,636 veces)
CBFD

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Borra textos
« en: 27 Julio 2016, 12:46 pm »

Hola que tal:

Estoy intentando crear ventanas hijas que escriban textos en otras ventanas con una clase, el problema que tengo es que cuando termina de escribir todas las ventanas refresco la ventana madre y entonces se borran todos los textos de las ventanas quedando estas.
Estoy haciendo todo tipo de pruebas trabajo con Code:Blocks y haciendo el debug cuando paro entre impresiones si me las pone pero luego cuando finaliza la función y refresca la ventana donde van desaparecen y quedan las ventanas sin textos.

La función que solicita las ventanas y la clase que las crea son :

Código
  1.  
  2. Funcion
  3.  
  4. void Pantalla()
  5. {
  6. TSay oSay = TSay();
  7.   oPan4     = oSay.Crear(hInstance,  10*TamPan, 30*TamPan, wtex000, oDlgwVen, oFont, escri1, fondo2,1020*TamPan, 77*TamPan, 0, 0, "oPan4");
  8.   oPan401   = oSay.Crear(hInstance,  25*TamPan,340*TamPan, wtex001, oPan4   , oFon3, escri3, fondo1, 630*TamPan, 30*TamPan, 1, 1, "oPan401");
  9.   oMenPan   = oSay.Crear(hInstance,  95*TamPan, 30*TamPan, wtex000, oDlgwVen, oFont, escri3, fondo1, 245*TamPan,555*TamPan, 0, 0, "oMenPan");
  10.   oMenPan01 = oSay.Crear(hInstance,  22*TamPan, 30*TamPan, wtex002, oMenPan , oFont, escri1, fondo1, 200*TamPan, 28*TamPan, 0, 0, "oMenPan01");
  11.   oMenPan02 = oSay.Crear(hInstance,  52*TamPan, 30*TamPan, wtex003, oMenPan , oFont, escri1, fondo1, 200*TamPan, 28*TamPan, 0, 0, "oMenPan02");
  12.   oMenPan03 = oSay.Crear(hInstance,  82*TamPan, 30*TamPan, wtex004, oMenPan , oFont, escri1, fondo1, 200*TamPan, 28*TamPan, 0, 0, "oMenPan03");
  13.   oMenPan04 = oSay.Crear(hInstance, 112*TamPan, 30*TamPan, wtex008, oMenPan , oFont, escri1, fondo1, 200*TamPan, 28*TamPan, 0, 0, "oMenPan04");
  14.   oMenPan05 = oSay.Crear(hInstance, 142*TamPan, 30*TamPan, wtex009, oMenPan , oFont, escri1, fondo1, 200*TamPan, 28*TamPan, 0, 0, "oMenPan05");
  15.   oMenPan06 = oSay.Crear(hInstance, 172*TamPan, 30*TamPan, wtex010, oMenPan , oFont, escri1, fondo1, 200*TamPan, 28*TamPan, 0, 0, "oMenPan06");
  16.   oMenPan07 = oSay.Crear(hInstance, 202*TamPan, 30*TamPan, wtex011, oMenPan , oFont, escri1, fondo1, 200*TamPan, 28*TamPan, 0, 0, "oMenPan07");
  17.   oMenPan08 = oSay.Crear(hInstance, 232*TamPan, 30*TamPan, wtex012, oMenPan , oFont, escri1, fondo1, 200*TamPan, 28*TamPan, 0, 0, "oMenPan08");
  18.   oMenPan09 = oSay.Crear(hInstance, 262*TamPan, 30*TamPan, wtex013, oMenPan , oFont, escri1, fondo1, 200*TamPan, 28*TamPan, 0, 0, "oMenPan09");
  19.   oPant     = oSay.Crear(hInstance,  95*TamPan,300*TamPan, wtex001, oDlgwVen, oFont, escri1, fondo2, 750*TamPan,555*TamPan, 1, 0, "oPant");
  20.   oPan2     = oSay.Crear(hInstance, 117*TamPan, 30*TamPan, wtex001, oDlgwVen, oFont, escri1, fondo2, 280*TamPan, 25*TamPan, 0, 0, "oPan2");
  21. }
  22.  
  23. Clase
  24.  
  25. #if !defined(TSAY)
  26.    #define TSAY
  27.  
  28.    #include <windows.h>
  29.  
  30.    WNDCLASS   wc;
  31.    HWND       vHij;
  32.  
  33. const char* pint;
  34. HFONT       letr;
  35.    COLORREF    escr;
  36.    double      x_tamX;
  37. double      x_tamY;
  38. int         alin;
  39.  
  40.    class TSay
  41.    {
  42.    protected:
  43.        static LRESULT CALLBACK WinProc(HWND vHij, UINT msg, WPARAM wParam, LPARAM lParam)
  44.        {
  45.         HDC dc;
  46.     PAINTSTRUCT ps;
  47.     RECT rc;
  48.     int text;
  49.     HGDIOBJ old;
  50.  
  51.         switch(msg)
  52.            {
  53.             case WM_PAINT:
  54.             dc  = GetDC(vHij);
  55.             dc = BeginPaint (vHij, &ps);
  56.             SetRect (&rc, 2, 3, x_tamX-4, x_tamY-6);
  57.             SetBkMode    (dc, escr);
  58.             SetTextColor (dc, escr);
  59.             old = SelectObject(dc, letr);
  60.             switch (alin)
  61.             {
  62.             case 0:
  63.             text = DrawTextA(dc, pint, -1, &rc, WS_BORDER | DT_LEFT | DT_VCENTER);
  64.             break;
  65.             case 1:
  66.             text = DrawTextA(dc, pint, -1, &rc, WS_BORDER | DT_CENTER | DT_VCENTER);
  67.             break;
  68.             case 2:
  69.             text = DrawTextA(dc, pint, -1, &rc, WS_BORDER | DT_RIGHT | DT_VCENTER);
  70.             break;
  71.             }
  72.             SelectObject(dc, old);
  73.             ReleaseDC(vHij, dc);
  74.             DeleteObject(old);
  75.             EndPaint (vHij, &ps);
  76.             break;
  77.                case WM_DESTROY:
  78.                    PostQuitMessage(0);
  79.                    break;
  80.                default:
  81.                    return DefWindowProc(vHij, msg, wParam, lParam);
  82.            }
  83.            return 0;
  84.        }
  85.    public:
  86.        TSay()
  87.        {
  88.        }
  89.        ~TSay()
  90.        {
  91.        }
  92.        HWND Crear(HINSTANCE hIns,double posX, double posY, const char *pint, HWND vent, HFONT letr, COLORREF escr, COLORREF fond, double tamX, double tamY, int bord, int alin, const char *cVen)
  93.        {
  94. WNDCLASSEX WndClass;
  95.  
  96. WndClass.cbSize = sizeof(WNDCLASSEX);
  97. WndClass.style = 0;
  98. WndClass.lpfnWndProc = WinProc;
  99. WndClass.cbClsExtra = 0;
  100. WndClass.cbWndExtra = 0;
  101. WndClass.hInstance = hIns;
  102. WndClass.hIcon = NULL;
  103. WndClass.hIconSm = NULL;
  104. WndClass.hCursor = LoadCursor(0, IDC_ARROW);
  105. WndClass.hbrBackground = (HBRUSH)CreateSolidBrush(fond);
  106. WndClass.lpszMenuName = 0;
  107. WndClass.lpszClassName = cVen;
  108.  
  109. RegisterClassEx(&WndClass);
  110.  
  111. DWORD hPen;
  112. if (bord == 1)
  113. hPen = WS_BORDER | WS_CHILD| WS_VISIBLE;
  114. else
  115. hPen = WS_CHILD| WS_VISIBLE;
  116.  
  117.   int x_posX = (int)posX;
  118. int x_posY = (int)posY;
  119. int x_tamX = (int)tamX;
  120. int x_tamY = (int)tamY;
  121.  
  122. vHij = CreateWindow(
  123. cVen,
  124. "TSay",
  125. hPen,
  126.    x_posY,
  127.    x_posX,
  128.    x_tamX,
  129.    x_tamY,
  130. vent,
  131.    NULL,
  132.    hIns,
  133.    NULL);
  134.  
  135. return vHij;
  136. }
  137. };
  138. #endif // TSAY
  139.  
  140.  


Alguna ayuda por favor.

Os dejo las imágenes de cuando estoy haciendo el debug :



y cuando termina la función y refresca la pantalla:



Un saludo y gracias.

Carlos


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
BUSCA Y BORRA
Programación Visual Basic
satanico88 0 1,768 Último mensaje 24 Julio 2005, 03:08 am
por satanico88
borra post « 1 2 »
GNU/Linux
--bl455-- 13 8,330 Último mensaje 18 Marzo 2011, 23:17 pm
por Foxy Rider
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines