[C con Clase] [WIN32] Pregunta sobre BS_DEFPUSHBUTTON

Bosco bosko_jbgg en hotmail.com
Vie Ago 5 17:46:34 CEST 2011


Hola,

estoy creando un programa con una ventana. La ventana principal tiene varios edit y un botón. En este botón le tengo el estilo BS_DEFPUSHBUTTON. Pero no funciona. He creado un código aparte con un edit y un botón para hacer pruebas para que funcione... El código que uso es el siguiente:
Enseño la parte de WM_CREATE y WM_COMMAND:

    case WM_CREATE:{
      hInstance = ((LPCREATESTRUCT)lParam)->hInstance;
      HWND hctrl;
      hctrl = CreateWindowEx(0, "EDIT", "",
        ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP,
        20, 20,
        50, 20,
        hwnd, (HMENU)ID_EDIT, hInstance, NULL);
      CreateWindowEx(0, "BUTTON", "Botón",
        BS_DEFPUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP,
        100, 100,
        95, 24,
        hwnd, (HMENU)ID_BOTON, hInstance, NULL);
      SetFocus(hctrl);
      break;
    }
    case WM_COMMAND:
      if(LOWORD(wParam) == ID_BOTON){
        MessageBox(hwnd, "Texto", "Botón", MB_OK);
      }

También decir que tengo el bucle de mensajes, como se recomienda:

        if(!IsDialogMessage(hwnd, &messages)){
          TranslateMessage(&messages);
          DispatchMessage(&messages);

También en la documentación sobre estilo de button:http://msdn.microsoft.com/en-us/library/bb775951%28v=vs.85%29.aspx, pone que sólo vale para cuadros de diálogo ¿es esto cierto y por eso no me funciona?
En cualquier caso habría alguna solución. Yo he pensado modificar los procedimientos de ventana de los edit para que al pulsar [enter] se active el botón. ¿Creeis que es la mejor solución o hay alguna más adecuada (y no tan artificiosa)?

Muchas gracias por sus respuestas.


Más información sobre la lista de distribución Cconclase