Ver Mensaje Individual
  #2  
Antiguo 09-04-2018
Avatar de _Leo
_Leo _Leo is offline
Miembro
 
Registrado: ene 2017
Ubicación: Lanzarote (Islas Canarias)
Posts: 38
Reputación: 0
_Leo Va camino a la fama
Cita:
Empezado por REHome Ver Mensaje
Se me genera códigos pero no se ve el formulario. Lo que demuestra se un engorro programar así hoy en día, pero hay empresas que si programan así y enseñan en algunas universidades les gusten a los alumnos o no.
Suerte tienen a los que les enseñen esto (o se tomen el tiempo de aprenderlo), ya que es precisamente lo que le cuesta más a los programadores actuales, que con tanta abstracción/frameworks al final no saben qué es esto lo que está por debajo, y es bueno conocerlo creo yo.

Tienes más formas de hacerlo en VC++ (ya que las capturas que pones son de ese compilador), pero te pongo la que intentas.. para no complicarlo solo he modificado el archivo "aaaa.cpp" que veo que en tus capturas es el archivo principal del proyecto, es el código que genera el asistente que has usado, y las líneas que yo he añadido o modificado comienzan por /*>*/

Te pongo una captura del resultado para que veas si es lo que necesitas:



Código PHP:
// aaaa.cpp: define el punto de entrada de la aplicación.
//

#include "stdafx.h"
#include "aaaa.h"

#define MAX_LOADSTRING 100

/*>*/ #define IDC_BUTTON_1 201
/*>*/ #define IDC_BUTTON_2 202

// Variables globales:
HINSTANCE hInst;                                // Instancia actual
WCHAR szTitle[MAX_LOADSTRING];                  // Texto de la barra de título
WCHAR szWindowClass[MAX_LOADSTRING];            // nombre de clase de la ventana principal

// Declaraciones de funciones adelantadas incluidas en este módulo de código:
ATOM                MyRegisterClass(HINSTANCE hInstance);
BOOL                InitInstance(HINSTANCEint);
LRESULT CALLBACK    WndProc(HWNDUINTWPARAMLPARAM);
INT_PTR CALLBACK    About(HWNDUINTWPARAMLPARAM);

int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
                     
_In_opt_ HINSTANCE hPrevInstance,
                     
_In_ LPWSTR    lpCmdLine,
                     
_In_ int       nCmdShow)
{
    
UNREFERENCED_PARAMETER(hPrevInstance);
    
UNREFERENCED_PARAMETER(lpCmdLine);

    
// TODO: colocar código aquí.

    // Inicializar cadenas globales
    
LoadStringW(hInstanceIDS_APP_TITLEszTitleMAX_LOADSTRING);
    
LoadStringW(hInstanceIDC_AAAAszWindowClassMAX_LOADSTRING);
    
MyRegisterClass(hInstance);

    
// Realizar la inicialización de la aplicación:
    
if (!InitInstance (hInstancenCmdShow))
    {
        return 
FALSE;
    }

    
HACCEL hAccelTable LoadAccelerators(hInstanceMAKEINTRESOURCE(IDC_AAAA));

    
MSG msg;

    
// Bucle principal de mensajes:
    
while (GetMessage(&msgnullptr00))
    {
        if (!
TranslateAccelerator(msg.hwndhAccelTable, &msg))
        {
            
TranslateMessage(&msg);
            
DispatchMessage(&msg);
        }
    }

    return (int) 
msg.wParam;
}


//
//  FUNCIÓN: MyRegisterClass()
//
//  PROPÓSITO: registrar la clase de ventana.
//
ATOM MyRegisterClass(HINSTANCE hInstance)
{
    
WNDCLASSEXW wcex;

    
wcex.cbSize sizeof(WNDCLASSEX);

    
wcex.style          CS_HREDRAW CS_VREDRAW;
    
wcex.lpfnWndProc    WndProc;
    
wcex.cbClsExtra     0;
    
wcex.cbWndExtra     0;
    
wcex.hInstance      hInstance;
    
wcex.hIcon          LoadIcon(hInstanceMAKEINTRESOURCE(IDI_AAAA));
    
wcex.hCursor        LoadCursor(nullptrIDC_ARROW);
    
wcex.hbrBackground  = (HBRUSH)(COLOR_WINDOW+1);
    
wcex.lpszMenuName   MAKEINTRESOURCEW(IDC_AAAA);
    
wcex.lpszClassName  szWindowClass;
    
wcex.hIconSm        LoadIcon(wcex.hInstanceMAKEINTRESOURCE(IDI_SMALL));

    return 
RegisterClassExW(&wcex);
}

//
//   FUNCIÓN: InitInstance(HINSTANCE, int)
//
//   PROPÓSITO: guardar el identificador de instancia y crear la ventana principal
//
//   COMENTARIOS:
//
//        En esta función, se guarda el identificador de instancia en una variable común y
//        se crea y muestra la ventana principal del programa.
//
BOOL InitInstance(HINSTANCE hInstanceint nCmdShow)
{
   
hInst hInstance// Almacenar identificador de instancia en una variable global

/*>*/ 
HWND hWnd CreateWindowW(szWindowClassszTitleWS_OVERLAPPED WS_SYSMENU WS_MINIMIZEBOX,
/*>*/                             CW_USEDEFAULT0300300nullptrnullptrhInstancenullptr);

   if (!
hWnd)
   {
      return 
FALSE;
   }

   
ShowWindow(hWndnCmdShow);
   
UpdateWindow(hWnd);

   return 
TRUE;
}

//
//  FUNCIÓN: WndProc(HWND, UINT, WPARAM, LPARAM)
//
//  PROPÓSITO:  procesar mensajes de la ventana principal.
//
//  WM_COMMAND  - procesar el menú de aplicaciones
//  WM_PAINT    - Pintar la ventana principal
//  WM_DESTROY  - publicar un mensaje de salida y volver
//
//
LRESULT CALLBACK WndProc(HWND hWndUINT messageWPARAM wParamLPARAM lParam)
{
    switch (
message)
    {
/*>*/ case WM_CREATE:
/*>*/    CreateWindowEx(0L"BUTTON"L"Botón 1"WS_CHILD WS_VISIBLE,
/*>*/        1050130130hWnd, (HMENU)IDC_BUTTON_1hInstnullptr);
/*>*/    CreateWindowEx(0L"BUTTON"L"Botón 2"WS_CHILD WS_VISIBLE,
/*>*/        14550130130hWnd, (HMENU)IDC_BUTTON_2hInstnullptr);
/*>*/    break;
    case 
WM_COMMAND:
        {
            
int wmId LOWORD(wParam);
            
// Analizar las selecciones de menú:
            
switch (wmId)
            {
/*>*/        case IDC_BUTTON_1:
/*>*/            MessageBox(hWndL"Botón 1 pulsado"L"Ejemplo"MB_OK MB_ICONINFORMATION);
/*>*/            break;
/*>*/        case IDC_BUTTON_2:
/*>*/            MessageBox(hWndL"Botón 2 pulsado"L"Ejemplo"MB_OK MB_ICONINFORMATION);
/*>*/            break;
            case 
IDM_ABOUT:
                
DialogBox(hInstMAKEINTRESOURCE(IDD_ABOUTBOX), hWndAbout);
                break;
            case 
IDM_EXIT:
                
DestroyWindow(hWnd);
                break;
            default:
                return 
DefWindowProc(hWndmessagewParamlParam);
            }
        }
        break;
    case 
WM_PAINT:
        {
            
PAINTSTRUCT ps;
            
HDC hdc BeginPaint(hWnd, &ps);
            
// TODO: Agregar cualquier código de dibujo que use hDC aquí...
            
EndPaint(hWnd, &ps);
        }
        break;
    case 
WM_DESTROY:
        
PostQuitMessage(0);
        break;
    default:
        return 
DefWindowProc(hWndmessagewParamlParam);
    }
    return 
0;
}

// Controlador de mensajes del cuadro Acerca de.
INT_PTR CALLBACK About(HWND hDlgUINT messageWPARAM wParamLPARAM lParam)
{
    
UNREFERENCED_PARAMETER(lParam);
    switch (
message)
    {
    case 
WM_INITDIALOG:
        return (
INT_PTR)TRUE;

    case 
WM_COMMAND:
        if (
LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
        {
            
EndDialog(hDlgLOWORD(wParam));
            return (
INT_PTR)TRUE;
        }
        break;
    }
    return (
INT_PTR)FALSE;

Cita:
Empezado por REHome Ver Mensaje
La verdad, no sabía que fuera tan coñazo, pesado, complicado en hacer lo que estoy pidiendo.
No es que sea complicado, es que lo estas preguntando en un foro sobre C++Builder, y precisamente la gracia de este es evitar estas "complicaciones" ;-)

Tienes una versión de C++Builder gratuita llamada "Starter", trae menos cosas que la de pago, pero es totalmente funcional (no es una demo):

https://www.embarcadero.com/es/produ...uilder/starter

Última edición por _Leo fecha: 09-04-2018 a las 19:19:37.
Responder Con Cita