none
Crear controles en tiempo de ejecución RRS feed

  • Pregunta

  • Estimados, buen día.

    Pregunta: ¿Como puedo crear controles de windows (Textbox, Label, Combobox, etc.) en tiempo de ejecución en Visual C++? O sea, no necesito crear los controles con el archivo de recursos ni con el editor de los Dialog ni por MFC.

    Muchas gracias!

    Slds,

    Nof


    - Nof

    lunes, 23 de abril de 2012 11:11

Respuestas

  • Normalmente los creas en el WM_CREATE de la ventana, de la misma manera que creas la ventana, salvo: el classname debe ser el del control a crear, el style debe incluir EL WS_CHILD|WS_VISIBLE (no puede estar encendido en WS_POPUP), en el HMENU colocas el numero mágico con el que vas a identificar el control.

    ---

    Ok, usas CreateWindowEx() (CreateWindows() es una macro que ignora el primer argumento con los estilos extendidos de la ventana).

    Classname es L"BUTTON", L"EDIT", L"STATIC", L"etc.".

    • Editado _Luis_ lunes, 23 de abril de 2012 16:08
    • Marcado como respuesta Nicolás Ben lunes, 23 de abril de 2012 18:27
    lunes, 23 de abril de 2012 16:04
  • Podría estudiar http://www.winprog.org/tutorial/.  Es un buen tutorial excepto por el hecho de que mezcla incorrectamente los nombres de función con tipos de datos incorrectos.  Por ejemplo, si se usa CreateWindowEx(), debe usarse TEXT("BUTTON"); si se usa CreateWindowExW() entonces debe usarse L"BUTTON", etc.

    Jose R. MCP

    • Marcado como respuesta Nicolás Ben lunes, 23 de abril de 2012 18:27
    lunes, 23 de abril de 2012 18:24
    Moderador

Todas las respuestas

  • Normalmente los creas en el WM_CREATE de la ventana, de la misma manera que creas la ventana, salvo: el classname debe ser el del control a crear, el style debe incluir EL WS_CHILD|WS_VISIBLE (no puede estar encendido en WS_POPUP), en el HMENU colocas el numero mágico con el que vas a identificar el control.

    ---

    Ok, usas CreateWindowEx() (CreateWindows() es una macro que ignora el primer argumento con los estilos extendidos de la ventana).

    Classname es L"BUTTON", L"EDIT", L"STATIC", L"etc.".

    • Editado _Luis_ lunes, 23 de abril de 2012 16:08
    • Marcado como respuesta Nicolás Ben lunes, 23 de abril de 2012 18:27
    lunes, 23 de abril de 2012 16:04
  • Ok buenisimo, podrías ponerme algun ejemplo para entenderlo mejor? En todo caso, me podrías recomendar un link sobre el tema para interiorizarme?

    Muchas gracias!

    Nof


    - Nof

    lunes, 23 de abril de 2012 17:00
  • Podría estudiar http://www.winprog.org/tutorial/.  Es un buen tutorial excepto por el hecho de que mezcla incorrectamente los nombres de función con tipos de datos incorrectos.  Por ejemplo, si se usa CreateWindowEx(), debe usarse TEXT("BUTTON"); si se usa CreateWindowExW() entonces debe usarse L"BUTTON", etc.

    Jose R. MCP

    • Marcado como respuesta Nicolás Ben lunes, 23 de abril de 2012 18:27
    lunes, 23 de abril de 2012 18:24
    Moderador
  • Muchas gracias gente, voy a leer un poco y cualquier cosa les pregunto.

    Slds!

    Nof


    - Nof

    lunes, 23 de abril de 2012 18:27