none
Botones en Win32 con c++,ayuda

    Pregunta

  • #include "stdafx.h"
    #include "Button.h"
    #include "Windowsx.h"
    
    LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
    
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdLine) {
    	MSG message;
    	HWND hWnd;
    	HWND ButtonhWnd;
    	HWND ButtonhWnd2;
    	WNDCLASSEX wcex;
    	wcex.cbClsExtra = 0;
    	wcex.cbSize = sizeof(WNDCLASSEX);
    	wcex.cbWndExtra = 0;
    	wcex.hbrBackground = (HBRUSH)COLOR_BACKGROUND;
    	wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
    	wcex.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    	wcex.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
    	wcex.hInstance = hInstance;
    	wcex.lpfnWndProc = WndProc;
    	wcex.lpszClassName = TEXT("Window Class");
    	wcex.lpszMenuName = NULL;
    	wcex.style = CS_DBLCLKS;
    	
    	if (!RegisterClassEx(&wcex)) {
    		return 0;
    	}
    
    	hWnd = CreateWindowEx(0, wcex.lpszClassName, TEXT("Window 1"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 900, 900, NULL, NULL, hInstance, NULL);
    	ButtonhWnd = CreateWindow(TEXT("BUTTON"), TEXT("Button"), BS_FLAT | WS_VISIBLE | WS_CHILD, 10, 10, 50, 50, hWnd, NULL, (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE), NULL);
    	ButtonhWnd2 = CreateWindow(TEXT("BUTTON"), TEXT("Button 2"), BS_FLAT | WS_VISIBLE | WS_CHILD, 70, 10, 100, 100, hWnd, NULL, (HINSTANCE)GetWindowLong(hWnd, GWLP_HINSTANCE), NULL);
    	ShowWindow(hWnd, SW_SHOWDEFAULT);
    
    	while (GetMessage(&message, 0, 0, 0) > 0) {
    		TranslateMessage(&message);
    		DispatchMessage(&message);
    	}
    	return message.wParam;
    }
    
    LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
    	switch (message) {
    	case WM_DESTROY:
    		PostQuitMessage(0);
    		break;
    	case WM_COMMAND:
    		
    		break;
    	default:
    		return DefWindowProc(hWnd, message, wParam, lParam);
    	}
    	return 0;
    }
    
    lo que quiero es que al presionar un boton cualquiera de los dos ,haga algo,por ejemplo no hay manera de asignarle un identificador a un boton para despues ponerlo en el WndProc,y que lo procese.
    lunes, 26 de febrero de 2018 20:25

Todas las respuestas

  • ¿Por qué repitió la pregunta?  Yo le respondí en la original.

    Jose R. MCP
    Code Samples

    lunes, 26 de febrero de 2018 22:35
    Moderador
  • Disculpe,la pregunta que me respondió anteriormente ,entendí su respuesta,pero si fueran para múltiplesbotones,ambos envían el mismo mensaje y ocurre lo mismo.

    esa es mi duda ,gracias.

    martes, 27 de febrero de 2018 16:55
  • Ok, cada botón tiene un ID.  Ese ID usted puede especificarlo en la llamada a CreateWindow().  El parámetro se llama hMenu.  El primer botón podría ser 101 y el segundo 102, por ejemplo.  Actualmente usted pasa NULL.  Pase (HMENU)101 y (HMENU)102.

    Luego cuando reciba WM_COMMAND, el LOWORD(wParam) será igual a 101 o 102, dependiendo del botón que se presiona.


    Jose R. MCP
    Code Samples

    martes, 27 de febrero de 2018 19:42
    Moderador