none
Boton Win32 en Visual C++ AYUDA!!!

    Pregunta

  • hola gente,necesito ayuda,he estado revisando la documentacion en microsoft dev center sobre como crear un boton en un proyecto Win32,y bien lo hice,pero la duda es la siguiente,como capto los mensajes de ese boton,:

    #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; 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(L"BUTTON", L"OK", WS_TABSTOP | WS_VISIBLE | WS_CHILD , 10, 10, 100, 100, hWnd, NULL,(HINSTANCE)10 , NULL); ShowWindow(hWnd, SW_SHOWDEFAULT); Button_Enable(ButtonHwnd, TRUE); 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; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0; }

    gracias.


    lunes, 26 de febrero de 2018 18:56

Todas las respuestas

  • El clic del botón se recibe vía un mensaje WM_COMMAND.

    LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
    	WORD id;
    	switch (message) {
    	case WM_COMMAND:
    		//Podría ser un botón o algo más.
    		id = HIWORD(wParam);
    		if (id == BN_CLICKED)
    		{
    			//Se presionó un botón.  Cuál?  El que dice en el LOWORD.  El lParam contiene el hWnd del botón.
    			//Haga lo que desea hacer.
    			id = LOWORD(wParam);
    			EjecutarAccion(id, (HWND)lParam);
    		}
    		break;
    	case WM_DESTROY:
    		PostQuitMessage(0);
    		break;
    	default:
    		return DefWindowProc(hWnd, message, wParam, lParam);
    	}
    	return 0;
    }
    
    void EjecutarAccion(WORD id, HWND hWnd)
    {
    	::MessageBox(::GetParent(hWnd), TEXT("¡¡Botón!!"), NULL, MB_ICONINFORMATION);
    }


    Jose R. MCP
    Code Samples


    lunes, 26 de febrero de 2018 19:20
    Moderador